您可以通过使用自然语言向 AI 代理请求,对文档中的敏感数据进行脱敏,并且脱敏过程在本地、文件内部、您的机器上运行。将 GroupDocs.Redaction.Mcp 与 Claude Desktop、Claude Code、Cursor 或 GitHub Copilot 连接后,只需一次提示即可:

请在 case-file.pdf 中脱敏所有电子邮件地址,并告诉我保存的文件名。

带有配置和故障排除的逐步版本请参阅文档: 如何使用 AI 代理对文档进行敏感数据脱敏.

为什么聊天模型不能直接为您脱敏文档?

读取文档并生成新文档的语言模型实际上是在进行改写,而不是脱敏。改写可能会漏掉某些出现、修改您未要求更改的措辞,并且它永远不会触及原始文件。在 PDF 查看器中绘制的黑色矩形也有类似缺陷:矩形下的文本仍然保留在文件中,仍可复制。代理不应直接执行删除操作。它应当提出匹配模式并调用工具,而引擎则在文档本身中替换匹配的文本。

这就是 GroupDocs.Redaction.Mcp 中的工作分工。代理负责提出模式并发起调用,引擎则精确执行。没有分类器来判断哪些内容是敏感的,因此行为是可审查的,关于何为敏感的决定仍由您自行把握。

方法一:通过模式替换文本

适用于任何可以用正则表达式描述的内容:电子邮件地址、国家身份证号、电话号码、账号、客户名称等。代理调用 redact_text,该工具会在文档中替换匹配模式的文本并保存脱敏副本。原始文件保持不变。

请在 case-file.pdf 中脱敏所有匹配 \b\d{3}-\d{2}-\d{4}\b 的内容,即美国社会安全号码。运行前请先展示匹配模式。

先要求查看匹配模式是值得的额外一步。您阅读过的正则表达式是可以辩护的脱敏方式,宽松的正则会删除超出预期的内容,而严格的正则则可能留下数据。replacement 参数默认是 [REDACTED],便于审查输出。

预期结果:在输出文件夹中生成脱敏副本,并在代理消息中给出保存的文件名。

方法二:清除文本模式无法覆盖的区域

仅清理正文文本而交付的文件仍在页边注释和作者字段中保留人物姓名,是脱敏失败最常见的情况。敏感数据存在四个位置,每个位置都有对应的工具:

数据所在位置 工具
正文文本 redact_text
扫描件、照片、签名 redact_image_area
批注和便利贴 redact_annotations
属性中的作者、公司、日期 erase_metadata

请删除 case-file.docx 中的所有批注,然后清除作者、公司和日期属性。每一步都在前一步生成的文件上执行。

redact_annotations 可以替换批注文本,或使用 deleteAll 完全删除批注。erase_metadata 接受逗号分隔的字段列表,例如 Author,Company,CreatedTime,默认值为 All。链式指令很重要:每次调用都会生成新文件,因此如果代理在第二步仍使用原始文件,则会丢失第一步的结果。

预期结果:链中最后一步生成的最终文件,且所有中间文件名在对话记录中可见。

方法三:在提示之前进行脱敏,并将值从对话中剔除

预先在 LLM 之前进行脱敏意味着敏感字符串根本不会传递给托管模型。文档仍保留在您的机器上,而对话内容则不在其中。使用云托管模型时,代理的发言会发送给模型提供商,在脱敏工作中这可能会泄露您正在删除的字符串。例如 “I redacted jane.smith@example.com” 实际上已经发送了您想要保护的地址。

请使用我们的标准模式脱敏客户名称。回复中不要重复匹配的文本。

脱敏工具返回的是保存的文件名,而不是匹配计数。代理回复中的数字是其自行读取的结果,例如在脱敏前搜索文本得到的计数,因此应将其视为交叉检查,而非工具输出。若要获得最强安全性,请运行本地模型,这样任何信息都不会离开您的边界,同时还能实现端到端本地的文档脱敏自动化。

预期结果:回复中仅包含保存的文件名,且对话记录中不出现任何敏感字符串。

示例会话(节选)

You:    Redact every email address in case-file.pdf and tell me which file you saved.
Agent:  I will use this pattern: [\w.+-]+@[\w-]+\.[\w.]+
        -> redact_text(file: case-file.pdf, pattern: ..., replacement: "[REDACTED]")
Agent:  Saved case-file_redacted.pdf.
You:    For case-file.docx, delete all annotations and clear the document properties.
Agent:  -> redact_annotations(file: case-file.docx, deleteAll: true)
        Saved the output file.
        -> erase_metadata(file: the file saved by the previous step, fields: "All")
        Saved the output file.

评估模式的限制是什么?

在任何重要运行之前请明确说明。未获取许可证时,服务器以评估模式运行:每个进程只能处理一个文档、一次脱敏,最多替换 4 次,并附带试用徽章。出现十次的模式仅会被脱敏四次,剩余六次仍保留,输出看起来可能很干净。此限制仅用于演示。切勿发布未授权运行的输出,并首先调用 get_license_status 查询:“redaction server 的许可证状态是什么?”

结果是否符合 GDPR 等法规的要求,由您自行决定。服务器仅会删除您指示的内容,且在您提供的文件中进行操作。

  • PDF on Linux. 在 Linux(包括 Docker 镜像)上,redact_image_area 和 erase_metadata 目前无法处理 PDF 文件(PDF 引擎的图像处理依赖于 System.Drawing,而 .NET 仅在 Windows 上支持);这两者在 Word 文档上可用,redact_text 在 PDF 上可用。请在 Windows 上使用 dnx 进行 PDF 区域脱敏和元数据擦除。

常见问题

Claude 能在不上传的情况下从 PDF 中脱敏个人身份信息吗? 是的。MCP 服务器作为您 AI 客户端的子进程通过本地 stdio 运行,并在您配置的文件夹中读取和写入文件。请注意,代理在聊天中说的任何内容仍会发送给云模型提供商。

代理决定哪些是敏感信息吗? 不。代理仅提出模式,由您进行审查。引擎严格执行所提供的内容。

如何安装? 使用 .NET 10 SDK,运行 dnx GroupDocs.Redaction.Mcp --yes 并将 GROUPDOCS_MCP_STORAGE_PATH 设置为存放文档的文件夹。另一种方式是使用 Docker:ghcr.io/groupdocs-redaction/redaction-net-mcp.

深入了解