docling
PDF・DOCX・PPTX・HTML・画像など15種類以上のフォーマットに対応したDoclingドキュメントパーサーです。テキスト抽出、Markdown/HTML/JSON形式への変換、RAGパイプライン向けチャンク分割、ファイルの一括処理が必要な場面で使用します。`DocumentConverter`・`convert`・`convert_all`・`export_to_markdown`・`HierarchicalChunker`・`HybridChunker`・`ConversionResult`の利用時にトリガーされます。
description の原文を見る
Docling document parser for PDF, DOCX, PPTX, HTML, images, and 15+ formats. Use when parsing documents, extracting text, converting to Markdown/HTML/JSON, chunking for RAG pipelines, or batch processing files. Triggers on DocumentConverter, convert, convert_all, export_to_markdown, HierarchicalChunker, HybridChunker, ConversionResult.
SKILL.md 本文
Docling ドキュメントパーサー
Docling は、PDF、Word ドキュメント、PowerPoint、画像、その他のフォーマットを高度なレイアウト理解を備えた構造化データに変換するドキュメント解析ライブラリです。
クイックスタート
基本的なドキュメント変換:
from docling.document_converter import DocumentConverter
source = "https://arxiv.org/pdf/2408.09869" # URL, Path, or BytesIO
converter = DocumentConverter()
result = converter.convert(source)
print(result.document.export_to_markdown())
コアコンセプト
DocumentConverter
ドキュメント変換のメインエントリーポイント。様々な入力フォーマットと変換オプションをサポートしています。
from docling.document_converter import DocumentConverter
from docling.datamodel.base_models import InputFormat
from docling.document_converter import PdfFormatOption
from docling.datamodel.pipeline_options import PdfPipelineOptions
# 基本的なコンバーター(すべてのフォーマット有効)
converter = DocumentConverter()
# フォーマット制限
converter = DocumentConverter(
allowed_formats=[InputFormat.PDF, InputFormat.DOCX]
)
# カスタムパイプラインオプション
pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = True
pipeline_options.do_table_structure = True
converter = DocumentConverter(
format_options={
InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)
}
)
ConversionResult
すべての変換操作は以下を含む ConversionResult を返します:
document: パースされたDoclingDocumentstatus:ConversionStatus.SUCCESS、PARTIAL_SUCCESS、またはFAILUREerrors: 変換中に発生したエラーのリストinput: ソースドキュメントの情報
from docling.datamodel.base_models import ConversionStatus
result = converter.convert("document.pdf")
if result.status == ConversionStatus.SUCCESS:
markdown = result.document.export_to_markdown()
html = result.document.export_to_html()
data = result.document.export_to_dict()
サポートされているフォーマット
入力フォーマット
- ドキュメント: PDF、DOCX、PPTX、XLSX
- マークアップ: HTML、Markdown、AsciiDoc
- データ: CSV、JSON(Docling フォーマット)
- 画像: PNG、JPEG、TIFF、BMP、WEBP
- オーディオ: WAV、MP3
- ビデオテキスト: WebVTT
- スキーマ固有: USPTO XML、JATS XML、METS-GBS
出力フォーマット
- Markdown:
export_to_markdown()またはsave_as_markdown() - HTML:
export_to_html()またはsave_as_html() - JSON:
export_to_dict()またはsave_as_json()(注:export_to_json()メソッドはありません) - テキスト:
export_to_text()またはexport_to_markdown(strict_text=True)またはsave_as_markdown(strict_text=True) - DocTags:
export_to_doctags()またはsave_as_doctags()
一般的なパターン
単一ファイルの変換
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert("document.pdf")
# 異なるフォーマットにエクスポート
markdown = result.document.export_to_markdown()
html = result.document.export_to_html()
json_data = result.document.export_to_dict()
# または直接ファイルに保存
result.document.save_as_markdown("output.md")
result.document.save_as_html("output.html")
result.document.save_as_json("output.json")
バッチ処理
convert_all() の詳細については references/batch.md を参照してください。
URL 変換
converter = DocumentConverter()
result = converter.convert("https://example.com/document.pdf")
バイナリストリーム変換
from io import BytesIO
from docling.datamodel.base_models import DocumentStream
with open("document.pdf", "rb") as f:
buf = BytesIO(f.read())
source = DocumentStream(name="document.pdf", stream=buf)
result = converter.convert(source)
フォーマット固有のオプション
from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions
from docling.document_converter import DocumentConverter, PdfFormatOption
# PDF 固有のオプションを設定
pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = True
pipeline_options.ocr_options.lang = ["en", "es"]
pipeline_options.do_table_structure = True
pipeline_options.generate_page_images = True
converter = DocumentConverter(
format_options={
InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)
}
)
リソースの制限
converter = DocumentConverter()
# ファイルサイズ(バイト)とページ数を制限
result = converter.convert(
"large_document.pdf",
max_file_size=20_971_520, # 20 MB
max_num_pages=100
)
ドキュメント分割
RAG 統合については references/chunking.md を参照してください。
DoclingDocument 構造
DoclingDocument はパース済みコンテンツを表す Pydantic モデルです:
# ドキュメント構造へのアクセス
doc = result.document
# コンテンツアイテム(リスト)
doc.texts # TextItem インスタンス(段落、見出しなど)
doc.tables # TableItem インスタンス
doc.pictures # PictureItem インスタンス
doc.key_value_items # キーバリューペア
# 構造(ツリーノード)
doc.body # メインコンテンツ階層
doc.furniture # ヘッダー、フッター、ページ番号
doc.groups # リスト、章、セクション
# 読み順ですべての要素を反復処理
for item, level in doc.iterate_items():
print(f"{' ' * level}{item.label}: {item.text[:50]}")
高度な機能
OCR 設定
from docling.datamodel.pipeline_options import (
PdfPipelineOptions,
EasyOcrOptions,
TesseractOcrOptions,
TesseractCliOcrOptions,
OcrMacOptions,
RapidOcrOptions
)
# EasyOCR(デフォルト)
pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = True
pipeline_options.ocr_options = EasyOcrOptions(lang=["en", "de"])
# Tesseract
pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = True
pipeline_options.ocr_options = TesseractOcrOptions(lang=["eng", "deu"])
# RapidOCR
pipeline_options = PdfPipelineOptions()
pipeline_options.do_ocr = True
pipeline_options.ocr_options = RapidOcrOptions()
テーブル抽出オプション
from docling.datamodel.pipeline_options import (
PdfPipelineOptions,
TableFormerMode
)
pipeline_options = PdfPipelineOptions()
pipeline_options.do_table_structure = True
# セルマッチングを使用(PDF セルにマッピング)
pipeline_options.table_structure_options.do_cell_matching = True
# または予測セルを使用
pipeline_options.table_structure_options.do_cell_matching = False
# 精度モードを選択
pipeline_options.table_structure_options.mode = TableFormerMode.ACCURATE
ページ画像
pipeline_options = PdfPipelineOptions()
pipeline_options.generate_page_images = True # HTML エクスポート画像に必要
# 埋め込み画像でエクスポート
result.document.save_as_html(
"output.html",
image_mode=ImageRefMode.EMBEDDED
)
エラーハンドリング
from docling.datamodel.base_models import ConversionStatus
result = converter.convert("document.pdf")
if result.status == ConversionStatus.SUCCESS:
print("Conversion successful")
elif result.status == ConversionStatus.PARTIAL_SUCCESS:
print("Partial conversion:")
for error in result.errors:
print(f" {error.error_message}")
else: # FAILURE
print("Conversion failed:")
for error in result.errors:
print(f" {error.error_message}")
バッチ処理でのエラーハンドリング:
# エラー時も処理を継続
results = converter.convert_all(
["doc1.pdf", "doc2.pdf", "doc3.pdf"],
raises_on_error=False
)
for result in results:
if result.status == ConversionStatus.SUCCESS:
result.document.save_as_markdown(f"{result.input.file.stem}.md")
else:
print(f"Failed: {result.input.file}")
ゲート
出力を完全なものとして扱う、またはダウンストリーム(RAG、評価、ストレージ)に供給する前に:
convert()からresultを取得するか、references/batch.mdのバッチシーケンスに従います。- パス:
result.statusがConversionStatus.SUCCESSである、またはPARTIAL_SUCCESSでresult.errorsを読み取り、タスク用の部分出力を明示的に受け入れている、またはFAILUREを処理している(意図しない限り、失敗時にエクスポート/分割なし)。 - その後のみ
export_to_*、save_as_*、またはreferences/chunking.mdのチャンカーを呼び出します。
convert_all の場合: 各入力が結果にマップされ、各 result.status が出力を書き込む前に分類されるときにパスします(references/batch.md を参照)。
CLI 使用法
# 基本的な変換
docling document.pdf
# 特定の出力に変換
docling --to markdown document.pdf
# カスタムモデルパスを使用
docling --artifacts-path /path/to/models document.pdf
# VLM パイプラインを使用
docling --pipeline vlm --vlm-model granite_docling document.pdf
リファレンスドキュメント
Parsing Options- DocumentConverter 初期化、フォーマット固有のオプション、OCR 設定Batch Processing- convert_all()、エラーハンドリング、並行処理パターンChunking- HierarchicalChunker、HybridChunker、RAG 統合Output Formats- export_to_markdown()、export_to_html()、export_to_dict()、ドキュメント構造
キー型
DocumentConverter: メイン変換クラスConversionResult: ドキュメントと状態を含む変換結果DoclingDocument: 統一ドキュメント表現(Pydantic モデル)InputFormat: サポート入力フォーマットの列挙型ConversionStatus: SUCCESS、PARTIAL_SUCCESS、FAILUREPdfPipelineOptions: PDF パイプラインの設定ImageRefMode: EMBEDDED、REFERENCED、PLACEHOLDER
統合例
LangChain
from docling.document_converter import DocumentConverter
from langchain_text_splitters import MarkdownTextSplitter
converter = DocumentConverter()
result = converter.convert("document.pdf")
markdown = result.document.export_to_markdown()
splitter = MarkdownTextSplitter(chunk_size=1000)
chunks = splitter.split_text(markdown)
LlamaIndex
from docling.document_converter import DocumentConverter
from docling.chunking import HybridChunker
from llama_index.core import Document
converter = DocumentConverter()
result = converter.convert("document.pdf")
chunker = HybridChunker()
chunks = list(chunker.chunk(result.document))
documents = [
Document(text=chunk.text, metadata=chunk.meta.export_json_dict())
for chunk in chunks
]
注記
- Docling は同期 API を使用しています(ネイティブ非同期サポートなし)
- モデルは初回使用時に自動的にダウンロードされます(事前フェッチ可能)
- エアギャップ環境でのローカル実行をサポート
- OCR とテーブル検出の GPU アクセラレーションをサポート
- デフォルトモデルは CPU で実行; GPU は設定が必要
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- existential-birds
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/existential-birds/beagle / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。