如何用 AI 自动给 PDF 脱敏:免费、本地、不上传
一份 PDF 里散落着十几个人名、几个邮箱、几个手机号、还有家庭住址。法务要明天前全部涂黑。手动做意味着翻遍每页、找出每一处、画矩形覆盖,还要担心漏了一个。
用正则能抓住明显的模式——邮箱、规范格式的电话号码——但碰到人名就抓瞎了("苹果"是水果还是某 CEO 的姓?),国际电话格式也容易漏。最后还是得通读全文校对一遍。
这正是 AI 擅长的活。OnePDFs 的 Smart Redact 工具 把 OpenAI 开源的 privacy-filter 模型直接跑在你的浏览器里。它扫描每一页,识别 8 类隐私信息,让你审核后再应用。PDF 全程不离开你的设备——不上传、不登录、不收费。
这里说的"AI 脱敏"具体是指什么
网上多数所谓"AI 脱敏"的工具,要么把你的文件传到他们服务器(需要保护的恰恰是这种文件),要么背后就是个套了营销页的正则。Smart Redact 都不是。OpenAI 完整的 15 亿参数 NER(命名实体识别)模型在你首次扫描时下载到浏览器,缓存供后续访问使用,本地用 WebGPU 加速跑推理。
一次扫描覆盖的 8 类隐私:
| 类别 | 例子 |
|---|---|
| 人名 | 像"张三"、"Tim Apple"——能区分人名语境和同形异义词 |
| 地址 | 街道地址、邮编、城市国家行 |
| 邮箱 | 标准格式 + 混淆形式(john [at] example.com) |
| 电话 | 国际格式、区号、分机号 |
| URL | http/https/ftp 链接和裸域名 |
| 日期 | 出生日期、文档日期,常见格式都识别 |
| 账号 | 信用卡片段、银行路由号、IBAN 形式串 |
| 密钥 | 不小心粘进文档的 API key、密码、token |
这就是正则做不到的部分。上下文很重要:模型知道"Apple Inc. 发布财报"里的 Apple 是公司,"我上周给 Tim Apple 发了邮件"里的 Apple 是人。
三步完成 PDF 脱敏
流程刻意做得简单——上传、扫描、应用。
第一步:打开 Smart Redact 工具
访问 /tools/pdf-smart-redact,把 PDF 拖到上传区。文件留在浏览器里,没有任何东西被发送出去。编辑器打开后,Smart Redact 子工具已经自动激活。

第二步:运行 AI 扫描
点 扫描。如果是首次访问,privacy-filter 模型(约 900 MB)会下载到浏览器缓存。这一步每个 origin 只发生一次——下次访问,模型从本地缓存秒载,无需重新下载。扫描本身用 WebGPU 并行处理多页;现代机器上一份 20 页的文档约 30 秒内出结果。
扫描过程中,面板按页显示进度。识别到的项目按页分组列在面板里,每条同时在 PDF 上用对应类别的颜色高亮。

第三步:审核并应用
人工介入的环节。面板顶部有三个控件:
- 检测类型——8 个复选框,每个对应一类 PII。不想脱敏的类别取消勾选。比如日期是公开信息可以保留,取消"日期",PDF 上对应高亮立刻消失。
- 置信度阈值——0.50 到 0.99 的滑块。值越高误报越少但可能漏掉边界情况;值越低识别越多但会标出一些可疑项。默认 0.85 适合大多数文档。
- 应用脱敏——最终动作。点击后所有确认的项目都变成永久黑色矩形。底层文字从 PDF 中真实删除,不只是覆盖——选不中、复制不出、OCR 也还原不回来。
如果在列表里看到误判的项目,点旁边的 × 单独移除那一条。如果某个类别整体识别得不好,取消整个类别勾选。在你点击应用前,什么都不会被破坏。

为什么不直接用手动脱敏工具
OnePDFs 已经有 PDF 涂黑 和 PDF 擦除 用于手动脱敏,知道具体要藏什么、藏哪儿时它们很顺手。Smart Redact 在这些场景更优:
- 文档很长,想确保没漏掉
- 事先不知道里面会出现哪些人名或邮箱
- 想脱敏单一类别(比如只去所有电话号码)而不动其他
- 反复处理同类文档需要稳定的规则
对于真正敏感的资料,正确流程往往是:先 AI 扫描,再人工用手动工具复核一遍。Smart Redact 是放大效率的杠杆,不是判断力的替代品。
隐私保障
这种工具的核心矛盾是:保护数据本身的工具不应该成为数据泄漏的渠道。所以值得明确每一步都发生在哪里:
- 你的 PDF:留在浏览器。读进内存、由 pdf.js 提取文本,从不发送到网络
- 模型:900 MB 权重首次从 HuggingFace CDN 下载,存入浏览器 Cache Storage。模型文件不会回传,也不存在任何服务端推理
- 检测结果:包含位置和置信度的实体列表,仅在浏览器内存里
- 脱敏后的 PDF:本地用 pdf-lib 生成并提供下载,没有任何日志记录
如果你在严格数据合规的企业环境里工作,这一点很关键。AI 看不到你的文档;它只是在已经加载页面的同一个 JS 运行时里跑。
AI 漏识别的情况
实事求是讲讲局限。privacy-filter 模型很好,但不完美:
- 没有文字层的扫描件:模型需要可提取的文本。纯图片 PDF(多数扫描件)无法工作——Smart Redact 按钮对这类文件会被禁用。需要先用 扫描工具 做 OCR
- 特殊语境下的人名:嵌在代码块里的人名,或非英文字符的人名可能被漏掉。降低置信度阈值能多识别一些,再人工复核
- 形似账号但不是账号的数字:发票号、SKU 编码等会被误判。要么取消"账号"勾选(如果文档里这类很多),要么逐条移除
高敏感度文档的最佳实践:默认设置扫描,带高亮快速通览一遍,确认无误再点应用。
常见问题
收费吗?
不收。无订阅、无按页计费、无上传容量限制。唯一的成本是 900 MB 模型一次性下载——而且这一笔流量是 HuggingFace 的 CDN 出,不是我们站点。
离线能用吗?
模型缓存好之后,检测过程可以离线运行。第一次访问还是需要网络加载页面,但后续扫描新 PDF 不需要联网。
支持非英语 PDF 吗?
privacy-filter 模型主要在英文数据上训练,但实测对中文文档也有相当的覆盖:常见的中文人名、城市级地址("北京市海淀区中关村大街...")、+86 手机号、邮箱、URL、Chinese ID/账号都能识别。中文日期、银行支行名等带中文上下文的数据偶尔会漏,遇到误判可以人工剔除。拉丁语系欧洲语言(西、德、法)的人名识别比中文更稳定。
应用脱敏后原始文字去哪了?
从 PDF 的内容流中永久删除。我们不是把黑色矩形盖在文字上面——而是把底层文字直接抹掉。导出的 PDF 在密码学意义上等同于这些字符从未被键入过;OCR、文本选择、搜索,对脱敏区域都返回空。
能批量处理多个 PDF 吗?
界面上还不支持。模型按浏览器 tab 加载,但扫描流程一次跑一个文档。如果你有稳定的批处理需求,缓存模型 + 我们的 压缩 批量基础设施可以打通——欢迎反馈。
privacy-filter 模型是开源的吗?
是。在 HuggingFace 上以宽松协议发布。我们用的是 Transformers.js 移植版,让模型能在浏览器里推理。
试用
打开 Smart Redact,丢一个含个人信息的 PDF 进去,看 AI 在一分钟内全部找出来。首次扫描会下载模型(慢网络下 5–15 分钟,下完一次永久缓存);之后每次扫描都是秒级。
对于不适合 AI 的脱敏场景——快速定点涂黑、矩形遮挡、纯手动擦除——PDF 涂黑 和 PDF 擦除 是更合适的工具。它们和 Smart Redact 互补,不是替代关系。
整个流程都在你的浏览器里。不上传、不登录、不收费。这就是全部卖点。