docling-project/docling
PDFやWordを、AIに渡せる構造つきのテキストに変換する
どういうものか
いろいろな形式の文書を読み込んで、中身の構造を保ったまま別の形に書き出すための道具だ。Python で書かれていて、ライセンスは MIT。もとは IBM Research Zurich のチームが始めたもので、現在は LF AI & Data 財団のプロジェクトとして置かれている。
中心にあるのは、PDF の読み解きだ。README は、ページの配置・読む順番・表の構造・コード・数式・画像の分類までを扱うと書いている。文字が埋まっていない紙のスキャンには OCR が使える。読み取った結果は DoclingDocument という共通の形にまとめられ、そこから Markdown・HTML・WebVTT・DocTags・欠落のない JSON などに書き出す。入口が何であっても、いったん同じ形を経由するのがこの設計の要点になる。
入口として挙がっている形式は幅広く、PDF・DOCX・PPTX・XLSX・HTML・EPUB・Apple Pages・LaTeX・プレーンテキストのほか、画像、音声(WAV・MP3)、メール(EML・MSG)が並ぶ。特許(USPTO)や論文(JATS)、財務報告(XBRL)といった用途ごとの XML にも対応している。使い方は、コマンド1行で変換する CLI、Python から呼ぶ方法、サービスとして立てる API サーバー(docling-serve)がある。エージェントからつなぐための MCP サーバーも用意されていて、LangChain・LlamaIndex・Crew AI・Haystack との連携も挙げられている。処理を手元で完結させられる点は、README が明示的に利点として書いている。
どんなときに使うか
PDFの表が、コピーすると崩れてしまうとき
ページの配置と表の構造を読み取ったうえで書き出すので、行と列の関係を保ったまま Markdown や JSON にできる。テキストとして抜くのではなく、構造ごと移すのが目的の道具だ。
社外に出せない資料を、AIに読ませたいとき
処理を手元で完結できることが README に明記されていて、ネットワークから切り離した環境での実行も想定されている。クラウドの変換サービスに文書を送らずに済む。
注意点
Python の版に下限がある。 2.70.0 で Python 3.9 の対応が終わっていて、README は 3.10 以上を使うよう書いている。動く環境として macOS・Linux・Windows、x86_64 と arm64 が挙げられている。
コードとモデルでライセンスが別になる。 本体は MIT だが、README は「個々のモデルの利用については、元のパッケージにあるモデルのライセンスを参照してほしい」と書いている。OCR や画像を読む処理を使うときは、そこを確認する必要がある。
画像や音声には、別のモデルが要る。 図表を読むのに視覚言語モデル(GraniteDocling など)、音声を文字に起こすのに音声認識のモデルが使われる。テキストが埋まった PDF を変換するのとは、用意するものが違う。
開いているものは多い。 issue とプルリクエストを合わせて900件台が開いている。使われている量に比例した数ではあるが、報告してすぐ対応が返る規模ではない。