Downloads · 30 days
1K
3% of all-time downloads
Anonym-IA/V2-camembert-ner-pii-french
V2-camembert-ner-pii-french is a token classification model from Anonym-IA. Use it when you need labels on individual words, such as names. The card lists the license as mit.
Modèle CamemBERT V2 fine-tuné pour la détection de PII (Personally Identifiable Information) dans des documents juridiques français.
Downloads · 30 days
1K
3% of all-time downloads
All-time downloads
30.1K
Public
Parameters
111M
446 MB on disk
Likes
5
Public
Click a slice to open those files.
.safetensors445 MB · 99%
From the Hugging Face model README
Modèle CamemBERT V2 fine-tuné pour la détection de PII (Personally Identifiable Information) dans des documents juridiques français.
Anonymisation/pseudonymisation de documents confidentiels pour professions réglementées :
Permet l'utilisation sécurisée de LLM en ligne (GPT, Gemini) sans exposer les données personnelles brutes.
NOM_PERSONNE : Noms de famillePRENOM_PERSONNE : PrénomsNUMERO_VOIE : Numéros de rueNOM_VOIE : Noms de voiesCODE_POSTAL : Codes postauxVILLE : VillesEMAIL : Adresses emailTELEPHONE : Numéros de téléphoneNUM_SECURITE_SOCIALE : Numéros de sécurité sociale (NIR)IBAN : Numéros IBAN françaisNUM_DOSSIER : Références de dossiers juridiquesREF_CADASTRALE : Références cadastralesNOM_SOCIETE : Noms de sociétésEt 70+ autres catégories PII (voir documentation complète).
pip install transformers torch
from transformers import pipeline
# Charger le pipeline NER
ner = pipeline("ner",
model="Anonym-IA/V2-camembert-ner-pii-french",
aggregation_strategy="simple")
# Texte à anonymiser
text = """
Jean Dupont, demeurant au 42 rue de la République, 75011 Paris,
email: [email protected], tél: 01 42 35 67 89
"""
# Détecter les entités
entities = ner(text)
for entity in entities:
print(f"{entity['entity_group']}: {entity['word']} ({entity['score']:.2%})")
from transformers import AutoModelForTokenClassification, AutoTokenizer, pipeline
model = AutoModelForTokenClassification.from_pretrained("Anonym-IA/V2-camembert-ner-pii-french")
tokenizer = AutoTokenizer.from_pretrained("Anonym-IA/V2-camembert-ner-pii-french")
ner = pipeline("ner", model=model, tokenizer=tokenizer, aggregation_strategy="simple")
def anonymize(text):
entities = ner(text)
# Trier par position décroissante
entities_sorted = sorted(entities, key=lambda e: e['start'], reverse=True)
mapping = {}
counters = {}
anonymized = text
for entity in entities_sorted:
entity_type = entity['entity_group']
# Générer marqueur
counters[entity_type] = counters.get(entity_type, 0) + 1
marker = f"[{entity_type}{counters[entity_type]}]"
# Remplacer
mapping[marker] = entity['word']
anonymized = anonymized[:entity['start']] + marker + anonymized[entity['end']:]
return anonymized, mapping
# Anonymiser
anonymized_text, mapping = anonymize(text)
print("Anonymisé:", anonymized_text)
print("Mapping:", mapping)
Deux versions ONNX sont disponibles pour l'exécution dans le navigateur :
Anonym-IA/V2-camembert-ner-pii-onnx-fp32
Anonym-IA/V2-camembert-ner-pii-onnx-int8
Hybride :
✅ Pré-tokenisation : Évite fragmentation emails/IBANs ✅ Variantes NIR : Avec/sans espaces (format officiel) ✅ Templates juridiques : Contexte professionnel réaliste ✅ Noms avec particules : Le, De, Du, Des
Format de marqueurs compatible avec systèmes existants :
| Type | Format | Exemple |
|---|---|---|
| Nom | NOM{n} | NOM1 |
| Prénom | PN{n} | PN1 |
E{n} | E1 | |
| Téléphone | T{n} | T1 |
| NIR | NIR{n} | NIR1 |
| IBAN | IBAN{n} | IBAN1 |
MIT License - Libre d'utilisation, y compris à des fins commerciales.
Projet Anonym-IA - Anonymisation de documents pour professions réglementées.
docs/@misc{camembert-ner-pii-french-v2,
author = {Anonym-IA},
title = {V2 CamemBERT-NER-PII French},
year = {2025},
publisher = {HuggingFace},
url = {https://huggingface.co/Anonym-IA/V2-camembert-ner-pii-french}
}
Généré automatiquement le 2026-01-19 21:55:17