docling-project/docling-parse

Simple package to extract text with coordinates from programmatic PDFs

Docling Parse – 高速で構成可能なPDF抽出

何であるか – C++コアを持つPythonパッケージで、PDFファイルを解析し、構造化されたテキスト、単語・行レベルのセル、ベクターシェイプ、ビットマップ画像およびその座標を返します。これは、より広範な Docling PDFから構造化データへのパイプラインで使用される低レベルエンジンです。

なぜ重要か – 現代のLLMベースのワークフローでは、PDFからクリーンで位置情報付きのテキストや埋め込みグラフィックス(研究論文、契約書、マニュアルなど)が必要です。Docling Parseは、高性能かつスレッドセーフな方法でそのデータを取得でき、下流のAIモデルが正確なレイアウト情報を扱えるようにします。

主な機能

  • 二段階構成 – DecodeConfig(ページのデコード方法)は開く時点で固定;ContentConfig(計算・マテリアライズする内容)はページごとに変更可能で、初期ロードは低コスト、必要に応じて詳細な再解析が可能。
  • 細かい出力レベル – 文字、単語、行、ベクターシェイプ、ビットマップ画像のスキップ、計算、マテリアライズを個別に選択可能。
  • シーケンシャルおよびマルチスレッド解析器 – DoclingPdfParser(シングルスレッド);DoclingThreadedPdfParser(バックプレッシャー制御付き並列処理)。
  • pybind11を介したC++コア – 高速な解析とレンダリング;純粋なPython APIとして公開。
  • レンダリングサポート – Blend2D/FreeTypeを介してページを画像にレンダリング可能。環境変数で再現可能なフォントフォールバックを設定可能。
  • CLIツール – docling-parse で素早いコマンドライン抽出が可能。
  • ベンチマーク – 他のPDFライブラリと比較するためのスクリプトとレポートを含む。

一般的なワークフロー

from docling_parse.pdf_parser import (
    DoclingPdfParser, DecodeConfig, ContentConfig, ContentLevel
)

parser = DoclingPdfParser(loglevel="fatal")
pdf = parser.load(
    path_or_stream="mydoc.pdf",
    decode_config=DecodeConfig(do_sanitization=True, keep_glyphs=False),
    content_config=ContentConfig(
        char_cells_content_level=ContentLevel.SKIP,
        word_cells_content_level=ContentLevel.COMPUTE_AND_MATERIALIZE,
        line_cells_content_level=ContentLevel.COMPUTE_AND_MATERIALIZE,
    ),
)

for page_no, page in pdf.iterate_pages():
    for word in page.iterate_cells(unit_type=TextCellUnit.WORD):
        print(page_no, word.rect, word.text)
    # オプション:画像レンダリング
    img = page.render_as_image(cell_unit=TextCellUnit.WORD)
    img.show()

より豊富なデータが必要な場合、pdf.get_page(page_no, content_config=…) を呼び出し、ライブラリが自動的に該当ページを再デコードします。

インストール

pip install docling-parse   # 事前ビルド済みのウェール(C++バイナリ)を取得

開発用には、CMakeでC++部分をビルドするか、READMEに記載のuvツールチェーンを使用できます。

使用すべき場面

  • レイアウトが重要なPDFをLLMにインジェストする際(表、複数カラムテキスト、図など)。
  • 下流のビジョンモデル向けに画像やベクターグラフィックスを抽出する際。
  • 大規模なドキュメントコレクションを高スループットでバッチ処理する際(マルチスレッド解析器のおかげ)。
  • マシン間で決定論的なレンダリングが必要な状況 – DOCLING_PARSE_*_FALLBACK_FONT 環境変数を設定。

リンク


Docling ParseはMITライセンス、IBM発祥のオープンソースライブラリで、モデルの学習や推論ではなくPDF解析に焦点を当てていますが、構造化ドキュメントデータが必要なAIパイプラインにおいて重要な役割を果たしています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト