您可以让大型语言模型(LLM)或 AI 代理从文档中提取数据,并让答案来源于文档引擎,而不是模型对粘贴文件的读取。使用在 Docker 容器中本地运行的 GroupDocs.Parser.Mcp 服务器,一个提示即可返回文本、表格、嵌入的图像或条形码值:
invoice.pdf 上写了什么,它的表格里有什么?
带有配置和故障排除的逐步版本请参阅文档:How to extract document data with AI agents using MCP。
为什么 AI 代理需要提取工具?
聊天模型只能知道放入其上下文窗口的内容。将 PDF 粘贴到聊天中,模型只能处理客户端设法从中展平的文本,因此列会塌陷,扫描件可能为空,且没人能判断是哪种情况。提取服务器将这一步从模型中移出:代理调用工具,文档引擎在容器内部读取文件,代理收到结果。随后模型只做它擅长的事——对交付给它的值进行推理。
GroupDocs.Parser.Mcp 向兼容 MCP 的客户端(如 Claude Desktop、Claude Code、Cursor、带 GitHub Copilot 的 VS Code 和 Windsurf)公开七个工具。五个用于提取数据(extract_text、extract_tables、extract_images、extract_barcodes、extract_metadata),一个用于检查(get_document_info),一个用于报告授权状态(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 in 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 返回文件名、类型、页数和大小且不做任何修改,而一次单页的 extract_text 调用则显示是否存在文本。两次廉价调用即可区分“文件为空”和“文件是图像”。此服务器不包含 OCR 步骤,扫描中的印刷文字仍是像素。代码是例外,方法 3 进行说明。
方法 3:提取文本提取不到的内容
表格、图像和条形码各有专用工具,因为将它们展平为文本会丢失其价值。
extract_tables返回可在聊天中渲染的 Markdown 表格,或在传入format: "json"时返回 JSON 行。extract_images将每个嵌入的图像保存到输出文件夹,文件名为<basename>_image<N>.<ext>。extract_barcodes解码 Code128、QR Code、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 |
许多流水线会使用两台服务器:先转换后解析。
在本地使用 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 的客户端配置请参见Register in AI clients。
限制有哪些?
- 评估模式。 未授权时提取功能受限;具体限制请查看库的licensing page。请先让代理运行
get_license_status,并将未授权的输出视为烟雾测试,而非完整读取。 - 无 OCR。 扫描件中的文字无法提取。
- 仅限 Docker。 需要预先安装 Docker;镜像体积较大,请只拉取一次。
FAQ
我可以在本地使用 Claude 提取 PDF 文本,而不上传文件吗?
可以。服务器在您机器的容器中运行,Claude Desktop 通过 stdio 与其通信,文件从挂载的文件夹读取,未发送到任何提取服务。
为什么代理对某些 PDF 返回空结果?
文件可能是没有文本层的扫描件。让代理运行 get_document_info 并进行一次单页 extract_text 调用以确认,然后对代码使用 extract_barcodes,对文字使用 OCR 工具。
GroupDocs.Parser.Mcp 有 dnx 命令吗?
没有。此产品仅支持 Docker,因此所有安装方式都是 docker run 或通过 MCP 客户端入口启动 Docker。
深入了解
- 文档、权威指南:How to extract document data with AI agents using MCP
- 文档中心:GroupDocs.Parser MCP Server
- 下一步:Tables out of PDFs, into JSON, without an LLM guessing the cells
- 下一步:Enforce consistent data capture with automated extraction workflows using MCP
- 下一步:Scan-to-record automation with AI agents
- 本地部署与安全模型:3 architectures for AI document processing, and the one that keeps files inside your network
- 问题讨论:GroupDocs Parser forum
- 源代码:GroupDocs.Parser.Mcp on GitHub