DoclingでPDFを読む

[2025-03-18 追記] SmolDocling というOCRエンジンが追加されたようです。

Docling はPDF等を解釈してMarkdown/JSONにするツールです。IBMが開発しました。arXivの Docling Technical Report に解説されています。Pythonから使えるほか、コマンド docling で使うこともできます。

pip install docling でインストールできますが、依存関係が複雑で、2025年10月26日にインストールしたときは lxml 6.0.2 → 5.4.0、numpy 2.3.4 → 2.2.6、pillow 12.0.0 → 11.3.0 にそれぞれダウングレードされました。再度 pip install --upgrade lxml numpy pillow して依存関係を壊してみましたが、特に問題なく動いているようです。

docling --help で詳しいヘルプが出ます。docling example.pdfexample.md が生成されます。ローカルのPDFファイルの代わりにURLを与えることもできます。初回実行時にHugging Faceからモデルがダウンロードされ、~/.cache/huggingface/hub/models--ds4sd--docling-models に入ります。モデルは全体で550Mバイトほどでした。

実行はかなり遅いので、最初は小さいファイルで試してみるのがよさそうです。日本語についてはやや難点が残っているようで、PDFバックエンドをオプション --pdf-backend=pypdfium2pypdfium2 などに変えるほうがよさそうです。

図は ![Image](data:image/png;base64,...) のようにしてMarkdownに埋め込んでくれます。

MarkdownはMacでは qlmanage -p *.md でプレビューできます。