presidio
微软开源的企业级 PII 检测与脱敏框架,支持文本/图像/结构化数据多模态处理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
微软开源的企业级 PII 检测与脱敏框架,支持文本/图像/结构化数据多模态处理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你是一家医疗科技公司的数据工程师,刚刚完成了患者数据的 ETL 管道开发。某天,开发环境意外连上了生产数据库,一份包含姓名、电话、身份证号的 Excel 报表被发到了公共邮箱。48 小时内,数据保护局的通知书就躺在了法务的桌上——这就是 PII(个人身份信息)泄露的代价。
根据 IBM《2023 年数据泄露成本报告》,全球平均单次数据泄露成本已达 445 万美元,其中涉及 PII 的泄露占比超过 60%。在医疗、金融、教育等强监管行业,如何在数据流通中保护个人隐私,已成为工程团队必须正面回答的问题。
Microsoft Presidio(拉丁语"保护、驻军"之意)正是为此而生的开源框架,由微软安全团队维护,专注于文本和图像中的敏感信息检测与脱敏。

图1:Presidio 文本脱敏效果演示——原始文本中的姓名、信用卡、电话被自动识别并替换为占位符
Presidio 诞生于微软内部的隐私合规需求。随着 GDPR、CCPA、HIPAA 等数据保护法规在全球范围内落地,微软内部多个产品线(如 Azure 认知服务、Microsoft 365)面临着"数据必须流通,但隐私必须保护"的双重挑战。
传统的 PII 处理方式依赖正则表达式手动匹配,不仅维护成本高、误报率高,而且无法处理上下文语义(如"Jack 正在调用 API"中的"Jack"是人名,但"Jack the Ripper"中的"Jack"不是)。Presidio 的设计目标正是解决这些痛点:通过结合 NLP 命名实体识别(NER)、正则匹配和 LLM 辅助检测,实现高准确率、低误报率的自动化 PII 处理流水线。
截至目前,Presidio 在 GitHub 拥有超过 8600 颗星,被 Microsoft 官方推荐用于 Azure 环境的敏感数据治理,并被多家财富 500 强企业应用于数据管道、日志脱敏、AI 训练数据清洗等场景。
Presidio 采用插件化架构,将整个 PII 处理流程拆分为四个独立服务,各司其职又可自由组合:

图2:Presidio Analyzer 分析引擎内部架构——多 Recognizer 并行 + Context 增强
Analyzer 是整个框架的核心入口,负责在文本中定位 PII 实体。它采用了多策略并行识别的设计:
| 识别策略 | 说明 |
|---|---|
| NLP Recognizer | 基于 spaCy / Transformers 的命名实体识别(NER),理解语义上下文 |
| Pattern Recognizer | 正则表达式 + 校验和(checksum)验证,精确匹配信用卡、SSN 等格式固定的信息 |
| Rule-based Recognizer | 业务规则引擎,支持自定义逻辑 |
| LLM Recognizer | 接入 Ollama/GPT 等大模型,处理歧义性强的边界 case |
| Remote Recognizer | 连接外部 PII 检测服务(如 Azure OpenAI) |
Analyzer 的输出是 RecognizerResult 列表,包含实体的位置(start/end 偏移)、类型(CREDIT_CARD, PERSON, LOCATION 等)和置信度分数。多 Recognizer 的结果通过 RecognizerRegistry 统一管理,支持按优先级去重。
Anonymizer 接收 Analyzer 的输出,按照预设策略对敏感实体进行替换。内置的脱敏策略包括:

图3:Presidio Anonymizer 支持的 6 种脱敏策略:MASK / REDACT / REPLACE / HASH / ENCRYPT / CUSTOM
**** 或 ███ 替换,最彻底但可读性差John S*** 保留首字母Donald Duck 替换 John SmithPresidio 的图像脱敏模块是医疗场景的杀手级功能。它支持:
这一功能直接对应 HIPAA 对 PHI(受保护健康信息)的要求,在医疗 AI 数据集构建中极具实用价值。

图4:OCR 图像脱敏效果——医生签名、注释文字、日期标签均被自动识别并红遮
针对数据库表格、JSON 响应等结构化数据,Structured 模块提供列级别的 PII 检测和批量脱敏。支持常见数据库类型,可直接集成到 ETL 管道中。
对于不需要 SDK 集成的用户,CLI 模块提供了开箱即用的命令行接口:
pip install presidio-cli
presidio analyze --text "John Smith lives in New York"
presidio anonymize --text "My SSN is 123-45-6789" --transformers-model "bert-base-uncased"
| 组件 | 技术选型 | 说明 |
|---|---|---|
| NLP 引擎 | spaCy(默认)/ Transformers | spaCy 轻量快速;Transformers 精度更高 |
| LLM 集成 | Ollama / Azure OpenAI / OpenAI | 支持本地部署 Ollama 保护数据隐私 |
| 图像处理 | OpenCV + Pytesseract (OCR) | DICOM 解析依赖 pydicom |
| 数据结构 | Pydantic | 请求/响应模型定义 |
| 代码质量 | Ruff + Pytest + pre-commit | 高标准 CI/CD |
| 文档 | MkDocs | 完整 API 文档和示例 |
Python 生态(pip install presidio-analyzer / presidio-anonymizer),同时也支持通过 Docker 部署独立服务,通过 REST API 调用。
pip install presidio-analyzer presidio-anonymizer
git clone https://github.com/microsoft/presidio
cd presidio
docker-compose -f docker-compose.yml up
docker-compose 包含四个服务:ollama(本地 LLM)+ presidio-analyzer(:5002)+ presidio-anonymizer(:5001)+ presidio-image-redactor(:5003),开箱即用。
提供了 deploytoazure.json Azure 部署模板,支持在 AKS 上弹性扩缩容。

图5:脱敏前后效果对比——敏感信息被替换为统一占位符
Presidio 默认的 spaCy 模型基于英语语料训练,对中文 PII 识别效果有限。用户需要自行训练中文 NER 模型(如基于 bert-base-chinese)并注册为自定义 Recognizer,门槛较高。
NER 模型的精度直接影响识别准确率。在非结构化文本中,区分真实 PII 和偶然出现的相似字符串(如"Jack"作为变量名)并非易事。建议在生产环境中结合人工审核流程。
Transformers 模型推理较慢,在高并发场景下需要考虑批处理和模型量化(如 GPTQ/ONNX)。文档中建议使用 Docker Compose 水平扩展,但尚未提供官方的负载均衡方案。
HASH 脱敏策略虽能保持实体一致性(便于数据分析),但需要维护映射表,增加了系统复杂度。加密方案也需要妥善管理密钥生命周期。
Presidio 代表了数据隐私工程领域的一个明确趋势:从规则驱动到模型驱动。传统的正则表达式方法正在被 NLP/LLM 辅助检测所补充甚至替代,而 Presidio 正是这一趋势的典型开源实现。
随着 AI 法规(如 EU AI Act)的推进和 LLM 训练数据的隐私合规要求日益严格,训练数据脱敏将成为 Presidio 的重要增长场景——在将数据喂给大模型训练之前,必须清除其中的 PII,Presidio 提供了一条可行的自动化流水线。
此外,多模态 PII 检测(文本+图像+音频)是下一个技术高地。Presidio 的 Image Redactor 模块已在图像方向起步,未来可能在音频转录文本的 PII 检测上有所延伸。
Microsoft Presidio 是一款成熟度高、社区活跃、文档完善的企业级 PII 数据脱敏框架。它将微软内部的隐私合规实践开源,以模块化、插件化的架构,支持从简单的 pip 安装到复杂的 Kubernetes 生产部署。对于需要处理敏感数据的开发团队,Presidio 提供了一条从"发现问题"到"解决问题"的完整工具链,值得在数据管道的入口处优先考虑。
本文档基于 GitHub 公开信息生成,分析截至 2026 年 6 月