PDF を AI が扱いやすい構造化データに変換するオープンソース(Apache-2.0)のパーサー。Java コアエンジンに Python / Node.js のラッパー SDK を備えたモノレポ構成で、CLI・SDK・MCP(Claude Desktop 等)・LangChain 統合など多彩なインターフェースを提供する。Hancom Inc. がスポンサー。
出力形式は JSON(バウンディングボックス付き)・Markdown・HTML・テキスト・注釈付き PDF・Tagged PDF の 6 種。見出し・段落・表・リスト・画像・数式・キャプションを意味的に分類し、全要素に座標情報を付与する。
| 観点 | OpenDataLoader PDF | docling | marker | pymupdf4llm |
|---|---|---|---|---|
| 総合精度 | 0.907 | 0.882 | 0.861 | 0.732 |
| 表抽出 (TEDS) | 0.928 | 0.887 | 0.808 | 0.401 |
| 読み順 (NID) | 0.934 | 0.898 | 0.826 | 0.731 |
| ローカル速度 | 0.015 秒/頁 | 0.762 | 53.9 | 0.091 |
| バウンディングボックス | ✅ 全要素 | ✗ | ✗ | ✗ |
| AI 安全(隠しテキスト検出) | ✅ 組込み | ✗ | ✗ | ✗ |
| GPU 不要のローカルモード | ✅ | △ | ✗ | ✅ |
| ライセンス | Apache-2.0 | Apache-2.0 | AGPL | Apache-2.0 |
3 つの差別化ポイント:
① インストール
Python: pip install opendataloader-pdf
Node.js: npm install @opendataloader/pdf
Java: Maven dependency を追加
② 基本変換(ローカルモード — GPU 不要)
CLI: opendataloader-pdf input.pdf --format json,markdown
Python: opendataloader_pdf.convert(input_path=["input.pdf"], format="markdown")
Node.js: await convert(["input.pdf"], { format: "markdown" })
③ 高精度変換(Hybrid モード — 複雑な表・スキャン PDF 向け)
pip install "opendataloader-pdf[hybrid]"
# ターミナル 1: バックエンドサーバー起動
opendataloader-pdf-hybrid --port 5002
# ターミナル 2: Hybrid 指定で変換
opendataloader-pdf --hybrid docling-fast input.pdf
④ RAG / LLM パイプラインへの組込み
- LangChain: OpenDataLoaderPDFLoader → split → vector store → retriever
- MCP: Claude Desktop / Cursor 等に MCP サーバーとして登録
- バッチ処理: ディレクトリごと渡せば単一 JVM で一括処理(起動コスト最小化)
⑤ 出力を活用
- JSON: バウンディングボックス・メタデータ付き構造化データ → 精密な後処理に
- Markdown: そのまま LLM のコンテキストに投入
- Tagged PDF: アクセシビリティ準拠ドキュメントとして配布
開発者向け注意: Java 側の CLI オプションを変更したら必ず
npm run syncを実行すること。Python / Node.js バインディングの自動生成が走り、忘れるとラッパーが壊れる。