您可以让大型语言模型(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。

深入了解