Docling OCRエンジン
単一「最良」OCR機関は存在しない。台・言語・設定意欲で適材選択。本頁は全機関比較、機関別導入 + CLI + Python、移植iso:言語系、GPU backend、複写調理法を収録。機関事実は公式OCR概念とnative機関解説で検証済み。
1. どのエンジンを選ぶか
デジタル (テキスト) PDFにOCRは不要なことが多い。まず--no-ocrで最速を試し、スキャン頁のみエンジン追加。
| 状況 | 選択 | 理由 |
|---|---|---|
| 既定・迷い | RapidOCR | pipのみ導入、CPU親和、多言語、将来GPU可。最も無難な初手。 |
| 100超言語や自作traineddata | Tesseract (CLIかtesserocr) | 実績あるエンジン。文字モデル (script/Latin)、縦書き日本語 (jpn_vert)、自作学習済み可。 |
| Macでゼロ設定 | OcrMac | デバイス内Apple Vision利用。本体もモデル取得も不要。 |
| 手軽なCJK + ラテン | EasyOCR | pipのみでGen2自動取得。複数言語同時。 |
| NVIDIA集積で最大処理量 | Nemotron OCR | GPU加速。英語+多言語モデル (Linux x86_64・CUDA 13.x)。 |
| OCRが別役務 | KServe v2 | Doclingが自前遠隔口を呼ぶ。言語符号は自デプロイのもの。 |
| 特殊モデル要 | プラグイン (OnnxTR・SuryaOCR) | --allow-external-plugins付き plugin 導入。 |
2. OCRのパイプライン位置 (様式と旗)
OCRは既定有効 (--ocr)。3旗が適用範囲と実行機関を定める。Python等価: PdfPipelineOptions().do_ocr = TrueにRapidOcrOptions / EasyOcrOptions / TesseractOcrOptions / TesseractCliOcrOptions / OcrMacOptions / NemotronOcrOptionsのいずれかをmode=OcrMode.FULL_PAGE付きで。OCR視野は--debug-visualize-ocrで可視化。
| 旗 | 値・既定 | 意味 |
|---|---|---|
| --ocr / --no-ocr | 既定有効 | 主開閉。--no-ocrはOCR完全省略。デジタルPDF最速。 |
| --ocr-mode | default・full_page・layout_regions・pdf_aware_layout_regions | 機関投入域。full_pageは頁全面端々 (低速・スキャン最適)。--force-ocrは廃止。--ocr-mode full_page利用。 |
| --ocr-engine | auto (既定)・rapidocr・easyocr・tesseract・tesserocr・ocrmac・nemotron-ocr・kserve_v2_ocr | 実行機関。autoは導入済みから台依存選択。 |
| --ocr-lang | comma区切り (例ch・deu・iso:de) | 言語。 native か移植 ( 11節参照)。空 (--ocr-lang "") は機関任せ。 |
| --psm | 0〜13 | OCR機関の頁 segmentation 様式。 |
3. エンジン比較表
| エンジン | 最適な用途 | プラットフォーム | 備考 | ドキュメント |
|---|---|---|---|---|
| auto (default) | 利用可能なエンジンをDoclingに選ばせる。 | All | --ocr-engineのデフォルト値。インストール状況とプラットフォームからDoclingが選択。Pythonではocr_optionsを未設定のままにする。 | ドキュメント |
| RapidOCR | 軽量・CPUフレンドリーな多言語OCR。無難な既定の選択。 | Cross-platform | 既定バックエンドはONNX Runtime (openvino/paddle/torchも可)。pip install "docling[rapidocr]"。1実行1言語。PP-OCR v4/v5/v6トークン、latin/cyrillic/arabic/devanagari系を含む。Python: RapidOcrOptions。 | ドキュメント |
| Tesseract (CLI) | 100超言語の実績あるOCR。自作traineddataも可。 | Cross-platform (system binary) | システムTesseract本体と言語データが必要 (TESSDATA_PREFIXは末尾/付き)。CLI利用ならpipエクストラ不要。Python: TesseractCliOcrOptions。lang空でOSDスクリプト検出 (osdファイルが必要)。 | ドキュメント |
| Tesseract (tesserocr) | 同精度のTesseractをPythonバインディングで高速に。 | Cross-platform (compiled) | システム本体の後にpip install "docling[tesserocr]"。WindowsではC++ビルドツールが必要な場合あり。Python: TesseractOcrOptions。 | ドキュメント |
| EasyOCR | 手軽な多言語セットアップ。CJK・ラテン系文字。 | Cross-platform | pip install "docling[easyocr]"。独自のGen2モデルを自動取得。複数言語を同時指定できるが、リストは短く (en単独がen+deより高精度)。Python: EasyOcrOptions。 | ドキュメント |
| OcrMac | Macでのゼロセットアップ・ネイティブOCR (Apple Vision)。 | macOS only | pip install "docling[ocrmac]"。モデル同梱なし。対応言語はmacOSバージョン依存。Python: OcrMacOptions。 | ドキュメント |
| Nemotron OCR | NVIDIAサーバーでの大規模GPU高速OCR。 | Linux x86_64 + CUDA 13.x | cu130インデックス付きでpip install "docling[feat-ocr-nemotron]" (Python 3.12。v2.0.2は3.11/3.13追加)。englishまたはmultilingual (+約170のラテン系ベストエフォート)。Python: NemotronOcrOptions。 | ドキュメント |
| KServe v2 OCR | リモートOCRマイクロサービスを呼び出す。 | Service | KServe v2エンドポイントに接続。langは検証・マッピングなしで先頭エントリのみ逐語送信。自前のデプロイのコードを使う。 | ドキュメント |
検索に一致するエンジンはありません。
4. 各機関を導入する
Tesseract本体はOS別。下記OS別完全手順は導入概要とOS指南参照。オフライン・CI機用にOCRモデル事前取得: docling-tools models download --allか個別--easyocr-lang de・--rapidocr-backend-lang onnxruntime:el。CLI解説参照。
brew install tesseract leptonica pkg-configsudo apt-get install -y tesseract-ocr tesseract-ocr-eng libtesseract-dev libleptonica-dev pkg-configsudo dnf install -y tesseract tesseract-devel tesseract-langpack-eng tesseract-osd leptonica-devel| 機関 | 導入 | 本体要否 |
|---|---|---|
| RapidOCR | pip install "docling[rapidocr]" (またはpip install rapidocr onnxruntime) | 不要。pipのみ。 |
| EasyOCR | pip install "docling[easyocr]" (またはpip install easyocr) | 不要。初回に自取得。 |
| Tesseract CLI | 本体のみ (下)。pipエクストラ不要 | 要。本体 + TESSDATA_PREFIX (末尾/)。 |
| Tesseract (tesserocr) | 本体先に、後pip install "docling[tesserocr]" | 要。Windowsは結合部に compiler 追加。 |
| OcrMac | pip install "docling[ocrmac]" | macOSのみ。模型なし。VisionはOS内。 |
| Nemotron | pip install "docling[feat-ocr-nemotron]" --extra-index-url https://download.pytorch.org/whl/cu130 --index-strategy unsafe-best-match | Linux x86_64 + Python 3.12 + CUDA 13.x。 |
| OnnxTR (plugin) | pip install "docling-ocr-onnxtr[cpu]" + --allow-external-plugins | 不要。plugin 機構。 |
Windows: UB Mannheim版導入しPATH追加、TESSDATA_PREFIXをtessdata\へ。tesserocr失敗時はpip uninstall tesserocr後にpip install --no-binary :all: tesserocr。
5. RapidOCR詳解 ( backend・PP-OCR版・言語)
RapidOCRはPP-OCR模型の包み。backend (runtime) とPP-OCR版 (模型世代) が独立に変わる。
言語札 (native 符号): v4: arabic, ch, chinese_cht, cyrillic, devanagari, en, japan, ka, korean, latin, ta, te。v5: arabic, ch, cyrillic, devanagari, el, en, eslav, korean, latin, ta, te, th。v6: ch, chinese_cht, en, japan + 欧州約45符号 (de, fr, es, it, pt, nl, pl …)。別名zh→ch, zh_cn→ch, zh_tw→chinese_cht, ja/jp→japan, ko→korean (注意: v6の朝鮮語は別名のみ)。de/germanとfr/frenchは二重存在。
文字系 (1札で多言語): cyrillic (34: 露・宇・哈…+英)、devanagari (14: 印地・マーカー・梵…+英)、arabic (9: 阿・波・ Urdu …+英)、eslav (東 Slav: 露・白・宇+英)。
1実行1言語: RapidOCRはlang先頭のみ用い残りに警告。Python: RapidOcrOptions(lang=["eslav"], backend="onnxruntime")。独自 checkpoint 可 (独自模型例参照)。
docling convert scan.pdf --ocr-engine rapidocr --ocr-mode full_page| Backend | PP-OCR版 | 備考 |
|---|---|---|
onnxruntime (既定) | v4, v5, v6 | 最大適用。PP-OCRv5のeslav/cyrillic唯一。 |
openvino | v4, v5, v6 | Intel器材経路。 |
paddle | v4, v5, v6 | PaddlePaddle runtime。 |
torch | v4, v5 (中国語のみ), v6 | PP-OCRv5 + torchは中国語のみ。 |
6. EasyOCR詳解 (言語表は短く)
EasyOCR (Gen2 checkpoint、craft_mlt_25k.pth検出) は複数言語同時可。ただし解決は要求全言語を覆う単一 checkpoint を選ぶ。不要言語追加は黙って降格: ["en"]は精密english_g2.pth、["en","de"]は汎用latin_g2.pthに後退。
docling convert scan.pdf --ocr-engine easyocr --ocr-lang en| Checkpoint | 適用 |
|---|---|
english_g2.pth | en |
latin_g2.pth | 欧州・ラテン系 (de, fr, es, it, pt, nl, pl …) |
zh_sim_g2.pth | ch_sim + en |
japanese_g2.pth / korean_g2.pth | ja / ko + en |
telugu.pth / kannada.pth | te / kn + en |
cyrillic_g2.pth | ru, be, bg, uk, mn … + en |
7. Tesseract詳解 (CLIとtesserocr・traineddata)
docling convert scan.pdf --ocr-engine tesseract --ocr-lang deu+engTESSDATA_PREFIX=/opt/homebrew/share/tessdata/ docling convert scan.pdf --ocr-engine tesserocr- 二味一機関:
tesseractは本体CLI呼出し (pipエクストラ不要)。tesserocrは庫内結合 (高速、結合部要)。同精度・同一traineddata。 - 言語 = traineddata語幹:
deu, chi_sim, chi_tra, srp_latn, aze_cyrl, deu_latf, frk, jpn_vert, script/Latin, script/Cyrillicに自作学習済み追加可。導入済み.traineddataが利用可能域。 - 構築時検査: 欠落は変換途中ではなく即時失敗し、導入済み一覧を報文に含む。
- 空
lang= 文字検出:--ocr-lang ""は頁毎の向き・文字検出 (osdtraineddata要)。 - 自動言語検出は公式例参照。
8. OcrMac詳解 (macOSのみ)
OcrMacはApple Visionの薄包み。本体も取得模型もなし。認識器はOS内蔵のため、対応集合はocrmac版でなく自macOS版の属性。
docling convert scan.pdf --ocr-engine ocrmac --ocr-mode full_page- 導入:
pip install "docling[ocrmac]"。Python:OcrMacOptions。 - BCP-47地域付き照合:
iso:deはde-DEに、iso:ptはpt-BRに、iso:zh-CNはzh-Hansに当たる。 vi-VT等変則地域符号は裸 (native) 渡し。空langはVision自動。
9. Nemotron OCR詳解 (Linux + CUDA)
Linux x86_64 + CUDA 13.xとcu130版torch索引要 (導入行は4節)。1実行1言語 (先頭勝ち)。Python: NemotronOcrOptions。
| Nemotron版 | Python | 言語 |
|---|---|---|
| v2.0.0 | 3.12のみ | english (別名en)・multilingual (別名multi: 英・中繁簡・日・韓・露) + 約170ラテン系ベストエフォート (警告・NVIDIA未検証) |
| v2.0.2 | 3.11・3.12・3.13 | 上同様 |
10. KServe v2とplugin機関 (OnnxTR・SuryaOCR)
- KServe v2: OCRが遠隔 micro 役務の場合。
langは無検証・無写像。先頭のみ逐語送信、残りは警告破棄。自デプロイ符号利用。iso:は相手が話す場合のみ (皆無)。 - OnnxTR plugin:
pip install "docling-ocr-onnxtr[cpu]"し--allow-external-plugins有効化、plugin名で選択。docling-OCR-OnnxTR庫参照。 - 独自模型SuryaOCRは公式例参照。第三者選択肢は
--show-external-pluginsで列挙。
11. 言語: native符号と移植iso:札
各機関は一字段OcrOptions.langで言語受領。各項目は正確に二様式:
native符号 (接頭辞なし)。機関固有表記を逐語通過: ch (PP-OCR中国語)、deu (Tesseract独語)、ch_sim (EasyOCR)、en-US (Vision)。
移植札。BCP-47をiso:付きで機関写像: iso:de・iso:en-US・iso:zh-Hant。非既定文字は必ず明示: セルビア・ラテンはiso:sr-Latn必須 (既定セルビアはキリル)。
各機関は対応を自己申告: supported_ocr_languages()はnative + BCP-47符号をlang貼付可能な表記で返す。Doclingは黙って代替しない。非対応言語は例外となり機関の可能域を列挙。RapidOCRとNemotronは同時1言語 (先頭札勝ち・残り警告)。
| 札 | 意味 | 代わりの言い方 |
|---|---|---|
mul | 複数言語 | 機関固有の多言語符号 (例Nemotron multilingual) |
und | 未定 | 空表か所望文字の言語 |
zxx | 言語内容なし | OCR停止: --no-ocr / do_ocr=False |
from docling.datamodel.pipeline_options import TesseractCliOcrOptions
TesseractCliOcrOptions(lang=["deu", "eng"]) # native: tesseract -l deu+eng
TesseractCliOcrOptions(lang=["iso:de", "iso:en"]) # 移植: 同義
機関別の空言語表の意味。影符号 (裸 = 模型、iso: = 言語):
| 機関 | lang=[] (--ocr-lang "") |
|---|---|
| Tesseract (双方) | 頁毎の向き・文字検出 (osd文書要) |
| EasyOCR | 英語 (en) |
| RapidOCR | 簡体中国語既定 (ch) |
| Nemotron | 英語模型 |
| OcrMac | Vision自動 |
| KServe | en送信 |
| 符号 | 裸到達 | iso:意味 |
|---|---|---|
ch | PP-OCR簡体中国語 | ch-Latn = チャモロ語 |
ka | PP-OCRカンナダ語 | ka-Geor = グルジア語 (PP-OCR不可。誤り) |
ang | EasyOCRアンギカ語 | 古英語 |
frk | Tesseract独 broken 体 | フランク語 |
tab | EasyOCRタバサラン語 (キリル) | タバサラン語 (ラテン) |
mah | EasyOCRマガヒー語 | マーシャル語 |
12. OCRのGPU高速化
- CUDA上RapidOCR: GPU版ONNX Runtime導入 (
pip install "docling[onnxruntime]")。CUDAExecutionProviderがort.get_available_providers()にあること。onnxruntimebackend + CUDA器利用。torchbackendは代替 (注意: PP-OCRv5 + torchは中国語のみ)。 - Nemotronは設計上GPU専用 (CUDA 13.x・Linux x86_64)。
- EasyOCR / Tesseract / OcrMacは実質CPU bound。高速CPUに置きGPU予算は配置・表段階へ。調整 (batch・VLM役務) は公式GPU指南へ。
import onnxruntime as ort
assert "CUDAExecutionProvider" in ort.get_available_providers()
from docling.datamodel.accelerator_options import AcceleratorDevice, AcceleratorOptions
from docling.datamodel.pipeline_options import PdfPipelineOptions, RapidOcrOptions
pipeline_options = PdfPipelineOptions(
accelerator_options=AcceleratorOptions(device=AcceleratorDevice.CUDA),
ocr_options=RapidOcrOptions(backend="onnxruntime", lang=["eslav"]),
)
13. 複写調理法 (CLI + Python)
スキャンPDF全文OCR。機関明示。デジタルPDFのOCR省略 (最速)。独英 portable 札:
作例詳解: 全文OCR強制・Tesseract言語検出・RapidOCR独自模型・地元例集・構成生成器。
docling convert scan.pdf --ocr-mode full_pagedocling convert scan.pdf --ocr-engine rapidocrdocling convert report.pdf --no-ocr --to mddocling convert scan.pdf --ocr-engine rapidocr --ocr-lang iso:de,iso:enfrom docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import (
OcrMode, PdfPipelineOptions, RapidOcrOptions,
)
from docling.document_converter import DocumentConverter, PdfFormatOption
pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = True
pipeline_options.ocr_options = RapidOcrOptions(mode=OcrMode.FULL_PAGE)
# 必要に応じEasyOcrOptions / TesseractOcrOptions / TesseractCliOcrOptions
# / OcrMacOptions (macOS) / NemotronOcrOptions (Linux CUDA)に入替え。
converter = DocumentConverter(
format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
doc = converter.convert("scan.pdf").document
print(doc.export_to_markdown())
14. OCR対処
- スキャン文未認識 — OCR停止か既定様式が欠落層を見逃し。
--ocr-mode full_page強制、他機関試験。スキャンPDFのOCR参照。 - OCRエクストラ導入不可 — RapidOCR/EasyOCRはpipのみ。Tesseractは本体 +
TESSDATA_PREFIX先行。OCR包導入誤り参照。 - 変換低速 — OCRと富化模型が最高価CPU段階。デジタルPDFは
--no-ocr、--table-mode fastかGPU。変換低速参照。 - GPU無視 —
torch.cuda.is_available()/CUDAExecutionProvider確認、--device cuda利用 (Apple Siliconはmps)。GPU未使用参照。 - 誤言語出力 — 影確認 (
kaとiso:ka-Geor)、EasyOCR表短縮、supported_ocr_languages()検証。
15. OCR FAQ
初心者に最適機関?
pip install "docling[rapidocr]"と--ocr-engine rapidocrで開始。OCR自体要否?
--no-ocrが高速・高精度なことも。スキャン無出力は--ocr-mode full_pageの合図。native符号とiso:札どちら?
ch・deu) が最短。機関切替耐性とiso:sr-Latn等文字指定には portable (iso:de・iso:zh-Hant) 必須。裸ka (カンナダ模型) とiso:ka-Geor (グルジア語) の影混同に注意。EasyOCRは言語追加でなぜ劣化?
["en","de"]は英語専用から汎用ラテンに後退。文書含有のみ要求。RapidOCR複数言語同時可?
latin・cyrillic・arabic・devanagari・eslav) か言語別実行で。Tesseractが自言語を見出さない?
tesseract-ocr-<言語>)、tesseract --list-langs確認、末尾/付きTESSDATA_PREFIX出力。構築子報文が導入済みを列挙。GPU利用機関は?
独自OCR模型の利用法?
Docling v2.129.0で検証 · 最終確認 2026-09-22 · 公式ソース