给文本脱敏:找出并遮盖里面的个人信息

粘一段工单、邮件或者会议纪要进来。人名、手机号、地址这些会在你这台设备上被识别出来并遮盖掉——文本不会离开浏览器。

正在检测浏览器 模型只下载一次,之后就留在这个浏览器的缓存里。

脱敏工作台

也可以把 .txt 文件拖进来

结果会出现在这一侧。

  1. 左边的原文会按类型上色重排一遍,鼠标停在某一条上,能看到模型判成了什么类型、有多确定。
  2. 第二个标签页是改写后的文本:只有被识别出来的那些字符被替换,其余部分和你粘进来的一模一样。
  3. 复制走,或者下载成 .txt。页面不存任何东西,刷新一下原文和结果就都没了。

识别设置

要找哪些东西

怎么替换

置信度阈值
0.40

调低漏得少、误标多;调高干净但会漏。默认 0.40——脱敏宁可多盖几个词,也不要漏一个手机号。

怎么用

  1. 粘进来,勾类型。默认九类全勾。用不上的类型关掉,识别还会稍微快一点——类型本身是要喂给模型读的。
  2. 跑完先看高亮。这一步最容易被跳过。模型做得不错,但不是没有脾气;花半分钟扫一遍彩色的那些块,才能把「大概盖住了」变成「我确认盖住了」。
  3. 带走文本,不是带走页面。复制或者下载脱敏后的文本。关掉标签页,原文和结果一起没,这里没有历史记录,也没有账号。

快捷键:在文本框里按 Ctrl / ⌘ + Enter 直接开跑。

能认出什么,认不出什么

模型是零样本的:下面九类不过是运行时递给它的九个词,所以它也能老实告诉你哪里不灵。有四种长相固定的东西不交给概率、直接用精确规则匹配:邮箱、IPv4、能过 Luhn 校验的卡号,以及中国大陆手机号。

类型 长这样 什么时候会失手
人名张伟、刘小菲、Owen Radzik只写姓不写名(「张工」「王总」)经常抓不住;被当成公司名的人名会归到机构那一类。
邮箱地址[email protected]格式正常的邮箱由精确规则兜底,不看模型给多少分。写成「zhangwei 艾特 qq 点 example」这种变形写法就认不出来了。
电话号码13812345678、021-6888 1234中国大陆手机号由精确规则匹配。其它格式交给模型:前面有「联系电话:」这类提示词时最准,孤零零一串数字夹在句子中间容易被当成别的编号。
地址浦东新区世纪大道1568号702室模型一次最多框 12 个词,中文按字算——超过十来个汉字的长地址只会被切成几段标出来,务必看一眼高亮再走。
出生日期1990年4月7日只有上下文表明这是出生日期时才标,别的日期(下单日期、退款日期)会故意放过。
银行卡号622588012345678913–19 位、能过 Luhn 校验的数字串由精确规则抓住,不会漏。只写「尾号 6789」这种不算——这四位算不算个人信息,得你自己定。
证件号与账号身份证 310115199004078532、工单号 HT-2026-0417这一类分数普遍偏低(示例里身份证号是 0.43),因为「一串数字」本身没有固定长相;要保住这一类,阈值别调太高。
机构名明源科技、北京银行把公司名全遮掉之后工单常常读不懂了,需要保留语境的时候可以把这一类关掉。
IP 地址203.0.113.47IPv4 由精确规则匹配,一个都不会漏。IPv6 和 MAC 地址只能交给模型,时灵时不灵。

语言:模型的训练语料是英、法、德、西、葡、意六种,中文是额外能力——实测中文姓名、手机号、邮箱、IP、银行卡号都稳,长地址和证件号偏弱。别的语言属于碰运气,先拿你自己的文本试一次再决定用不用。

页面背后的模型

模型
gliner_multi_pii-v1
许可证
Apache-2.0
首次下载
—
本机实测
200 词约 0.4 秒(WebGPU)/2.9 秒(CPU 单线程 WebAssembly)

GLiNER 是 span 模型:你勾的那几种类型会被写进提示词,编码器连着你的文本一起读,然后给每一段「不超过 12 个词的连续片段 × 每一种类型」打一个分。它不生成任何文字,只能指着你文本里已经有的字符说「这一段是人名」——脱敏要的正是这个性质。

权重是 gliner_multi_pii-v1(Apache-2.0)的 ONNX 量化导出,骨干网络是 mDeBERTa-v3(MIT)。浏览器下载一次、缓存起来,之后都在本地跑,断网也照跑。

常见问题

我的文本会被上传吗?

不会。页面里根本没有「上传」这一步:没有表单提交,没有接口调用,也不会把文本发给统计。全程只有两类网络请求——页面本身,和第一次下载模型权重。开着浏览器的网络面板跑一次,你会看到点完按钮之后没有任何新请求。正因为这样,那些按规定不能发给在线脱敏服务的文本,在这里是可以处理的。

能认哪些类型?中文行不行?

页面里内置九类:人名、邮箱、电话、地址、出生日期、银行卡号、证件号与账号、机构名、IP 地址。每一类都是一句大白话提示词递给模型,是真的零样本识别,不是在匹配正则。中文可以用:示例工单里张伟 0.99、13812345678 0.94、身份证号 0.43、银行卡号 0.84 都是实测分数。模型的训练语料是英法德西葡意六种语言,中文属于泛化出来的能力,所以长地址这类会偏弱。

准确率多少?漏掉的怎么办?

给不出一个诚实的单一数字:准确率取决于你的文本、你勾的类型和阈值,谁报「99%」谁就是在报一个你没见过的基准。页面能给你的是「可复核」——每一处命中都带类型和置信度标在原文上,扫一遍就知道抓到了什么、没抓到什么。真要对外负责的文本,把这里当第一遍粗筛,发出去之前自己再看一眼高亮。

为什么要下载 570 MB 这么大?

因为模型整个跑在你的机器上,而一个多语言编码器光词表就有 25 万条,体积就是这么来的:权重 553 MB,加上 16 MB 的分词器文件。只下载一次,浏览器缓存起来,之后每次打开大约一秒就能用,断网也行。如果换成「把你的文本发到服务器」,那确实一个字节都不用下——你做的正是这笔交换。

和正则表达式脱敏有什么区别?

正则认的是长相:邮箱、IPv4 它抓得又快又准,但它永远找不出「张伟」「他爱人刘小菲」,也认不出人手写的地址。这个模型读的是上下文,所以人名、地址、出生日期才有得谈——出生日期还只在上下文表明「这是生日」时才标。这个页面不用二选一:邮箱、IPv4、能过 Luhn 校验的卡号和中国大陆手机号同时走一遍精确规则,长相固定的那几样不交给置信度。

能处理 PDF、Word 或者一整个文件夹吗?

这个页面不行。这里只接粘贴的文本和拖进来的 .txt,出来的也是文本。我们的 macOS 版 PIIShield 可以批量读 TXT、MD、CSV、DOCX,只改写被识别出来的那几处字符,所以文件结构不会坏,还会导出一张映射表用来还原原文。两边都不读 PDF——如果你手上是 PDF,先导成文本再来。