要使用 AI 代理批量提取文档数据,将模式写入提示,指向一个文件夹,并在最后要求提供异常列表。GroupDocs.Parser.Mcp 服务器在 Docker 容器中本地读取,因此每个文件都经过相同的提取工具,且没有文档离开机器。LLM 决定工作顺序;引擎读取文件。
对于文档文件夹中的每个 PDF:提取表格为 JSON,汇总 amount 列,并给我一个包含文件名、总计、页数的表格。
带有配置和故障排除的逐步版本位于文档中:一次性从文件夹中的文档提取数据.
手动提取为何会产生不一致的数据?
当人们一次只从文档中复制一个值时,每个文件的处理方式略有不同:有人包括税费,有人不包括,第三个人会跳过布局奇特的文件。直到比较总计时,这种不一致才会显现。工作流通过明确规则并以相同方式应用于每个文件来解决此问题。使用代理时,规则写在一个提示中,提取工具在第一个文件和第二百个文件上表现完全相同。
如何构建工作流?
将文件夹挂载到容器的 /data,设置 GROUPDOCS_MCP_STORAGE_PATH=/data,并给代理以下步骤。
- 检查许可证。 提示:“运行 get_license_status 并告诉我模式。” 未授权的提取受到限制,对整个文件夹的部分读取会产生悄然错误的数据集。
- 对文件夹进行分流。 提示:“对于每个文件,报告格式、页数以及文本提取是否返回任何内容。”
get_document_info提供类型、页数和大小,单页的extract_text调用显示是否存在文本。 - 修正模式。 提示:“对于每个可读取的文件,将明细表提取为 JSON。列:item、quantity、amount。汇总 amount 列。” 这使用
extract_tables。 - 显式收集失败。 提示:“列出所有失败、受密码保护或未返回表格的文件,并说明原因。” 只报告成功的批次会隐藏异常。
- 写入输出。 提示:“在输出文件夹中将每个文件写入一行 CSV。”
文件在容器内部通过名称解析,因此代理传递的是 invoice-014.pdf,而不是主机路径。
代理决定什么,引擎执行什么?
| 步骤 | 代理决定 | 引擎执行 |
|---|---|---|
| 分流 | 要从哪些文件提取 | 报告类型、页数和大小;extract_text 显示是否存在文本 |
| 捕获 | 每个文件需要使用的工具 | 返回文件中的文本或表格行 |
| 验证 | 总计是否与文本匹配 | 无;代理进行比较 |
| 异常 | 哪些文件列入列表 | 返回错误文件的失败信息 |
| 输出 | CSV 的结构 | 无;代理写入 |
划分点就在此。捕获数值是确定性的引擎工作;判断和组装则是代理的职责。
示例会话(节选):
You: Check the license, triage the folder, then extract line items from every readable PDF and list the exceptions.
Agent: [calls get_license_status, get_document_info x12, extract_text, extract_tables x10]
License mode: evaluation. Results below are a smoke test.
12 files: 10 with a text layer, 1 scan, 1 password-protected.
Totals written for 10 files. Exceptions: scan-007.pdf (no text layer), hr-020.pdf (password required).
不符合条件的文件会怎样?
扫描件没有文本层,因此表格提取会返回空。可以将其放置一旁,或在页面包含追踪号或订单码时让代理分支到 extract_barcodes。该兜底列表同时充当档案中哪些部分是扫描件的清单。受密码保护的文件会在调用时失败,因此让代理报告并继续;当你拥有密码时,工具接受 password 参数。
如何保持大规模运行的成本可控?
- 按页限制 当数据位于已知位置时,例如每张发票的第一页。
- 批量避免使用
extract_images。 它会为每个图像写入一个文件,包含插图的报告文件夹会产生数百个文件。 - 关注计量使用。 在计量许可下,每次调用都会计费处理,因此有针对性的扫描比全面扫描成本更低。
限制是什么?
没有许可证时,提取受到限制;具体限制请参见库的 许可页面。服务器没有 OCR,因此无法捕获扫描文本。它仅以 Docker 镜像形式提供;没有 dnx 命令。
如何注册服务器?
针对 Cursor、Claude Desktop 或 Windsurf 的最小手动条目,使用来自 Parser 配置文档的容器路径:
{
"mcpServers": {
"groupdocs-parser": {
"command": "docker",
"args": ["run", "--rm", "-i",
"-v", "/path/to/documents:/data",
"-e", "GROUPDOCS_MCP_STORAGE_PATH=/data",
"ghcr.io/groupdocs-parser/parser-net-mcp:latest"]
}
}
}
常见问题
我可以在不上传的情况下使用 AI 处理发票文件夹吗?
是的。容器读取挂载的文件夹并通过 stdio 与您的客户端通信,因此发票保留在您的机器上。
如何在本地批量提取 PDF 文本?
让代理遍历文件夹,对每个文件调用 extract_text,对长文档逐页提取,因为非常大的输出会被标记截断。
代理能自动从文档中录入数据吗?
它可以将提取的行组装成 CSV 或汇总表。在将任何数据输入其他系统之前,请先检查异常列表。
深入了解
- 文档,权威指南:一次性从文件夹中的文档提取数据
- 文档中心:GroupDocs.Parser MCP Server
- 从这里开始:使用 AI 代理和 MCP 提取文档数据的 3 种方法(文本、表格、图像)
- 相关内容:从 PDF 表格导出为 JSON,且无需 LLM 猜测单元格
- 相关内容:使用 AI 代理的扫描转记录自动化
- 本地部署与安全模型:AI 文档处理的 3 种架构,以及保持文件在网络内部的方案
- 问题讨论:GroupDocs Parser 论坛
- 源代码:GitHub 上的 GroupDocs.Parser.Mcp