概要
IBM Researchが開発したオープンソースツール「Docling」は、あらゆる形式のドキュメントをRAG対応データに変換します。GitHubスター数37,000以上。
対応フォーマット
- PDF(OCR対応)
- DOCX / PPTX
- HTML / Markdown
- 画像(表・図の抽出)
使い方
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
# PDFをMarkdownに変換
result = converter.convert("company_report_2024.pdf")
markdown = result.document.export_to_markdown()
print(markdown[:500])
# → # 株式会社ABCの2024年度報告
# → ## 1. 事業概要
# → 当社は2024年度、AI事業を中心に...
# → ## 2. 財務ハイライト
# → | 指標 | 2023年度 | 2024年度 | 前年比 |
# → |---|---|---|---|
# → | 売上高 | 150億円 | 180億円 | +20% |
# → ...
LangChainとの統合
from langchain_community.document_loaders import DoclingLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
# Doclingでドキュメント読み込み
loader = DoclingLoader("company_report_2024.pdf")
docs = loader.load()
# チャンク分割
splitter = RecursiveCharacterTextSplitter(
chunk_size=512,
chunk_overlap=50,
separators=["\n## ", "\n### ", "\n\n", "\n", " "],
)
chunks = splitter.split_documents(docs)
print(f"生成チャンク数: {len(chunks)}")
for chunk in chunks[:3]:
print(f" [{chunk.metadata['source']}] {chunk.page_content[:80]}...")
具体的な変換例
入力: PDF内の複雑な表
┌──────────┬────────┬────────┬────────┐
│ 指標 │ 2022 │ 2023 │ 2024 │
├──────────┼────────┼────────┼────────┤
│ 売上高 │ 120億 │ 150億 │ 180億 │
│ 営業利益 │ 15億 │ 22億 │ 30億 │
│ 従業員数 │ 800人 │ 950人 │ 1,200人│
└──────────┴────────┴────────┴────────┘
出力: Markdownテーブル
| 指標 | 2022 | 2023 | 2024 |
|---|---|---|---|
| 売上高 | 120億 | 150億 | 180億 |
| 営業利益 | 15億 | 22億 | 30億 |
| 従業員数 | 800人 | 950人 | 1,200人 |
ベンチマーク結果
- 複雑な表の抽出精度: 97.9%
- Unstructured.io比: テーブル抽出で優位
- LlamaParse比: 構造保持で優位
成果
- GitHub★37,000+
- LangChain / LlamaIndex公式統合
- 製造業・金融業での導入実績