mcpField
D
docling.rs

docling.rs

ローカル
github.com生産性121今日更新

docling.rs について

docling.rsは、エージェント、開発者、RAGパイプライン向けのRust製ドキュメント変換プロジェクトです。PDF、Officeファイル、HTML、スキャン画像、音声などを処理し、CLI、ライブラリ、サーバーから構造を保ったMarkdownなどを出力します。

主な機能

  1. 01Markdown、JSON、HTMLなどへの変換
  2. 02PDFのレイアウト、表、OCRの処理
  3. 03Officeファイル、HTML、スキャン、音声の処理
  4. 04CLI、ライブラリ、ブラウザー、HTTPサーバーでの実行
  5. 05AIエージェントへの変換ツール提供

活用シーン

  1. 01スキャンPDFを構造化テキストに変換
  2. 02RAGパイプライン向けに文書やチャンクを準備
  3. 03AIエージェントに文書変換ツールを提供

MCP 対応

`docling-rs mcp`コマンドでAIエージェント向けのMCPサーバーを実行できます。Markdown、JSON、チャンクなどを出力する`convert_to_markdown`と`convert`ツールを公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"docling-project-docling-rs": {
"command": "uvx",
"args": [
"docling-rs-mcp"
],
"env": {
"DOCLING_RS_CACHE_DIR": "<DOCLING_RS_CACHE_DIR>",
"DOCLING_RS_OCR_LANG": "<DOCLING_RS_OCR_LANG>"
}
}
}
}
起動コマンドuvx docling-rs-mcp
設定が必要な環境変数
DOCLING_RS_CACHE_DIRWhere `docling-rs-mcp --download-models` puts the PDF/image models and the server finds them (default ~/.cache/docling.rs).
DOCLING_RS_OCR_LANGOCR language for scans: en (default), ch, or a BCP-47 tag.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypidocling-rs-mcp2.53.3
ocighcr.io/docling-project/docling-rs:2.53.3

ツール

3

掲載時のツール一覧 · 今日に更新

パラメーター型必須説明
tostringいいえ出力形式:md(デフォルト)、json(docling の DoclingDocument)、 html、text、latex、chunks(JSON 形式の RAG チャンクレコード)、vtt、pandoc (Pandoc の JSON AST)。
uristringはいドキュメント:http: または https: URL、file: URI、data: URI、または パス(相対パスはサーバーの根目录を基準に解決されます)。
imagesstringいいえmd/html/pandoc 出力内の画像:プレースホルダー(デフォルト)または埋め込み(data: URI)。
optionsobjectいいえ変換オプション。docling.rs の共通オプションセット(docs/OPTIONS.md)。例: {"pages": "1-5"}、{"text_layer_only": true}(デジタル PDF、最速)、 {"ocr_lang": "ch"}、{"force_full_page_ocr": true}、 {"do_picture_ocr": true}(Office ファイル内の画像を OCR 処理)、 {"password": "…"}、{"compact_tables": false}。フォームから送信する場合のように、値をテキスト("true"、"1.5") として指定することもできます。

詳細

docling.rs

docling.rs — アヒルが書類をミートグラインダーに入れている様子

CI ライブブラウザデモ ライセンス MIT crates.io のバージョン PyPI のバージョン npm のバージョン GitHub リリース crates.io のダウンロード数 PyPI の月間ダウンロード数 npm の月間ダウンロード数

docling.rs は、PDF、Office 文書、HTML、スキャン文書、音声などのドキュメントを、Markdown、docling JSON、その他 LLM や RAG パイプラインが読み取れる形式に変換します。IBM の docling を Rust に移植したもので、単一の静的バイナリからバイト単位で同じ出力を生成します。Python も PyTorch も不要です。

PDF からテキストを取り出すのは簡単です。しかし、見出しの順序や表の形式、スキャンページの読み取りなど、その構造を保つには、レイアウト解析、表認識、OCR が必要です。docling はそのためのモデルと、それに対応する Python スタックを備えています。docling.rs は同じモデルを単一のバイナリで実行します。PDF は Python 版 docling より 4.3 倍高速で、RAM 使用量は半分未満。Office と HTML は 20~60 倍高速で、表のセル再現率は MarkItDown の 0.31 に対して 0.94 を達成しています (数値、 手法)。

MarkItDown からの移行をお考えですか? pip install docling-rs を実行して、インポートを 1 つ置き換えるだけです。 from docling_rs.markitdown import MarkItDown を使えば、変換可能なすべての形式を含め、API はそのままに、実際のレイアウト解析、表、OCR を利用できます。ガイド、 実測値の比較。

Marker からの移行をお考えですか? pip install docling-rs を実行して、インポートを置き換えるだけです。 from docling_rs.marker.converters.pdf import PdfConverter を使えば、create_model_dict、text_from_rendered、JSON ブロックツリー、チャンク、marker_single の CLI と出力レイアウトなど、API はそのままです。docling のレイアウト解析、TableFormer、OCR を利用でき、PyTorch も推論サーバーも不要です。 ガイド、実測値の比較。 MinerU から移行しますか? pip install docling-rs を実行してインポートを差し替えるだけで、 from docling_rs.mineru.parser import parse — MinerU 4 の SDK をそのまま使えます。 ParseResult、markdown()、Middle JSON、Content Lists、Structured Content、save() のレイアウト、mineru-kit parse に加え、その背後では docling のレイアウト解析、TableFormer、OCR が動作します。DocVortex や llama.cpp は不要です。 ガイド、実測比較。

インストール

# CLI + models (Linux x64/arm64/s390x + macOS arm64 prebuilt; builds from source elsewhere)
curl -fsSL https://raw.githubusercontent.com/docling-project/docling.rs/master/scripts/install/install.sh | bash
docling-rs example.pdf          # Markdown on stdout

# or from crates.io; --cli puts the models where the installed binary looks
cargo install docling-cli
curl -fsSL https://raw.githubusercontent.com/docling-project/docling.rs/master/scripts/install/download_dependencies.sh | sh -s -- --cli

pip install docling-rs          # Python — drop-in for docling's, MarkItDown's, Marker's and MinerU's APIs
npm install docling.rs          # Node.js / Bun
cargo add docling               # Rust library

# containers, models baked in (-cuda variants for NVIDIA)
docker run --rm -v "$PWD:/data" ghcr.io/docling-project/docling-rs paper.pdf
docker run -p 127.0.0.1:5001:5001 ghcr.io/docling-project/docling-rs-serve

Office、HTML、Markdown、メールにはモデルは不要です。PDF、画像、音声には ONNX モデル(レイアウト、OCR、TableFormer、Whisper。1 GB 未満)が必要です。 install.sh、--cli、コンテナーにはモデルが含まれています。pip の場合は、 python -c "import docling_rs; docling_rs.download_models()" を一度実行してください。npm またはチェックアウトの場合は、変換を行う場所で download_dependencies.sh を実行します (詳細)。Windows の場合は docs/WINDOWS.md を参照してください。

▶ ブラウザーで試す — OCR も含め、コンバーターが wasm として動作します。デバイスの外にデータが送信されることはありません。

使い方

docling-rs report.pdf > report.md               # Markdown (streamed page by page)
docling-rs report.pdf --to json                 # docling JSON; also html, text, latex, dclx, chunks, images
docling-rs --input ./docs --output ./out        # a directory tree; --jobs N in parallel
docling-rs https://example.com/paper.pdf        # URLs, data: URIs and stdin (`-`) too
docling-rs https://www.youtube.com/watch?v=ID   # a YouTube video: title, description, caption transcript (--to vtt keeps the timing)
docling-rs --help                               # every flag: OCR, page ranges, images, enrichment, redaction …
from docling_rs import DocumentConverter       # was: from docling.document_converter import …
doc = DocumentConverter().convert("report.pdf").document
print(doc.export_to_markdown())
import { convertFileAsync } from 'docling.rs'
const { content } = await convertFileAsync('report.pdf', { to: 'markdown' })
use docling::{DocumentConverter, SourceDocument};
let result = DocumentConverter::new().convert(SourceDocument::from_file("report.pdf")?)?;
println!("{}", result.document.export_to_markdown());
curl -F [email protected] 'localhost:5001/v1/convert?to=md'   # the server; OpenAPI at /openapi.yaml

どの環境でも同じオプション、同じ出力を利用できます。すべてのオプションについては docs/OPTIONS.md を参照してください。

主な特長

  • Python版doclingからの移行: from docling_rs import DocumentConverter; result.document は本物の DoclingDocument です (移行ガイド)。
  • doclingが対応するすべての形式に加え、いくつかの追加形式にも対応 — ステータスの表に記載されている各形式は、稼働中のdoclingで検証済みです (適合性)。
  • doclingが提供するすべての出力形式に対応: Markdown(docling形式、またはより厳格な方言)、 docling JSON、HTML、プレーンテキスト、DocLang、LaTeX、Pandoc AST(→ pandoc経由でDOCX、EPUB、 Typstなどに変換)、WebVTT字幕、RAGチャンク、ページ画像 (出力形式)。
  • あらゆる言語から利用可能: Rust、Python、Node.js / Bun、ブラウザー(wasm、 完全なクライアントサイド処理)、C、C++、C#、Go、Java、Swiftは単一のCヘッダー経由で利用できます。 任意のHTTPクライアントやシェルからも利用できます (統合)。
  • docling-serveのドロップインサーバー: Open WebUIはこれをDoclingのコンテンツ抽出エンジンとして使用します。Docling Server URL を http://<host>:5001 に設定するだけで、n8n、Dify、LangChainのクライアントも変更なしで動作します (docling-rs serve、 Open WebUIの設定)。
  • AI エージェント(MCP): docling-rs mcp を使うと、Claude Desktop、Claude Code、 Cursor、VS CodeからMarkItDownの convert_to_markdown ツールに加え、JSONやチャンクなどに対応する convert を利用できます — uvx docling-rs-mcp、または claude mcp add docling -- docling-rs mcp を実行してください(MCP サーバー)。
  • LangChain: pip install "docling-rs[langchain]" — Rustエンジン上でlangchain-doclingの DoclingLoader を利用できます。インポートを1か所変更するだけです (詳細)。
  • AutoGen: pip install "docling-rs[autogen]" — DoclingIndexer はページ情報を保持する チャンクを使って任意のAutoGenメモリを構築し、DoclingConvertTool はエージェントによるドキュメントの読み取りを可能にします (詳細)。
  • 独自形式への対応: docling.rsが読み込めない形式、または独自の方法で読み込みたい形式のバックエンドを、 Rust、Python(@docling_rs.register_backend(extensions=["rtf2"])、MarkItDownの register_converterやプラグイン)またはNode.jsから、組み込み形式より優先して登録できます (プラグイン可能なバックエンド)。
  • RAG: docling-rag — REST APIとWeb UIを使って、チャンク分割、埋め込み、検索ができます (RAGサブシステム)。
  • さまざまな環境で実行可能: Linux x64 / arm64 / s390x、macOS(Apple Silicon)、 Windows向けのビルド済み版(CLI、wheel、npm)、ソースからのIntel Mac向けビルド、amd64およびarm64向けコンテナーに対応しています。NVIDIA CUDAとTensorRT、DirectML(ビルド済みWindows CLI)、CoreML、ブラウザーのWebGPUをオプションの高速化機能として利用できます(デフォルトでは無効) (GPU、 IBM Z)。

Claude Codeと_TENET_(ミニマルなAI駆動型開発フレームワーク)を用いて開発されました。

ステータス

docling のパイプラインにあるすべての形式に加え、docling が対応していない形式もいくつか変換できます。拡張子のないファイルや不明な拡張子のファイル、stdin、アップロード、data: URL は、内容に基づいて形式を判定します(InputFormat::detect、docling_rs.detect_format、detectFormat:パッケージ、OLE ファイル、PDF、画像、音声、動画、iWork、XML、JSON、ノートブック、メッセージなど)。拡張子に基づく処理に失敗したファイルも、内容を確認して実際の形式として変換し、警告を表示します。

カテゴリー形式
テキストとマークアップMarkdown、AsciiDoc、HTML、MHTML、LaTeX(複数ファイルの arXiv プロジェクト、数式、表);プレーンテキストとソースコード(.py、.yaml、.log など、あらゆるテキストファイル。コードブロックまたは段落として変換)、汎用 JSON/JSON Lines と XML(コードブロックとして保持);RSS/Atom/RDF フィード(.rss、.atom、.rdf、または拡張子のない .xml:フィードのタイトル、各項目の見出し、日付、本文);Jupyter ノートブック(.ipynb:Markdown セル、カーネルの言語によるコードセル、リクエストに応じた出力)
ワープロDOCX、Word 97–2004 .doc(および Word 6/95、1.x/2.0)、ODT、OpenOffice/StarWriter、AbiWord、WordPerfect、MS Works、EPUB、RTF
プレゼンテーションPPTX、PowerPoint 97–2003、ODP、OpenOffice/StarImpress
スプレッドシートXLSX、XLSB、Excel 97–2004、ODS、CSV/TSV、dBase、DIF、SYLK、Lotus 1-2-3、Quattro Pro、MS Works
図表・Apple iWorkVisio、SVG・Pages、Numbers、Keynote
PDF と画像PDF(レイアウト、TableFormer、OCR)、PNG、JPEG、TIFF、BMP、WebP、GIF、HEIC(オプトイン)、METS/GBS スキャン、DjVu
XML・docling ネイティブJATS、USPTO、XBRL、DocLang・docling JSON、DocTags、DCLX
メール・字幕・メインフレーム.eml、Outlook .msg・WebVTT・COBOL コピーブック経由の EBCDIC レコード
音声・動画WAV、MP3、M4A、AAC、OGG、FLAC;MP4、AVI、MOV、MKV、WebM、MPEG — ローカルの Whisper または Parakeet による処理に加え、動画からシーンフレームを抽出;YouTube の watch URL — 動画のタイトル、説明、キャプションの文字起こしをタイムスタンプ付きの項目として変換(言語は --asr-lang で指定)

各バックエンドの処理内容を含むすべての拡張子については、 docs/MIGRATION.md を参照してください。

ffmpeg のインストール(オプション — 動画のフレームサンプリングにのみ使用)

PATH に ffmpeg ≥ 4.x があれば動作します。docling.rs はバイナリをシェルから呼び出して出力を解析するため、開発用ヘッダーやライブラリは必要ありません。

  • Debian/Ubuntu:sudo apt-get install ffmpeg
  • Fedora:sudo dnf install ffmpeg-free(または RPM Fusion の ffmpeg)
  • Alpine:apk add ffmpeg
  • macOS:brew install ffmpeg
  • Windows:winget install ffmpeg(または choco install ffmpeg、または scoop install ffmpeg)。ダウンロードした zip からインストールする方法 (gyan.dev / BtbN)も利用できます。 展開した bin\ フォルダーを PATH に追加するか、PATH の設定を省略して DOCLING_FFMPEG に実行ファイルのパスを指定します。 set DOCLING_FFMPEG=C:\tools\ffmpeg\bin\ffmpeg.exe

ffmpeg -version で確認できます。DOCLING_FFMPEG は、どの OS でも使用するバイナリを上書きします。docling-rs-serve の Docker イメージには、ffmpeg がプリインストールされています。

最小限のデコード専用ビルド(--disable-everything --enable-…)も利用できます(#853)。docling.rs に必要なのは、file プロトコル、コンテナー用のデマルチプレクサー(mp4/mov/m4v 用の mov、mkv/webm 用の matroska、avi、mpeg)、各トラックの動画デコーダー(h264、hevc、vp8、vp9、av1、mpeg4、mpeg2video など)とそのパーサー、select、metadata、fps、scale、showinfo フィルター、png と wrapped_avframe エンコーダー、image2 と null マルチプレクサーです。音声コンポーネントは使用しません。文字起こしは Rust でデコードされ、シーンスキャンでは動画ストリームのみが処理されます。コンポーネントが不足すると、ffmpeg はシーンスキャンに失敗し(Encoder not found、Invalid argument)、動画は文字起こしのみとして変換されます。メッセージは DOCLING_RS_DEBUG=1 で確認できます。

## Microsoft MarkItDown との適合性

MarkItDown は、同じ種類のドキュメントを LLM 向けに Markdown に変換します。横並びで測定した結果は次のとおりです。MarkItDown 0.1.8 (markitdown[all])と docling.rs 2.33.0(リリースビルド)を、GPU なしの 4 vCPU で、このリポジトリのテストコーパスと MarkItDown 独自の OCR テストセットに対して測定しました (scripts/conformance/markitdown_compare.py)。

コーパス(ファイル数)MarkItDown、ウォームdocling.rs、ウォームコールド CLI 呼び出し、MarkItDown / docling.rs単語 F1表セル再現率見出し再現率
DOCX (38)4.22 s0.44 s1102 / 14 ms0.93 / 1.000.81 / 1.000.78 / 1.00
PPTX (8)0.30 s0.02 s974 / 6 ms0.81 / 0.970.62 / 1.000.86 / 1.00
XLSX (14)0.87 s0.15 s849 / 7 ms0.60 / 0.950.78 / 0.98— ¹
HTML (32)0.34 s0.05 s900 / 6 ms0.98 / 1.000.89 / 1.000.96 / 1.00
CSV (9)0.04 s0.01 s900 / 4 ms1.00 / 1.000.78 / 1.00—
EPUB (1)0.06 s0.01 s897 / 10 ms0.99 / 1.00—1.00 / 1.00
PDF (18)、完全なレイアウト + 表 + OCR7.6 s38.4 s984 / 830 ms0.63 / 0.9970.31 / 0.940.00 / 0.91
PDF (18)、テキストレイヤーのみ(--text-layer-only)7.6 s0.5 s—0.63 / 0.970.31 / 0.000.00 / 0.00

精度は Python docling の正解データに対して評価されるため、構造上 docling.rs に有利です。処理時間は正解データに左右されません。画像に描画されたテキスト(MarkItDown 独自の OCR テストセット)は、LLM を使わない MarkItDown の 0.00~0.33 に対し、docling.rs のローカル OCR では 1.00 の精度で読み取れます。手法、注意事項、および OCR の完全な比較については、docs/MARKITDOWN.md をご覧ください。

Marker との適合性

Marker(datalab の marker-pdf)は、レイアウトモデルと OCR を使用して、PDF および PDF に変換した Office ファイルを LLM 向けの Markdown に変換します。横並びで測定した結果は次のとおりです。Marker 2.0.0(marker-pdf[full]、CPU でのデフォルトの fast モード、OCR に llama.cpp を使用)と docling.rs 2.46.2(リリースビルド)を、このリポジトリのテストコーパス(scripts/conformance/marker_compare.py)で、vCPU 4 基、GPU なしで比較しました。

コーパス(ファイル数)Marker、ウォームdocling.rs、ウォームCLI のコールド呼び出し、Marker / docling.rs最大 RSS、Marker(クライアント + サーバー) / docling.rs単語 F1表セル再現率見出し再現率
PDF(18)、完全なレイアウト + 表 + OCR1312 s41 s22.0 s / 1.0 s10.5 GB / 3.1 GB0.93 / 0.9970.41 / 0.940.66 / 0.91
PDF(18)、テキストレイヤーのみ(--text-layer-only)1312 s0.44 s—— / 79 MB0.93 / 0.970.41 / 0.000.66 / 0.00
DOCX(38)654 s(1 件失敗)0.56 s23.4 s / 15 ms8.6 GB / 41 MB0.89 / 1.000.57 / 1.000.73 / 1.00
PPTX(8)3.4 s(3 件失敗)0.02 s21.8 s / 9 ms2.6 GB / 20 MB0.49 / 0.970.41 / 1.000.43 / 1.00
XLSX(14)164 s(2 件失敗)0.24 s22.8 s / 10 ms12.9 GB / 53 MB0.64 / 0.950.57 / 0.98— ¹
HTML(32)1514 s0.06 s29 min ² / 8 ms8.8 GB / 21 MB0.94 / 1.000.50 / 1.000.84 / 1.00
EPUB(1)10.5 s0.02 s60.7 s / 13 ms6.8 GB / 19 MB0.98 / 1.00—1.00 / 1.00

失敗したファイルのスコアは 0 です。¹ 見出しが含まれている正解データは XLSX 1 件のみです。 ² HTML ファイルの中央値は Marker で OCR が必要です。コールド呼び出しでは、最初に llama.cpp サーバーを起動し、1.2 GB の OCR モデルを読み込みます。

精度は Python 版 docling の正解データを基準に採点しているため、構造上 docling.rs に有利です。実行時間とメモリは正解データに左右されません。Marker は Office ファイル、HTML、EPUB を PDF にレンダリングし、そのレンダリング結果にビジョンモデルを実行して読み取ります。CPU では、テキストチェックでフラグが立ったページごとに、pip install marker-pdf ではインストールされない llama.cpp サーバー内の 1.2 GB の視覚言語 OCR モデルが使われます(このモデルがないと、PDF 4 件、DOCX 9 件、HTML 10 件、EPUB 1 件が完全に失敗します)。最大 RSS には Marker のクライアントと推論サーバーが含まれます。Marker の balanced モード(公開されているベンチマークで使用)は GPU が必要です。手法、注意事項、API 対応表については、docs/MARKER.md をご覧ください。

MinerU との適合性

MinerU(OpenDataLab)は、PDF、画像、Office ファイルを、LLM 向けに flash(テキストレイヤー、モデルなし)、basic(ONNX によるレイアウト/表/OCR モデル)、standard、advanced(llama.cpp 経由の視覚言語モデル)の4段階で Markdown と JSON に変換します。横並びでの測定結果 — MinerU 4.0.12 と docling.rs 2.46.2(リリースビルド)、4 vCPU、GPU なし — は、このリポジトリのテストコーパス (scripts/conformance/mineru_compare.py)を使用しています。

コーパス(ファイル数)MinerU flash、ウォームMinerU basic、ウォームdocling.rs、ウォームコールド CLI 呼び出し、MinerU flash / basic / docling.rsピーク RSS、MinerU flash / basic / docling.rs単語 F1(flash / basic / docling.rs)表セル再現率見出し再現率
PDF(18)、完全なレイアウト+表+OCR22.3 s123 s(+モデル読み込み 67 s)44.0 s3.6 s / 6.5 s / 1.2 s1.4 GB / 4.6 GB / 3.1 GB0.87 / 0.74 / 0.9970.28 / 0.44 / 0.940.57 / 0.58 / 0.91
PDF(18)、テキストレイヤーのみ(--text-layer-only)22.3 s—0.69 s— / — / —— / — / 80 MB0.87 / — / 0.970.28 / — / 0.000.57 / — / 0.00
DOCX(38)6.36 sflash のみ0.59 s2355 ms / — / 15 ms179 MB / — / 41 MB0.97 / — / 1.000.82 / — / 1.000.96 / — / 1.00
PPTX(8)0.21 s(1件失敗)flash のみ0.05 s2199 ms / — / 9 ms122 MB / — / 20 MB0.79 / — / 0.970.91 / — / 1.001.00 / — / 1.00
XLSX(14)0.68 sflash のみ0.19 s978 ms / — / 14 ms140 MB / — / 55 MB0.83 / — / 0.950.77 / — / 0.98— ¹
HTML(32)0.89 sflash のみ0.10 s2015 ms / — / 10 ms157 MB / — / 21 MB0.94 / — / 1.000.81 / — / 1.000.96 / — / 1.00
EPUB(1)0.09 sflash のみ0.02 s1909 ms / — / 16 ms99 MB / — / 19 MB1.00 / 1.00—1.00 / 1.00

失敗したファイルのスコアは0です。¹ 見出しを含む XLSX の正解データは1件のみです。

精度は Python docling の正解データを基準に採点しているため、構造上 docling.rs に有利です。所要時間とメモリ使用量は、この正解データに左右されません。MinerU は Office ファイル、HTML、EPUB を flash のみで解析します。CPU では basic がモデルを使用する段階です。MinerU の standard 段階(llama.cpp 経由の 1.2 B 視覚言語モデル)は、この CPU で1ページに138 sかかったため、表には含めていません。手法、注意事項、API 対応表については、 docs/MINERU.mdをご覧ください。

Python docling との適合性

各宣言形式を稼働中のライブラリと比較しています。Markdown はバイト単位、JSON は構造的に比較します(origin/version と再エンコードされた画像バイトを除き、すべてのキーと値を比較します)。最新の検証結果は docling 2.129.0 です (scripts/conformance/full_conformance.py。✅ all はすべてのファイルが一致したことを示します)。

形式ファイル数MarkdownJSON形式ファイル数MarkdownJSON
DOCX38✅ all✅ alliWork Pages1✅ all✅ all
HTML32✅ all31iWork Keynote5✅ all✅ all
PPTX8✅ all✅ allEBCDIC3✅ all✅ all
XLSX1413 ²13 ²JATS7✅ all✅ all
ODF7✅ all✅ allDocLang15✅ all✅ all
CSV9✅ all6AsciiDoc5✅ all✅ all
Markdown11✅ all6USPTO9✅ all✅ all
DeepSeek-OCR Markdown3✅ alln/aEPUB1✅ all✅ all
WebVTT4✅ all✅ allLaTeX8✅ all7 ¹
Email (.eml)2✅ all✅ all

¹ 1706.03762:1 つの tabular のセルでは、一貫した row_span/col_span が設定されています。上流ではスパンをオフセットのみに記述しています。PDF の図には画像ペイロードがありません(上流では pypdfium2 でレンダリングされます)。

² xlsx_02_sample_sales_data:20 個の日付セルは、docling PR #4628 の数値書式ルール(#634)に従って出力されます。このルールは、リリース済みの docling ではまだ適用されません。

差分と該当するファイルの詳細は、docs/MIGRATION.md をご覧ください。 PDF/画像のパイプラインは、決定論的なスナップショットベースラインで固定されており、 docling のグラウンドトゥルースとの照合で評価されています。 docs/PDF_CONFORMANCE.md

パフォーマンス

各形式につき 1 つのフィクスチャを、公開済みの Python docling と Rust リリースバイナリで処理しています (scripts/test/performance.sh)。docling ÷ docling.rs で、数値が大きいほど Rust の優位性が高いことを示します。

ファイルサイズピークメモリ比CPU 比ウォーム変換の高速化倍率
picture_classification.pdf(PDF)208 KB6.5× 少ない0.8×10.6×
docx_rich_tables_01.docx(DOCX)3.1 MB39× 少ない1.2×19×
wiki_duck.html(HTML)240 KB57× 少ない1.3×47×
elife-56337.nxml(JATS XML)180 KB59× 少ない1.2×10×
xlsx_04_inflated.xlsx(XLSX)168 KB51× 少ない0.9×18×
powerpoint_with_image.pptx(PPTX)80 KB55× 少ない1.2×3.1×
wiki.md(Markdown)8 KB57× 少ない1.2×1.2×
csv-comma.csv(CSV)4 KB64× 少ない1.2×0.6× †

† 4 KB の CSV はマイクロ秒で変換されるため、Rust 自体のプロセス起動が測定値を左右します。エンドツーエンドでは 870× 高速です。

宣言形式では、docling の約 750 MB(これらの形式でも torch をインポートします)に対して数 MB のメモリしか使用せず、エンドツーエンドで 300~870× 短時間で処理が完了します。PDF のピークメモリは 2.4 GB に対して 0.37 GB で、エンドツーエンドの変換は 28.5× 高速です。処理時間の内訳と、効果がないことを確認した要因については、次をご覧ください。 docs/PDF_CONFORMANCE.md

Integration — お使いの言語から docling.rs を利用する

1 つのエンジンに複数のインターフェースがあり、どこから利用してもオプションと出力は同じです。

使用言語・環境使用するものインストール
Rustdocling クレートcargo add docling
シェル/CI ジョブバッチモードも含む docling-rs CLIリリースバイナリ · cargo install docling-cli · ghcr.io/docling-project/docling-rs
HTTP に対応するものdocling-serve、OpenAPI 3.1ghcr.io/docling-project/docling-rs-serve · cargo install docling-serve
Node.js / Bun / ElectronN-API アドオンの docling.rsnpm i docling.rs (docling.rs-cuda)
Pythondocling、MarkItDown、Marker、MinerU の API を提供する docling-rspip install docling-rs (docling-rs-cuda)
LangChain / LlamaIndexDoclingLoader(langchain-docling の API) · DoclingReader(llama-index-readers-docling の API)pip install langchain-docling-rs · pip install llama-index-readers-docling-rs
ブラウザー/Tauri/PWA完全にクライアント側で動作する docling.rs-wasmnpm i docling.rs-wasm
C、C++、C#、Go、Java、Swift、Zigdocling.h を 1 つ提供する docling-ffiリリースアーカイブ docling-ffi-<tag>-<target>

すでに Cargo を使っているなら Rust、スクリプトやバッチジョブには CLI、 複数のサービスで 1 つのウォームなパイプラインを共有するなら serve、 プロセス内で使うなら Node / Python、ドキュメントをユーザーのマシンから外部に出せない場合は wasm、 C を呼び出せるものには FFI をお使いください。

Rust API

use docling::{DocumentConverter, SourceDocument};

let converter = DocumentConverter::new();
let result = converter.convert(SourceDocument::from_file("input.md")?)?;

println!("{}", result.document.export_to_markdown()); // Markdown
println!("{}", result.document.export_to_json());     // docling DoclingDocument JSON

すべての変換オプションは、どのインターフェースからも同じ方法で設定できる、シリアライズ可能な 1 つの構造体 docling::ConvertOptions にまとめられています(docs/OPTIONS.md)。 ライブラリーガイドでは、出力形式、エラー処理、チャンク分割、画像抽出、ストリーミング、OCR、PDF の設定、リモート VLM パイプライン、独自のバックエンドの登録について説明しています(#680)。

HTTP 変換 API — docling-rs serve

docling-serve は、リクエスト間で共有される 1 つのウォームな PDF/画像パイプラインを使って、HTTP 経由でコンバーターを公開します(同じ PDF の再処理ではモデルの読み込みを省略します)。ストリーミング Markdown、バッチ処理、ZIP 入力、非同期ジョブ、GET / で利用できる対話型テストフォーム、GET /openapi.yaml で利用できる OpenAPI 3.1 の仕様を提供します。また、Python 版 docling-serve のルートも提供するため、Open WebUI、n8n、Dify、LangChain のクライアントをそのまま利用できます。

docker run -p 127.0.0.1:5001:5001 ghcr.io/docling-project/docling-rs-serve
curl -F [email protected] localhost:5001/v1/convert                # Markdown
curl -F [email protected] 'localhost:5001/v1/convert?to=json'    # docling JSON
curl -F [email protected] -F [email protected] localhost:5001/v1/convert    # a batch

リクエストオプション、サーバーフラグ、非同期ジョブ、docling-serve のルート、Open WebUI の設定については、crates/docling-serve/README.md をご覧ください。コンテナーとサイジングについては、docs/DEPLOYMENT.md をご覧ください。

MCP サーバー — docling-rs mcp

docling-rs mcp は、デフォルトの docling-rs バイナリとイメージに含まれる Model Context Protocol サーバーです。エージェントは MarkItDown の convert_to_markdown(uri) ツールを利用できます。ツール名と仕様は同じなので、コマンドを変更するだけで markitdown-mcp の構成を切り替えられます。さらに、convert(uri, to, options) と list_input_formats() も利用できます。

{
  "mcpServers": {
    "docling": { "command": "docling-rs", "args": ["mcp", "--root", "/Users/me/Documents"] }
  }
}
claude mcp add docling -- docling-rs mcp --root ~/Documents     # Claude Code
uvx docling-rs-mcp --root ~/Documents                           # the same server from PyPI

ローカルファイルの読み取りは --root の配下に制限されます。URL の取得には --allow-url-fetch が必要です。 公式 MCP レジストリ および Smithery に掲載されています。PyPI ランチャー、Docker、Streamable HTTP(--http)、セキュリティモデル、メモリーの動作については、 crates/docling-cli/README.md をご覧ください。

RAG サブシステム

crates/docling-rag はドキュメントをチャンクに分割し、 それらを埋め込み(Ollama、Gemini、またはローカルの ONNX モデルを使用)、保存し (SQLite + sqlite-vec または PostgreSQL + pgvector)、検索します。ハイブリッド検索、 複数クエリ検索、HyDE 検索、評価ハーネス、REST API、組み込みの検索 UI を備えています。

ブラウザーで — docling-wasm

宣言型コンバーターと PDF テキストレイヤーは WebAssembly にコンパイルされます。 npm i docling.rs-wasm を実行し、convert(bytes, filename, to) を呼び出すと、完全に クライアント側で実行されます。サーバーは不要で、gzip 圧縮後のモジュールは約 3.4 MB、 ブラウザー内 OCR もオプションで利用できます。詳細とデモページ: crates/docling-wasm。

Node.js、Python、C

  • Node.js / Bun — npm の docling.rs は ビルド済みの N-API アドオンです。同期・非同期変換、ストリーミング、チャンク分割、ZIP バッチ、ウォーム状態の Pipeline を利用できます。
  • Python — PyPI の docling-rs (NVIDIA 用の docling-rs-cuda)は、docling の DocumentConverter と本物の docling-core DoclingDocument、MarkItDown の API、LangChain および AutoGen との統合を提供します。
  • C ABI — docling-ffi:C、C++、C#/.NET、Go、 Java、Swift、Zig 向けの単一ライブラリと単一の docling.h。公開されているすべての リリースでビルド済みです。

コンテナーにデプロイする

イメージ内容
ghcr.io/docling-project/docling-rs-serveHTTP API。モデルを組み込み済み(linux/amd64、linux/arm64)
ghcr.io/docling-project/docling-rsCLI。エントリーポイントは docling-rs、作業ディレクトリは /data
…-serve-cuda · …-rs-cudaCUDA 13 + cuDNN 9 対応の同等イメージ(linux/amd64)

Compose ファイル(スタンドアロン、Caddy TLS、CUDA)、環境変数、サイズ設定、 オブザーバビリティについては、docs/DEPLOYMENT.md を 参照してください。

ML モデルの取得

PDF/画像パイプラインには ONNX モデル(RT-DETR レイアウト、PP-OCR、TableFormer)が 必要で、音声には Whisper が必要です。download_dependencies.sh は このリポジトリの リリースからモデルを取得し、 ./.models に保存します。各インターフェースはこの場所を参照します(--cli の場合は 代わりに、cargo でインストールしたバイナリの隣に保存します)。

scripts/install/download_dependencies.sh                       # from a checkout
curl -fsSL https://raw.githubusercontent.com/docling-project/docling.rs/master/scripts/install/download_dependencies.sh | sh         # anywhere

すべてのアセットとオプション(ASR プリセット、エンリッチメントモデル、PII マスキング用 NER、INT8、フォント)、GPU 実行プロバイダー、環境変数による オーバーライドについては、docs/MODELS.md を参照してください。 ビルド済み ONNX Runtime のない IBM Z などのターゲットについては、 docs/IBMZ.md を参照してください。

コントリビューション

バグ報告とプルリクエストを歓迎します。ビルドおよびテスト用コマンド、適合性 ワークフロー、変更時に従うべき規約については、 CONTRIBUTING.md を参照してください。

ライセンス

上流の docling と同じ MIT ライセンスです。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。