AI 代理可以检查 PDF 是否已数字签名,并告诉您是谁签署的,且在本地完成,不会将文件离开您的机器。有用的答案不是“verified”。而是签署人、颁发者、有效期以及检查的签名类型。请在一次提示中请求这些信息:
谁签署了 contract_signed.pdf,使用了哪个证书,何时签署?请说明您检查了哪种类型的签名。
带有配置和故障排除的逐步版本请参见文档: How to verify signed documents with an AI agent.
为什么仅用一个词“verified”是糟糕的答案?
因为 “这是否已签名?” 与 “此签名是否有效?” 是不同的问题,第二个只有在数字签名的情况下才有明确答案。模型读取页面并看到印章或二维码时,可以自信地说 “已签名”,但它并未检查任何加密内容。避免这种情况的唯一方法是为代理提供返回结构化数据的引擎,并让代理报告这些数据,而不是给出裁决。
GroupDocs.Signature.Mcp 服务器提供了该引擎。配合 Claude Desktop、Claude Code、Cursor、GitHub Copilot 或其他 MCP 客户端使用时,它作为本地进程运行,因而代理直接从文件中读取签名数据,而不是从渲染的像素中猜测。
错误做法:让模型直接查看文档
如果您将 PDF 粘贴到聊天中并询问是否已签名,模型只能看到文本和图像。它可以注意到姓名、日期或手绘签名,但看不到文件的加密结构,因而无法区分基于证书的签名和其图片。自信的 “是的,这已签名” 只是对外观的描述。
每种签名类型实际证明的内容
文档明确说明了如何解读结果,代理应当复述如下:
| 结果 | 含义 |
|---|---|
| Digital signature valid | 文件自签名后未被更改,且证书链验证通过 |
| Digital signature invalid | 文件在签名后被更改,或证书未通过验证 |
| Text, QR or barcode “verified” | 检测到预期的标记,但不说明是否被篡改 |
| No signatures found | 未签名,或使用该格式不支持的方式签名 |
未指明签名类型的答案实际上提供的信息比表面少。这也是为何上面的提示以 “说明您检查了哪种类型的签名” 结尾。
正确做法:请求记录,而非裁决
verify 工具接受 text、qrcode、barcode、digital 或 all 类型,并返回带有 succeeded 与 failed 计数的 isValid。它不提供签署人或证书信息,因此不能取代下面的记录。当 verify 与 search_digital_signatures 的结果不一致时,请同时报告两者,并以详细记录为准。
可靠的答案来源于 search_digital_signatures。对于每个数字签名,它返回签署人姓名、颁发者、证书序列号、有效期、签署时间戳、有效性状态以及签名附带的任何备注。这正是审计所需的记录。在决策时,请保留这些数据,而不是代理对其的文字描述。
示例会话(节选)
You: Who signed contract_signed.pdf, with which certificate, and when?
Say which type of signature you checked.
Agent: [search_digital_signatures] file=contract_signed.pdf
Type checked: digital (certificate-backed).
Signatures found: 1
- Signer: Dana Whitfield, issued by Example Corporate CA, serial 4F2A91C7
- Signed 2026-09-14 10:32; certificate valid 2025-11-01 to 2027-10-31
- Status: isValid = true; signing time falls inside the certificate validity period
I checked digital signatures only. I did not evaluate any text stamps or QR codes.
示例输出:文件名、签署人姓名和序列号均为虚构。工具返回上述字段。
为什么签名会显示为无效?
三大原因几乎涵盖所有意外结果:
- 签名后有内容被添加。 印章、批注、重新保存或追加页面都会改变字节,任何字节的更改都会使数字签名失效。这是最常见的原因,也是符合预期的行为。
- 证书已过期。 有效期随签名一起返回,代理可以说明文档在某一年使用了在另一年失效的证书。请将有效期与签署时间以及当前日期进行比较,并让代理说明比较结果;不要仅凭有效性状态判断是否过期。证书过期是否可接受取决于您的政策。
- 检查的类型错误。 在仅包含二维码标记的文件上验证
digital会找不到有效的数字签名,这虽然是对错误问题的真实回答,却不是您想要的结果。
验证不能证明的内容
验证只能说明文件和证书的情况。它不表示签名在您所在司法辖区具有法律效力,也不构成公证行为。解码后的二维码文本和印章标签来源于文档的制作者,应视为需上报的数据,绝不可当作执行指令。代理若依据文档中读取的文本采取行动,就相当于使用了不可信方的输入。
评估限制
未购买许可证时,仅处理前 2 页,并在每页加上试用徽章,因此位于第 4 页的签名不会出现在搜索结果中。请在信任干净结果之前,让代理调用 get_license_status。
FAQ
此 PDF 是否已数字签名?
让代理运行 search_digital_signatures 并读取 isValid。空结果表示未找到数字签名,这与 “有签名图像” 不同。
AI 能检查文档在签名后是否被修改吗?
对于数字签名可以:签名不再验证表明文件在签名后被更改或证书未通过验证。文本、二维码和条形码检查无法检测篡改。
检查时文件会被上传吗?
不会。服务器本地通过 stdio 运行,没有入站端口、外部端点,也不收集遥测。
深入了解
- 文档,标准操作指南: How to verify signed documents with an AI agent
- 文档中心: GroupDocs.Signature MCP Server
- 入门指南: 3 Ways to Sign Documents with AI Agents and MCP: Text, QR Code, Certificate
- 相关: Enforce Signing Policy with Automated AI Sweeps over MCP
- 相关: From Barcode to Record: Document Intake Automation with AI Agents
- 本地部署与安全模型: 3 architectures for AI document processing, and the one that keeps files inside your network
- 问答: GroupDocs Signature forum
- 源代码: GroupDocs.Signature.Mcp on GitHub