Docling の実践例

CLIコマンド、Pythonの等価コード、期待される出力、よくある間違いをまとめた短いタスク指向のレシピです。各レシピは公式ソースにリンクしています。

PDFからMarkdown

PDF と変換

デジタル PDF から読みやすい Markdown を。

使う場面: デジタルまたは混在PDFから、きれいで読みやすいMarkdownが必要なとき。

CLI

docling convert report.pdf --to md

Python

from docling.document_converter import DocumentConverter

converter = DocumentConverter()
result = converter.convert("report.pdf")
print(result.document.export_to_markdown())

使用するフラグ

  • --to md Markdown 出力を選択します。

期待される出力

# Annual Report

## Revenue

| Year | Revenue |
|---|---:|
| 2025 | $12M |
| 2026 | $15M |

バリエーション

速度のため OCR を省略

docling convert report.pdf --to md --no-ocr

よくある間違い: スキャンPDFを処理して空のテキストになる。テキスト層がなければOCRを使ってください(--ocr-mode full_page)。

公式ドキュメント · PDF から JSON

PDFからJSON

PDF と変換

独自パイプライン向けの完全な DoclingDocument 構造。

使う場面: バウンディングボックスやレイアウトのメタデータを含む、ロスレスのDoclingDocument構造が必要なとき。

CLI

docling convert report.pdf --to json

Python

import json
from docling.document_converter import DocumentConverter

converter = DocumentConverter()
result = converter.convert("report.pdf")
print(json.dumps(result.document.export_to_dict(), indent=2))

使用するフラグ

  • --to json ロスレス JSON 表現を出力します。

期待される出力

{
  "schema_name": "DoclingDocument",
  "texts": [ ... ],
  "tables": [ ... ]
}

バリエーション

速度のため OCR を省略

docling convert report.pdf --to json --no-ocr

よくある間違い: CLIのJSONと export_to_dict() がバイト単位で同一だと期待すること。同じ文書の等価な表現です。

公式ドキュメント · PDF から Markdown

URLからMarkdown

PDF と変換

HTTP URL から直接ドキュメントを変換。

使う場面: 文書がオンラインにあり、先にダウンロードしたくないとき。

CLI

docling convert https://arxiv.org/pdf/2408.09869 --to md

Python

from docling.document_converter import DocumentConverter

converter = DocumentConverter()
result = converter.convert("https://arxiv.org/pdf/2408.09869")
print(result.document.export_to_markdown())

期待される出力

## Docling Technical Report

...

バリエーション

代わりに JSON を出力

docling convert https://arxiv.org/pdf/2408.09869 --to json

よくある間違い: どのURLでも動くと想定すること。HTTPで到達可能な対応形式である必要があります。

公式ドキュメント · 対応フォーマット

スキャンPDFのOCR

OCR とスキャン

画像のみのページからテキストを復元。

使う場面: ページが画像で、選択可能なテキストがないとき。

CLI

docling convert scan.pdf --ocr-mode full_page

Python

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions

pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = True

converter = DocumentConverter(
    format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("scan.pdf")
print(result.document.export_to_markdown())

使用するフラグ

  • --ocr-mode full_page テキストがあるページも含め全ページを OCR します。

期待される出力

Text reconstructed from the scanned page image.

バリエーション

別のエンジンを選ぶ

docling convert scan.pdf --ocr-mode full_page --ocr-engine rapidocr

よくある間違い: デジタルPDFでOCRを有効のままにすると時間を浪費します。テキスト層がない場合のみ有効にしてください。

公式ドキュメント · OCR エンジンを比較

デジタルPDFのOCRを無効化

OCR とスキャン

デジタル PDF を大幅に高速変換。

使う場面: PDFにテキスト層が既にあり、最速の変換が欲しいとき。

CLI

docling convert report.pdf --no-ocr --to md

Python

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions

pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = False

converter = DocumentConverter(
    format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("report.pdf")
print(result.document.export_to_markdown())

使用するフラグ

  • --no-ocr OCR ステージを完全にスキップします。

期待される出力

Markdown produced without running OCR.

バリエーション

高速な表も併用

docling convert report.pdf --no-ocr --table-mode fast

よくある間違い: スキャンPDFでOCRを無効にすると、テキストがほとんど得られません。

公式ドキュメント · すべてのコマンド

表を抽出

表を Markdown または HTML の表に変換。

使う場面: 文書内の表をMarkdownまたはHTMLのマトリクスとして得たいとき。

CLI

docling convert report.pdf --to md

Python

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions

pipeline_options = PdfPipelineOptions()
pipeline_options.do_table_structure = True

converter = DocumentConverter(
    format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("report.pdf")
print(result.document.export_to_markdown())

使用するフラグ

  • --table-mode accurate 複雑な結合セルの表に TableFormer を使用します。

期待される出力

| Region | Q1 | Q2 |
|---|---:|---:|
| EMEA | 4.2 | 4.8 |

バリエーション

高速でおおよその表

docling convert report.pdf --to md --table-mode fast

よくある間違い: すべての表が完璧だと想定すること。結合セルや罫線なしの表は確認が必要な場合があります。--table-mode accurate を試してください。

公式ドキュメント · コマンドを作成

数式とコードを抽出

数式とコード

数式とコードブロックを LaTeX として取得。

使う場面: 数式やコードブロックを含む科学・技術文書のとき。

CLI

docling convert paper.pdf --enrich-code --enrich-formula

Python

from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions

pipeline_options = PdfPipelineOptions()
pipeline_options.do_code_enrichment = True
pipeline_options.do_formula_enrichment = True

converter = DocumentConverter(
    format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)}
)
result = converter.convert("paper.pdf")
print(result.document.export_to_markdown())

使用するフラグ

  • --enrich-code コードブロックを検出します。
  • --enrich-formula LaTeX 数式を抽出します。

期待される出力

$$ E = mc^2 $$

バリエーション

グラフ抽出を追加

docling convert paper.pdf --enrich-code --enrich-formula --enrich-chart-extraction

よくある間違い: 数式やコードのない文書でエンリッチを有効にすると、利点なく処理時間が増えます。

公式ドキュメント · コマンドを作成

HybridChunkerによるRAGチャンキング

RAG

ベクトルストア向けの構造認識チャンク。

使う場面: ベクトルストア向けに見出し、表、ページのメタデータを保つチャンクが欲しいとき。

CLI

docling convert report.pdf --to chunks --chunks-type hybrid

Python

from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker

converter = DocumentConverter()
result = converter.convert("report.pdf")

chunker = HybridChunker()
for chunk in chunker.chunk(result.document):
    print(chunk.text)

使用するフラグ

  • --to chunks チャンク出力を生成します。
  • --chunks-type hybrid HybridChunker を使用します。

期待される出力

Chunks split on document structure rather than raw character counts.

バリエーション

生のエクスポートを確認

docling convert report.pdf --to json

よくある間違い: 構造を考慮しない素朴な文字分割を使い、表や見出しを壊すこと。

公式ドキュメント · RAG ガイド

LangChain連携

統合

解析済み文書を LangChain パイプラインに読み込み。

使う場面: 解析済み文書をLangChainパイプラインに読み込むとき。

CLI

pip install langchain-docling

Python

from langchain_docling import DoclingLoader

loader = DoclingLoader(file_path="report.pdf")
docs = loader.load()
print(docs[0].page_content[:200])

期待される出力

LangChain Document objects with parsed page content and metadata.

バリエーション

その後ファイルを変換

docling convert report.pdf --to md

よくある間違い: doclingとは別に連携パッケージのインストールを忘れること。

公式ドキュメント · LlamaIndex レシピ

LlamaIndex連携

統合

解析済みファイルから LlamaIndex ノードを作成。

使う場面: 解析済みファイルからLlamaIndexのドキュメントノードを作るとき。

CLI

pip install llama-index-readers-docling

Python

from llama_index.readers.docling import DoclingReader

reader = DoclingReader()
documents = reader.load_data(file_path="report.pdf")
print(documents[0].text[:200])

期待される出力

LlamaIndex documents ready for indexing.

バリエーション

その後ファイルを変換

docling convert report.pdf --to md

よくある間違い: doclingとリーダーパッケージのバージョンを混在させること。両方を最新に保ってください。

公式ドキュメント · LangChain レシピ

1
???? 1

これらの例の使い方

よくある Docling の作業向けの、コピーして使える 10 のレシピ。それぞれに CLI コマンド、Python 相当、使用するフラグ、期待される出力、避けたいミスが含まれます。

各レシピを上から順に進めてください。

  1. タスクを見つける カテゴリで絞り込むか、フラグやキーワードで検索します。
  2. コマンドをコピー CLI ブロックのコピーボタン、または Python 相当をコピーします。
  3. 実行する コマンドは既定で変換後のファイルを元ファイルの隣に書き出します。
  4. 出力を確認 レシピに示された期待される出力と比較します。
  5. 応用する レシピのフラグを追加するか、コンフィグジェネレーターで独自のコマンドを作成します。
2
???? 2

始める前に

各例は Docling がインストール済みで、サンプル文書があることを前提としています。

  • Python 3.10 以降が必要です。
  • OCR の例には OCR エンジンが必要です。RapidOCR は CPU に適した既定です。
  • 統合の例では別のパッケージをインストールします。
pip install docling
docling --help
3
???? 3

どの例を使うべきですか?

タスクに最も近い行を選んでください。

やりたいこと…主なオプション
読みやすいテキストを得るPDF から Markdown--to md
構造化データを得るPDF から JSON--to json
URL を変換するURL から MarkdownURL 引数
スキャンや写真を読むスキャン PDF と OCR--ocr-mode full_page
デジタル PDF を高速化OCR を無効化--no-ocr
表を抽出する表を抽出--table-mode
数式とコードを得る数式とコードを抽出--enrich-*
RAG 用にチャンク化RAG チャンキング--to chunks
LangChain を使うLangChain 統合統合パッケージ
LlamaIndex を使うLlamaIndex 統合統合パッケージ
4
???? 4

レシピの応用方法

少しの変更で任意のレシピを応用できます。

  • ファイル名や URL を自分のソースに変更します。
  • デジタル PDF には --no-ocr、スキャンには --ocr-mode full_page を追加します。
  • 出力は --to md--to json--to html--to doctags で切り替えます。
  • 大規模バッチには --device cuda--num-threads を追加します。
  • コンフィグジェネレーター で完全なコマンドを作成します。
5
???? 5

CLI か Python か?

単発の変換には CLI を、文書を後処理したり多数のファイルを処理したり他のライブラリと統合する場合には Python API を使用します。

  • CLI: 高速でスクリプト化しやすく、コード不要。
  • Python: DoclingDocument、チャンク、パイプラインオプションに完全アクセス。
6
???? 6

さらに詳しく

関連ツールとリファレンス。

7
???? 7

よくある質問

これらの例はそのまま動きますか?
はい、Docling をインストールすれば動作します。サンプルのファイル名(report.pdf、scan.pdf、paper.pdf)を自分のファイルに置き換えてください。
変換後のファイルはどこに保存されますか?
既定では元ファイルの隣に、出力形式に合った拡張子で保存されます。
複数のファイルを一度に処理できますか?
はい。CLI に複数のパスを渡すか、Python でファイルをループ処理します。
CLI と Python はどう選べばよいですか?
素早い変換には CLI を、結果をプログラムで処理する場合には Python を使います。
スキャン PDF が空になるのはなぜですか?
テキスト層がないためです。--ocr-mode full_page を使う OCR レシピを使用してください。
ベクトルデータベース用のチャンクはどう得ますか?
RAG チャンキングのレシピを使い、チャンクをベクトルストアに渡します。RAG ガイド を参照してください。