为什么需要
出海产品处理欧美用户数据,GDPR、CCPA、HIPAA 三大合规框架都强制要求 PII 脱敏。自己写正则识别信用卡号和邮箱,漏检一个就罚 4% 全球营收。Presidio 给出 60+ 内置 PII 识别器(信用卡、SSN、邮箱、电话、姓名、地址、IBAN、医疗记录号等),支持英文、中文、西班牙文等多语种。
它做的不只是匹配模式,还会看上下文——「Apple the company」和「apple the fruit」不会误判,「May」做月份还是人名根据前后文定。可接外部 NER 模型(spaCy、transformers)做自定义识别。
怎么用
Docker 一行启动:
bash
docker run -d -p 5002:5002 -p 5001:5001 mcr.microsoft.com/presidio-analyzer:latest
调 API 检测 PII:
python
from presidio_analyzer import AnalyzerEngine
analyzer = AnalyzerEngine()
results = analyzer.analyze(text="John's IBAN is DE89 3704 0044 0532 0130 00", language="en")
for r in results:
print(f"{r.entity_type} at [{r.start}:{r.end}] = '{text[r.start:r.end]}'")
输出会标出每个 PII 字段位置和类型,再用 Anonymizer 做替换(<PERSON>、<IBAN>、哈希、加密任选)。
使用案例
你做一个海外客服 SaaS,工单系统要存用户对话做 LLM 训练,但对话里有用户手机号和信用卡。Presidio 在入库前批量跑,30 分钟处理 10 万条工单,脱敏后送进 OpenAI fine-tune,原数据保留 7 天后自动删除。合规审计时调日志证明「已脱敏」,罚不到你。
注意事项
- 准确率不是 100%,信用卡/SSN 识别接近 100%,姓名/地址靠 NER 模型大概 90%
- 医疗数据 DICOM 图像需要 presidio-image-redactor 单独装
- MIT 协议,可商用。生产环境建议加人工复核环节