
Inverse du filtre de confidentialité d'OpenAI : même modèle 1.5B, renvoie les PII sous forme de spans structurés au lieu de les masquer.
OpenAI a publié Privacy Filter — un modèle qui masque les PII dans le texte. Les défenseurs l'utilisent pour que les données ne fuient pas.
Mais chaque défense a un revers. Les attaquants ont aussi besoin des PII. Depuis des logs, des dumps, des buckets S3 abandonnés, des boîtes de réception volées. Même tâche : trouver tout ce qui est personnel dans un tas de texte.
Privacy Filter masque. Privacy Parser extrait.
Même modèle, même taxonomie d'étiquettes, mêmes poids. Au lieu de <REDACTED> vous obtenez des spans structurés — quoi, où, quel type.
Défense : auditez vos données avant qu'elles ne fuient. Offense : analysez celles des autres après qu'elles ont fui.
L'outil ne sait pas de quel côté il est. C'est juste un bon analyseur.
uv venv
uv pip install -e ./privacy-filter
uv pip install -e ./pii_parser
Le premier lancement télécharge le checkpoint opf 1.5B (~3 Go) dans ~/.opf/privacy_filter/.
from pii_parser.hybrid import HybridPIIParser
parser = HybridPIIParser(device="cpu")
result = parser.parse(
"Hi Quindle Testwick ([email protected] / +1-415-555-0102), "
"account 40702810500001234567, 14 Beautiful Ct, Anytown USA, "
"password Priv4cy-Filt3r-2026."
)
for s in result.spans:
print(f"{s.label:18} {s.text}")
private_person Quindle Testwick
private_email [email protected]
private_phone +1-415-555-0102
account_number 40702810500001234567
private_address 14 Beautiful Ct, Anytown USA
secret Priv4cy-Filt3r-2026
python -m pii_parser.cli_model "Alice paid 40702810500001234567 on 2026-05-17."
Hybride = modèle + fusion de spans + filet de sécurité regex. Expédiez celui-ci.
Taxonomie opf v2 — 8 catégories :
private_person · private_email · private_phone · private_address ·
private_url · private_date · account_number · secret
text
↓
opf 1.5B → BIOES logits → Viterbi (tuned) → char spans
↓
span-merge (colle Quindle + Testwick)
↓
filet de sécurité regex (URL, secret, compte — là où le modèle rate)
↓
spans[]
python pii_parser/tests/test_hybrid.py
Fixture F1: 0.929
Scenarios: 8/8 passed
Latency: ~600 ms CPU
Apache-2.0.
| Backend | Poids | Vitesse | F1 |
|---|
PIIParser | aucun | µs | 1.000 |
ModelPIIParser | 1.5B | 500 ms CPU | 0.733 |
HybridPIIParser | 1.5B | 600 ms CPU | 0.929 |