標準パイプラインと VLM パイプライン#
| 標準パイプライン | VLM パイプライン | |
|---|---|---|
| 方式 | パーサー + レイアウトモデル + TableFormer + OCR | ページ画像ごとに 1 つの視覚言語モデル |
| PDF 自身のテキストを使う | はい——デジタル生成 PDF の文字は正確 | いいえ——モデルはレンダリングしたページを読む |
| CPU での速度 | 当サイトのテストで 1 ページ 2.3 秒(OCR オフ) | テストでは Granite-Docling が 2 ページの抜粋に 310 秒(モデル読み込み込み)——GPU か Apple Silicon を用意 |
| 強み | 高速、忠実なテキスト、全要素にバウンディングボックス | 数式、コード、グラフ、特殊なレイアウト。導入するモデルは 1 つ |
| リスク | 複雑な表で行が結合されることがある(表のテスト参照) | 生成系の誤り:テキストの欠落や繰り返し。長いページで起きやすい |
実行する#
pip install "docling[vlm]"
docling convert report.pdf --pipeline vlm # 既定のプリセット:granite_docling
docling convert report.pdf --pipeline vlm --vlm-model smoldocling
docling convert report.pdf --pipeline vlm --to html_split_page --show-layoutfrom docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import VlmConvertOptions, VlmPipelineOptions
from docling.document_converter import DocumentConverter, PdfFormatOption
from docling.pipeline.vlm_pipeline import VlmPipeline
opts = VlmPipelineOptions()
opts.vlm_options = VlmConvertOptions.from_preset("granite_docling")
converter = DocumentConverter(format_options={
InputFormat.PDF: PdfFormatOption(pipeline_cls=VlmPipeline, pipeline_options=opts)
})
doc = converter.convert("report.pdf").document
print(doc.export_to_markdown())VlmConvertOptions.list_presets() はすべてのプリセットとそのモデル・説明を返します。CLI が --vlm-model で呼ぶのはまさに from_preset() です。
Granite-Docling-258M の概要#
- 開発:IBM Research · ライセンス:Apache 2.0 · 公開:2025 年 9 月 17 日。
- アーキテクチャ:Idefics3 の設計で、視覚エンコーダーは
siglip2-base-patch16-512、言語モデルは Granite 165M。 - 出力:DocTags——レイアウト、テキスト、表、コード、数式、グラフを表す簡潔なマークアップで、DoclingDocument に対応付けられます。
- 言語:英語。日本語・アラビア語・中国語は実験的とされています。
- プロンプト:ページ全体は “Convert this page to docling.”、個別の要素は “Convert chart to table.” のような短い指示。
出典: ibm-granite/granite-docling-258M model card
データ表を表示
| SmolDocling-256M-preview | Granite-Docling-258M | |
|---|---|---|
| Layout F1 | 0.85 | 0.86 |
| Layout recall | 0.84 | 0.88 |
| Layout precision | 0.9 | 0.92 |
| MMStar | 0.17 | 0.3 |
| OCRBench ÷ 1000 | 0.338 | 0.5 |
全 22 プリセット#
Docling 2.143.1 の VlmConvertOptions.list_presets() から取得。「リモートコード」のプリセットは --trust-remote-code を付けたときだけ動きます。先にモデルのコードを確認してください。
VlmConvertOptions.list_presets() から取得。
データ表を表示
| 10 億パラメータ | |
|---|---|
| smoldocling | 0.26B |
| granite_docling | 0.26B |
| falcon_ocr | 0.30B |
| nemotron_parse_v3_5 | 0.60B |
| nemotron_parse_v2 | 0.90B |
| glm_ocr | 0.90B |
| lightonocr | 1.00B |
| mineru2_pro | 1.20B |
| granite_vision | 2.00B |
| deepseek_ocr | 3.00B |
| qwen | 3.00B |
| nanonets_ocr2 | 3.00B |
| dots_ocr | 3.00B |
| dots_mocr | 3.00B |
| unlimited_ocr | 3.34B |
| chandra_ocr2 | 5.30B |
| pixtral | 12.00B |
| gemma_12b | 12.00B |
| gemma_27b | 27.00B |
--vlm-model | モデル | サイズ | 出力 | 備考 |
|---|---|---|---|---|
granite_docling | ibm-granite/granite-docling-258M | 258M | DocTags | 既定 · MLX 版あり |
smoldocling | docling-project/SmolDocling-256M-preview | 256M | DocTags | 前身 · MLX 版あり |
falcon_ocr | tiiuae/Falcon-OCR | 0.3B | Markdown | リモートコード · MLX |
glm_ocr | zai-org/GLM-OCR | 0.9B | Markdown | MLX |
lightonocr | lightonai/LightOnOCR-2-1B | 1B | Markdown | MLX |
mineru2_pro | opendatalab/MinerU2.5-Pro-2604-1.2B | 1.2B | MinerU 2 段階方式 | Transformers・MLX・API |
granite_vision | ibm-granite/granite-vision-3.3-2b | 2B | Markdown | Transformers・vLLM・Ollama・LM Studio |
deepseek_ocr | deepseek-ocr:3b | 3B | Markdown | Ollama または LM Studio 経由のみ |
qwen | Qwen/Qwen2.5-VL-3B-Instruct | 3B | Markdown | MLX |
nanonets_ocr2 | nanonets/Nanonets-OCR2-3B | 3B | Markdown | MLX |
dots_ocr | rednote-hilab/dots.ocr | 3B | ボックス付き JSON | リモートコード |
dots_mocr | rednote-hilab/dots.mocr | 3B | ボックス付き JSON | リモートコード。Transformers では flash-attn が必要 |
unlimited_ocr | baidu/Unlimited-OCR | 3.34B MoE | ボックス付き Markdown | |
chandra_ocr2 | datalab-to/chandra-ocr-2 | 5.3B | ボックス付き HTML | リモートコード · MLX |
pixtral | mistral-community/pixtral-12b | 12B | Markdown | MLX |
gemma_12b | google/gemma-3-12b-it | 12B | Markdown | MLX のみ |
gemma_27b | google/gemma-3-27b-it | 27B | Markdown | MLX のみ |
phi4 | microsoft/Phi-4-multimodal-instruct | — | Markdown | リモートコード · Transformers・vLLM |
got_ocr | stepfun-ai/GOT-OCR-2.0-hf | — | Markdown | Transformers |
dolphin | ByteDance/Dolphin | — | Markdown | |
nemotron_parse_v2 | nvidia/NVIDIA-Nemotron-Parse-2.0 | — | Nemotron Parse | リモートコード · Transformers・MLX・vLLM |
nemotron_parse_v3_5 | nvidia/Nemotron-3.5-Parse | — | Nemotron Parse | Transformers・API |
「MLX のみ」などの備考は各プリセットの対応推論エンジンの一覧によります。ライセンスはモデルごとに異なるため、商用利用の前にモデルカードを確認してください。
標準と VLM の選び方#
- まず標準パイプライン。既定なのには理由があります。高速で、デジタル生成 PDF の文字が正確で、すべての要素に出典情報が付きます。
- 結果を目で確認。
--to html_split_page --show-layoutで各ページと Docling の抽出結果が横に並びます。 - うまくいかないページで Granite-Docling を試す。
--page-rangeと組み合わせて数ページで試してから GPU 時間を使いましょう。 - 自分の文書で比較する。公開スコアは他人の文書での平均です。自分の文書 10 本のほうが多くを教えてくれます。
画像の説明とグラフの抽出#
視覚モデルを使うのに VLM パイプライン全体は要りません。標準パイプラインから、画像に対してだけ小さな VLM を呼び出せます:
docling convert report.pdf --enrich-picture-description # 図のキャプションを生成
docling convert report.pdf --enrich-chart-extraction # 棒・円・折れ線グラフ → 表
docling convert report.pdf --enrich-chart-extraction --chart-extraction-preset granite_vision_v42.143.1 のグラフ抽出プリセット:granite_vision_v3_3・granite_vision_v4(既定)・granite_vision_v4_mlx。既定は IBM Granite-Vision-4.1-4B(ibm-granite/granite-vision-4.1-4b)、granite_vision_v3_3 は 2B のグラフ→CSV モデルです。GPU か Apple Silicon を用意してください。プリセット名は 2.143.1 で確認しましたが、CPU のテストマシンではグラフ抽出を実行していません。
よくある質問
Granite-Docling とは?
Granite-Docling-258M は IBM Research が 2025 年 9 月 17 日に Apache 2.0 で公開した小型の視覚言語モデルです。ページ画像を DocTags マークアップに変換し、Docling がそれを DoclingDocument にします。Idefics3 アーキテクチャをベースに、SigLIP2 視覚エンコーダーと Granite 165M 言語モデルを組み合わせています。
Docling で Granite-Docling を使うには?
docling[vlm] をインストールし、docling convert file.pdf --pipeline vlm --vlm-model granite_docling を実行します。Python では VlmPipelineOptions().vlm_options = VlmConvertOptions.from_preset('granite_docling') を設定し、パイプラインクラスに VlmPipeline を指定します。
VLM パイプラインは標準パイプラインより優れている?
常にではありません。標準パイプラインは速く、デジタル生成 PDF に強いです。VLM は複雑なレイアウト・数式・コードで上回ることがあり、モデル 1 つで済むので導入も簡単ですが、GPU なしでは大幅に遅く、ハルシネーションや繰り返しが起こりえます。
SmolDocling の後継は?
Granite-Docling-258M が SmolDocling-256M-preview の後継で、既定の VLM プリセットです。smoldocling プリセットも引き続き使えます。
Mac で VLM パイプラインを動かせる?
はい。多くの DocTags プリセットと一部の Markdown プリセットには MLX 版があり、Apple Silicon では Docling が自動的に使います(例:ibm-granite/granite-docling-258M-mlx)。
出典
- ibm-granite/granite-docling-258M モデルカード
- SmolDocling 論文(arXiv 2503.11576)——DocTags
- Docling ソースコード:VlmConvertOptions プリセット(docling/datamodel)
- IBM の発表:Granite-Docling