DoclingでPDFを読む

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

pip install docling でインストールできますが、依存関係が複雑で、2024年11月10日にインストールしたときは lxml 5.3.0 → 4.9.4、sympy 1.13.3 → 1.13.1、pillow 11.0.0 → 10.4.0、numpy 2.1.3 → 1.26.4、pyarrow 17.0.0 → 16.1.0 にそれぞれダウングレードされました。再度 pip install --upgrade lxml numpy pyarrow pillow sympy して依存関係を壊してみましたが、特に問題なく動いているようです。

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

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