
演示
个人信息,传出去之前就没了。
一份客服记录里满是你无权留存的姓名、地址和卡号。Redact 在浏览器里或手机上就把它们遮蔽掉,抢在文本被发出去之前。于是客户姓名原本所在的位置,你的系统存下的是 [GIVEN_NAME_1]。
Redact 还能把值放回去。提示词发往外部模型之前先遮蔽,再在回答中还原真实的姓名和号码。保留占位符映射,结果就是假名化;删除映射,遮蔽后的副本就是匿名化。
Microsoft Presidio、AWS Comprehend 和 Google Cloud DLP 覆盖同样的领域,而且都要把文本放到它们的服务器上。Redact 以 23M 参数在 27 种语言中捕获 88.8%的个人数据,因此同一套脱敏可以运行在浏览器标签页、手机或 Node 后端里。
银行卡号、IBAN、身份证号和增值税号都要核对真正的校验和:Luhn、ISO-13616,以及各国自己的规则。因此随便一串 16 位数字都不会被当成卡号遮蔽。
捕获 88.8%的个人数据。
在一段文本中捕获 88.8%的个人数据,几乎不误伤其他内容,模型小到可以在浏览器标签页里运行。唯一召回率更高的系统 GLiNER-PII 有 2.3 GB。
所有系统都由同一套评测流程在相同数据上打分,各自使用自己的工作点,因此比较衡量的是模型本身而非周边工程。召回率指被完整遮蔽的个人信息比例,在 WikiANN、MultiNERD 和一个格式有效的结构化数据集上按宏平均计算。精确率指被遮蔽的片段中确实属于个人信息的比例。Redact 的体积为 Apple 版本;Android 和 Web 版本为 24.5 MB。
| 系统 | 召回率 | 精确率 | 体积 | 参数量 |
|---|---|---|---|---|
| Redact | 88.8 | 99.6 | 11.6MB | 23M |
| GLiNER-PII | 91.1 | 90.4 | 2.3GB | 570M |
| Rampart | 61.4 | 97.2 | 14.7MB | 18.5M |
| OpenAI privacy filter | 60.2 | 93.5 | 3GB | 1.5B |
AWS Comprehend 是团队会权衡的另一个选择,它不在此表中,因为它的 PII 接口只接受英语:其他任何语言代码都会被拒绝。在相同的英语数据上,它的综合得分更高(英语综合 91.6 对 86.5),在姓名上领先,在结构化数据上落后(91.9 对 95.0),精确率相同。Comprehend 运行在云端,按调用计费,只覆盖这 27 种语言中的一种。以上全部为在外部 WikiANN 和 MultiNERD,以及一个格式有效的结构化 PII 集上进行的内部评估;完整语言列表和逐标签细分见模型卡。
应用场景
网页表单提交前先清理.
安全的 LLM 往返
提示词发往外部模型之前先遮蔽,再在回答中还原真实值。像 [GIVEN_NAME_1] 和 [EMAIL_1] 这样带唯一编号的占位符让整个往返过程无损,用户读到的仍然是一条正常的回复。
入库即清理,不必付 DLP 的账单
在 Node 里用 Redact 处理刚到达的客服记录、日志和上传文件。没有按次调用的费用,数据也不会离开你自己的基础设施,而云端 DLP 服务是按每份文档计费的。
手机上的客服与聊天
一段对话在手机上同步出去之前,先剥掉其中的姓名、电子邮箱、卡号和 IBAN,原始个人信息既到不了你的服务器,也到不了你的日志服务商那里。
覆盖 27 种语言的脱敏
一个模型覆盖 27 种语言,涵盖拉丁、希腊和西里尔字母:全部欧盟官方语言,外加挪威语和冰岛语。在雅典填写的表单和在赫尔辛基填写的表单走同一条代码路径。
灵感
用 Redact 构建的点子。把提示词复制到你的编码 agent 里就能开始。
Write an MCP tool that strips personal data before it reaches any other tool.
Scrub personal data out of any text before it hits an LLM.
Redact PII from logs on the device before they're stored.
Run PII redaction in a Lambda so data never leaves your infrastructure.
Scrub a support form before it submits.
Transcribe interviews and auto-redact names before you share them.
Detect the language, then redact PII in that language.
De-identify a dataset before fine-tuning or sharing it.
模型能做什么
- 20 个检测类别,包括姓名、街道地址、城市、邮政编码、电子邮箱、电话号码、信用卡、银行账号、银行路由号、IBAN、IP 地址、URL、护照、驾照、税号、社会保障号和政府证件号。
- 确定性验证层:Luhn 卡号校验、ISO-13616 IBAN、覆盖全部 24 个欧盟国家的带校验和身份证号、全部 27 种欧盟增值税号格式、IMEI,以及各国驾照。
- 面向 LLM 往返的可逆脱敏,使用带唯一编号的占位符。
- 按类别过滤,并可查看每一处检测及其精确的字符范围。
- 公司名称作为独立类别被识别,默认保持原样,因为公司不是自然人。需要时再让它们和其他内容一起被遮蔽。
快速上手
只需几行代码,即可为你的 iOS or macOS, Android or web 应用加上 pii 脱敏。 Redact 文档.
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core", from: "3.5.0")
// target dependency
.product(name: "Redact", package: "desert-ant-core")
import Redact
let redact = Redact()
let r = try await redact.redaction(of: text)
// r.redactedText: "Email [GIVEN_NAME_1] at [EMAIL_1]"
Add Redact from Desert Ant Labs to this Swift project (iOS, macOS). What it does: Redact:面向 iOS、Android 和 Web 的设备端 PII 脱敏. SDK: Swift (iOS, macOS) Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme // Swift Package Manager .package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core", from: "3.5.0") // target dependency .product(name: "Redact", package: "desert-ant-core") Reference: - Model page: https://desertant.com/models/redact/ - Full catalog and other models: https://desertant.com/llms.txt Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
// build.gradle.kts (Maven Central)
implementation("ai.desertant:redact:3.5.0")
import ai.desertant.redact.Redact
Redact(context).use { redact ->
val r = redact.redaction(text)
// r.redactedText: "Email [GIVEN_NAME_1] at [EMAIL_1]"
}
Add Redact from Desert Ant Labs to this Kotlin project (Android).
What it does: Redact:面向 iOS、Android 和 Web 的设备端 PII 脱敏.
SDK:
Kotlin (Android)
Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme
// build.gradle.kts (Maven Central)
implementation("ai.desertant:redact:3.5.0")
Reference:
- Model page: https://desertant.com/models/redact/
- Full catalog and other models: https://desertant.com/llms.txt
Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
npm i @desert-ant-labs/redact @litertjs/core
import { Redact } from "@desert-ant-labs/redact";
const redact = await Redact.load();
const r = await redact.redaction(text);
// r.redactedText: "Email [GIVEN_NAME_1] at [EMAIL_1]"
Add Redact from Desert Ant Labs to this JavaScript / TypeScript project (Web, Node.js). What it does: Redact:面向 iOS、Android 和 Web 的设备端 PII 脱敏. SDK: JavaScript / TypeScript (Web, Node.js) Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme npm i @desert-ant-labs/redact @litertjs/core Reference: - Model page: https://desertant.com/models/redact/ - Full catalog and other models: https://desertant.com/llms.txt Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
规格
- 语言
- 27 种语言:全部欧盟官方语言,外加挪威语和冰岛语(完整列表见模型卡)
- 设备端体积
- 11.6 MB Core ML(Apple,4-bit);24.5 MB LiteRT(Android、Web,int8)
- 模型
- token 分类器,含一个用于结构化 ID 的确定性层,23M 参数
- 隐私
- 完全在设备上运行。文本不会被发往任何地方。
Redact 能捕获文本中约 90%的个人数据,也就是说大约每十项会漏掉一项。请把 Redact 当作在数据离开设备前清除大部分内容的一层,而不是文档已经干净的保证。可靠的是结构化字段,因为卡号、IBAN、增值税号和身份证号都必须通过真实的校验和。Redact 最常漏掉格式少见的自由填写姓名和地址;反过来,它偶尔也会遮蔽普通词语,多见于全大写文本。
常见问题
Redact 是什么?
在设备端边输入边抹除个人数据,覆盖 27 种语言,数据不会到达你的服务器或日志。
Redact 在设备上运行吗?
是的。Redact 在设备上运行,不调用任何服务器,因此数据始终留在用户手中。
Redact 支持哪些平台?
Redact 以面向 Swift, Kotlin, JavaScript / TypeScript 的原生设备端 SDK 形式提供。
Redact 的价格是多少?
每个模型免费支持最多 10 万台月活跃设备。推理次数不限。 如需定制授权,请联系我们。
Redact 的准确度和速度如何?
在一段文本中捕获 88.8%的个人数据,几乎不误伤其他内容,模型小到可以在浏览器标签页里运行。唯一召回率更高的系统 GLiNER-PII 有 2.3 GB。