LLMやAIエージェントにドキュメントからデータを抽出させ、回答を貼り付けたファイルのモデルによる読み取りではなく、ドキュメントエンジンから取得させることができます。GroupDocs.Parser.McpサーバーをローカルのDockerコンテナで実行すると、1つのプロンプトでテキスト、テーブル、埋め込み画像、またはバーコードの値を取得できます。
invoice.pdfには何が書かれていて、テーブルには何が入っていますか?
設定とトラブルシューティングを含むステップバイステップ版はドキュメントにあります: AIエージェントを使用してMCPでドキュメントデータを抽出する方法.
AIエージェントが抽出ツールを必要とする理由は何ですか?
チャットモデルはコンテキストウィンドウに配置された情報しか知りません。PDFをチャットに貼り付けると、モデルはクライアントが平坦化できたテキストに基づいて動作するため、列が崩れたり、スキャンが空のままになったりし、どちらが起きたか判別できません。抽出サーバーはこのステップをモデルから切り離します:エージェントがツールを呼び出し、ドキュメントエンジンがコンテナ内のファイルを読み取り、エージェントが結果を受け取ります。モデルは受け取った値について推論することに専念します。
GroupDocs.Parser.McpはClaude Desktop、Claude Code、Cursor、GitHub Copilot付きVS Code、WindsurfなどのMCP互換クライアントに対して7つのツールを提供します。5つはデータ抽出(extract_text、extract_tables、extract_images、extract_barcodes、extract_metadata)、1つは情報取得(get_document_info)、もう1つはライセンス状態の報告(get_license_status)です。
方法1:値を要求し、エージェントにツールを選択させる
リクエストをドキュメントに関する質問として表現します。エージェントは質問をツールにマッピングします。
| あなたの質問 | エージェントが呼び出すツール |
|---|---|
| 「何が書かれていますか?」 | extract_text |
| 「テーブルには何がありますか?」 | extract_tables |
| 「誰が作成し、いつですか?」 | extract_metadata |
| 「図を保存してください。」 | extract_images |
| 「バーコードは何をエンコードしていますか?」 | extract_barcodes |
extract_textはPDF、DOCX、XLSX、PPTX、TXT、HTML、CSV、EML、MSG、RTF、ODT、EPUBなど50以上のフォーマットをサポートしているため、同じプロンプトがメールやスプレッドシートでも機能します。非常に大きな出力はマーカーで切り捨てられるので、長いレポートはページごとに尋ねます:
この40ページのレポートのテキストをページごとに抽出し、各セクションを要約してください。
例のセッション(抜粋):
You: What does invoice.pdf say, and what is its table?
Agent: [calls extract_text, extract_tables]
Invoice 2026-0412 from Northwind Supplies, dated 3 October.
The table has 3 rows (item, quantity, amount); the amounts add up to 1,240.00.
方法2:空の結果を信頼する前にテキスト層を確認する
デジタルで作成されたPDFはテキスト層を持ちますが、スキャンしたものは持ちません。スキャンページではextract_textはほとんど、または何も返さず、これはファイルの正しい状態を示しています。エージェントが抽出する前にこれをテストさせます:
このドキュメントは何ページで、抽出可能なテキストがありますか?
get_document_infoはファイル名、タイプ、ページ数、サイズを変更せずに返し、1ページだけのextract_text呼び出しでテキストの有無を確認できます。2回の低コスト呼び出しで「このファイルは空」か「このファイルは画像」かを区別できます。このサーバーにはOCRステップがないため、スキャンの印刷文字はピクセルのままです。コードは例外であり、方法3で取り上げます。
方法3:テキスト抽出では到達できないものを取り出す
テーブル、画像、バーコードはそれぞれ専用のツールがあります。テキストに平坦化すると、これらの有用性が失われるためです。
extract_tablesはチャットで表示できるMarkdownテーブル、またはformat: "json"を指定した場合はJSON行を返します。extract_imagesは埋め込まれたすべての画像を出力フォルダーに<basename>_image<N>.<ext>という名前で保存します。extract_barcodesはCode128、QRコード、PDF417、DataMatrix、EAN-13、EAN-8、UPC、Aztecなどをデコードし、スキャンページ上でも動作します。エンジンのモデルがラスタ画像内のコードを検出するためです。
invoice.pdfの明細項目をJSONとして抽出し、次にページ1の画像を保存してください。
エージェントは抽出が必要ですか、変換が必要ですか?
これらは異なる作業であり、間違ったサーバーを選ぶと混乱が生じます。
| 必要なもの | サーバー |
|---|---|
| ドキュメントからの値:テキスト、テーブル、バーコード、プロパティ | GroupDocs.Parser.Mcp |
| レイアウトを保持した別フォーマットへの変換 | GroupDocs.Conversion.Mcp |
| RAG用のドキュメント全体のクリーンなMarkdown | GroupDocs.Markdown.Mcp |
| メタデータの編集または削除(読み取りだけでなく) | GroupDocs.Metadata.Mcp |
多くのパイプラインは2つのサーバーを使用します:取り込み用に変換し、抽出用に解析します。
Dockerでローカル実行
このサーバーはDockerイメージとしてのみ提供されます。エンジンは約234 MBのONNXモデルを組み込んでおり、NuGetパッケージが250 MBの制限を超えるため、dnxコマンドはありません。ドキュメントフォルダーを/dataとしてマウントします:
docker run --rm -i -v $(pwd)/documents:/data \
ghcr.io/groupdocs-parser/parser-net-mcp:latest
AIクライアントはコンテナをstdio経由の子プロセスとして起動します。受信ポートはなく、ドキュメントはマシン上に残ります。Claude Desktop、Claude Code、VS Code、Cursor、Windsurf、Cline、Codex向けのクライアント別設定はAIクライアントでの登録にあります。
制限は何ですか?
- 評価モード。 ライセンスがない場合、抽出は制限されます。正確な制限はライブラリのlicensing pageに記載されています。エージェントにまず
get_license_statusを実行させ、未ライセンスの出力は完全な読み取りではなくスモークテストとして扱ってください。 - OCRなし。 スキャン画像のテキストは抽出できません。
- Dockerのみ。 Dockerがインストールされている必要があります。イメージは大きいため、一度だけプルしてください。
よくある質問
Claudeをローカルで使用してPDFからテキストを抽出できますか、アップロードせずに?
はい。サーバーはマシン上のコンテナで実行され、Claude Desktopはstdioを通じて通信するため、ファイルはマウントされたフォルダーから読み取られ、抽出サービスへ送信されません。
なぜエージェントは一部のPDFで何も返さないのですか?
おそらくテキスト層のないスキャン画像です。エージェントにget_document_infoと1ページだけのextract_textを実行させて確認し、コードはextract_barcodes、文字はOCRツールを使用してください。
GroupDocs.Parser.Mcpにdnxコマンドはありますか?
いいえ。この製品はDocker専用で、インストールはすべてdocker runまたはDockerを起動するMCPクライアントエントリを使用します。