您可以让 AI 代理查看文档页面,而不是读取其文本转储。GroupDocs.Viewer.Mcp 服务器将 PDF、Word、Excel 或 PowerPoint 文件的任意页面渲染为 PNG 并返回给代理,并且它在您的机器本地完成此操作:
报告.pdf 有多少页?然后显示最后一页。
文档中提供了带有配置和故障排除的逐步版本: 如何让 AI 代理查看文档页面.
为什么在真实文档上文本提取会失败?
文本提取器按阅读顺序返回字符。它不会返回两段之间的条形图、角落里的 “APPROVED” 印章、价格表的列布局,或者完全没有字符的扫描页。基于这些输出工作的代理会自信地回答它只看到一半的文档,而缺失的那一半通常正是您所询问的部分。
解决方案并不是更好的提示,而是不同的输入:将页面作为图像提供给接受图像输入的模型。
错误做法:通过文本提取器处理所有内容
常见的默认做法是将文档转换为文本,将文本粘贴到上下文窗口并提问。它适用于散文。但在四个方面会出现问题,您可以在任何拥有的文档上验证:
- 布局消失,因此无法回答 “总计在右侧列吗?”。
- 图表和示意图中的数字消失,因为它们是绘制的,而不是键入的。
- 印章、签名和手写内容消失。
- 扫描的 PDF 没有文本。
模型无法修复在文档被读取之前就已丢失的信息。
正确做法:将 PDF 页面渲染为图像供 LLM 使用
render_page 将单页渲染为 PNG,内联返回图像给代理,并将副本保存到您的输出文件夹,文件名为 <name>_page<N>.png。服务器支持 170 多种格式,包括 PDF、DOCX、XLSX、PPTX、ODT、RTF、HTML、EML 和 MSG。具备视觉能力的模型随后会像您一样看到该页面。
代理不应猜测页码,因此它将 render_page 与 get_view_info 配合使用,后者返回文件类型、页数以及每页的尺寸,而无需渲染任何内容。第三个工具 get_license_status 则报告当前的授权模式。
如何为 Claude、Cursor 或 Copilot 运行服务器?
Docker 镜像是自包含的:
docker run --rm -i -v $(pwd)/documents:/data \
ghcr.io/groupdocs-viewer/viewer-net-mcp:latest
在安装了 .NET 10 SDK 后,dnx GroupDocs.Viewer.Mcp --yes 可在不使用 Docker 的情况下运行相同的服务器。将其注册到 Claude Desktop、Claude Code、Cursor、带有 GitHub Copilot 的 VS Code、Windsurf 等客户端;中心页面列出了每个客户端的精确配置。客户端将服务器作为子进程启动,并通过标准输入输出与其通信,因此不存在入站端口,也无需保护端点。
示例会话
这是一幅基于两种工具文档行为构建的示例,而非实际截图。
You: How many pages does report.pdf have? Then show me the last one.
Agent: [calls get_view_info on report.pdf]
report.pdf is a PDF with 2 pages, both 612 x 792 points (US Letter).
[calls render_page with page = 2]
Page 2 of 'report.pdf' Saved to: <output folder>/report_page2.png
Here is what page 2 shows: ...
图像会在支持显示的客户端中内联出现。文本回复是代理对页面所见的描述。
代理决定什么,引擎完成什么?
代理决定哪一页能够回答问题以及向模型询问什么。引擎负责必须精确的部分:打开文件、按照文档的分页方式进行分页并生成 PNG。模型无需猜测页面布局,因为它直接接收渲染后的页面。
真实限制
- 评估模式。 未授权时,渲染的页面会带有评估水印,且服务器进程最多只能打开 15 个文档。水印可能遮盖您询问的细节。请让代理询问 “viewer 服务器是否已授权?” 以便在依赖其读取结果之前调用
get_license_status。 - 仅 PNG。 输出为 PNG 图像;没有其他格式选项。
- 无页码检查。
render_page不会拒绝超出最后一页的页码。请先使用get_view_info检查页数。 - 模型必须接受图像。 对于仅文本模型,代理仍会获得保存的文件路径,但无法告诉您页面内容。
- 图像体积大。 每页都是内联 PNG,通常几百千字节。仅渲染任务所需的页面,而不是整个文件。
- 有一项会离开机器。 渲染的图像会发送给代理,再由代理传递给其使用的模型。使用本地托管的模型则全部保留在机器上。
常见问答
Claude 能看到我的 PDF 页面及其布局吗? 可以,只要将 PDF 页面渲染为图像且所使用的 Claude 模型接受图像输入。render_page 在本地生成该图像并返回给客户端。
我需要将文档上传到任何地方才能渲染吗? 服务器从您挂载的文件夹读取文件并在旁边写入图像;文档不会被服务器上传。页面图像会发送到您的代理模型。
它是否支持 Excel 和 PowerPoint,而不仅仅是 PDF? 支持。PowerPoint 为每张幻灯片渲染一张图像,Excel 工作表会被拆分为页面,可通过 get_view_info 查看页数。
深入了解
- 文档,权威指南: 如何让 AI 代理查看文档页面
- 文档中心: GroupDocs.Viewer MCP Server
- 下一篇: 在渲染文档前 AI 代理应提出的 3 个问题
- 下一篇: 使用 MCP 自动化生成报告的截图级页面图像
- 下一篇: 答案在图表中时:AI 代理通过 MCP 阅读图示和扫描页
- 本地部署与安全模型: AI 文档处理的 3 种架构,以及保持文件在您网络内部的方案
- 提问: GroupDocs Viewer forum
- 来源: GroupDocs.Viewer.Mcp on GitHub