用途:从文本中抽取结构化 PII 片段,返回“是什么、在哪里、属于哪类”,是 OpenAI Privacy Filter 的逆向版本,不做遮蔽。
主要能力:使用同一 1.5B opf 模型权重与标签体系,输出 span 的 label、text、start、end。标签共 8 类:private_person、private_email、private_phone、private_address、private_url、private_date、account_number、secret。提供三种后端:PIIParser(纯正则,无权重,微秒级,F1 1.000,适合测试与已知格式结构化数据)、ModelPIIParser(1.5B,CPU 约 500ms,F1 0.733)、HybridPIIParser(1.5B,CPU 约 600ms,F1 0.929,推荐生产使用)。架构为 opf 1.5B → BIOES logits → Viterbi → 字符 span → span-merge → 正则兜底。
使用方式:克隆仓库后分别安装两个子包:uv pip install -e ./privacy-filter 与 uv pip install -e ./pii_parser。首次运行会下载约 3GB 的 opf 1.5B 检查点至 ~/.opf/privacy_filter/。基本用法为 from pii_parser.hybrid import HybridPIIParser,创建 HybridPIIParser(device="cpu")(或 "cuda"/"mps"),调用 parser.parse(text),遍历 result.spans。支持批量处理、按标签过滤、检查后遮蔽、导出 JSON、GPU 加速。CLI 可用 python -m pii_parser.cli_model "文本" 或 cat dump.txt | python -m pii_parser.cli_model -。
适用场景:需要定位并分类 PII 而非直接遮蔽的文本处理、审计、数据检查等。
限制:首次运行需下载约 3GB 检查点;GPU 需约 3GB 显存,否则用 CPU;secret/URL 召回率低时应用 HybridPIIParser;偏移量基于原始字符串,解析前不要预处理或裁剪;需同时安装两个子包,否则 privacy_filter 导入报错;模型缺失可删除 ~/.opf/privacy_filter/ 后重下。