コンテンツにスキップ

Docling - RAG 用ドキュメント解析 チートシート

Docling - RAG 用ドキュメント解析 チートシート

Docling はオープンソースのドキュメント解析ツールキット(LF AI & Data プロジェクト)— PDF、DOCX、PPTX、XLSX、HTML、イメージなどを構造化表現に変換 — レイアウト、テーブル、見出し、読み順を保持するクリーンな Markdown または JSON。階層認識チャンキングを含み、チャンク構造メタデータで充実化、LangChain および LlamaIndex と直接統合 — RAG パイプラインの取り込み段階の最強のオープンソース選択肢の一つ。

インストール

方法コマンド
pippip install docling
uvuv add docling
OCR エクストラ付きpip install "docling[ocr]"
確認docling --version

CLI の使用方法

コマンド説明
docling document.pdfファイルを Markdown に変換(デフォルト)
docling --to json document.pdf構造化 JSON を出力
docling --to md --output out/ report.docxディレクトリに変換
docling https://example.com/page.htmlURL から変換
docling --ocr scanned.pdfスキャン済みドキュメントに OCR を強制
docling --help完全なオプションリスト

Python:基本的な変換

from docling.document_converter import DocumentConverter

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

doc = result.document
print(doc.export_to_markdown())   # クリーン Markdown
print(doc.export_to_dict())       # 構造化 JSON 可能な dict
メソッド戻り値
export_to_markdown()見出し/テーブル保持の Markdown
export_to_dict()構造化ドキュメントモデル(JSON 可能)
export_to_doctags()DocTags 表現
result.documentパース済み DoclingDocument

サポートされている入力

フォーマット注釈
PDFレイアウト、テーブル、読み順;スキャン用 OCR
DOCX / PPTX / XLSXOffice フォーマット
HTMLウェブページとエクスポート
イメージOCR 経由 PNG/JPG/TIFF
Markdown / AsciiDocドキュメントモデルに再構造化

階層認識チャンキング

Docling のチャンカーはパース済みドキュメントを埋め込み用に分割しながら、各チャンクのメタデータに構造コンテキスト(セクション見出し、テーブル境界)を保持。

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

doc = DocumentConverter().convert("report.pdf").document
chunker = HybridChunker(tokenizer="sentence-transformers/all-MiniLM-L6-v2")

for chunk in chunker.chunk(doc):
    print(chunk.text)
    print(chunk.meta)   # 見出し、ページ、由来
チャンカー動作
HierarchicalChunkerドキュメント構造で分割(セクション、アイテム)
HybridChunker構造認識 + トークナイザー認識サイジング/マージ
chunk.meta見出し/由来を持つコンテキスト拡張用に実施

RAG フレームワーク統合

フレームワーク方法
LangChainDoclingLoader はドキュメント/チャンクを返す
LlamaIndexDocling リーダー/ノードパーサー
カスタムexport_to_markdown() またはチャンカー出力を直接使用
# LangChain の例
from langchain_docling import DoclingLoader
docs = DoclingLoader(file_path="report.pdf").load()

パフォーマンス & オプション

オプション目的
OCR エンジンOCR を選択/無効化(EasyOCR、Tesseract など)
テーブルモード正確対高速テーブル構造復旧
デバイスCPU または GPU 上でモデルを実行
ページ範囲変換を特定のページに限定
パイプラインオプションフォーマットあたりの変換パイプラインをチューン

一般的なワークフロー

# PDF フォルダーを取り込み用 Markdown に変換
for f in docs/*.pdf; do docling --to md --output corpus/ "$f"; done
# パース → チャンク → 埋め込み、RAG 取り込みコア
from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker

doc = DocumentConverter().convert("manual.pdf").document
chunks = list(HybridChunker().chunk(doc))
# モデルで各 chunk.text を埋め込み、chunk.meta と共に保存

Docling vs その他のパーサー

側面DoclingUnstructuredMarker
出力Markdown + 構造化モデル型要素Markdown
チャンキング組み込み、階層認識要素ベース外部
スピード良好(CPU)良好GPU 付き最速
最適用途セルフホスト RAG 取り込み型要素パイプラインGPU バルク Markdown

リソース