À propos du projet

rizzo-pii est un outil local et réversible d'anonymisation des données personnelles destiné aux documents juridiques et professionnels italiens. Son cœur est rizzo-pii:0.3B, un modèle de classification de tokens avec un squelette mmBERT/ModernBERT (environ 0,3 Md de paramètres) qui s'exécute sur CPU avec environ 0,5 Go de RAM et ne nécessite ni clé API ni accès réseau. Le flux de travail est le suivant : anonymiser localement, remplacer chaque segment détecté par un espace réservé stable et typé tel que [FULLNAME_1] ou [IBAN_1], conserver la correspondance entre espaces réservés et valeurs dans un dictionnaire local, envoyer uniquement le texte avec espaces réservés à un LLM de pointe, puis restaurer localement les valeurs réelles à partir de la réponse. Les valeurs identiques partagent le même espace réservé afin que le texte reste cohérent pour le modèle distant. Le modèle prédit 22 types d'entités au format BIO, couvrant les noms, dates, adresses, coordonnées, IBAN, cartes de crédit, montants, plaques d'immatriculation, organisations, identifiants de documents et données cadastrales. Cinq étiquettes propres au droit italien (CF, PIVA, CATASTO, DOCID, PROVINCE) sont mises en avant comme des identifiants non couverts par d'autres modèles ouverts ; elles sont créées par synthèse avec des sommes de contrôle valides. L'application ajoute une étiquette URL gérée uniquement par expression régulière. La détection combine le modèle neuronal avec une couche déterministe d'expressions régulières et de sommes de contrôle pour les identifiants structurés (e-mail, téléphone, IBAN, CF, PIVA, carte de crédit, montant, plaque d'immatriculation), où les sommes de contrôle valides priment sur le modèle. L'application fournit des espaces réservés stables, un dictionnaire local téléchargeable, un onglet de restauration tolérant aux variations de formatage, un découpage avec chevauchement pour les longs PDF, et une interface colorée par étiquette. L'entraînement a utilisé un ensemble multilingue d'environ 745 000 lignes étiquetées, avec l'italien renforcé à environ 45 %, assemblé à partir de sources réelles et synthétiques et remappé vers les 22 étiquettes au moment du chargement. Les données synthétiques suivent une approche « LLM auteur, code étiqueteur » : un LLM rédige de la prose juridique italienne avec des espaces réservés et le code injecte des valeurs valides, de sorte que les étiquettes sont exactes et qu'aucune donnée personnelle réelle n'est produite. L'entraînement a duré une époque sur un seul GPU grand public de 16 Go. Les résultats rapportés sur un benchmark italien réel de 7 000 lignes mises de côté incluent une précision micro de 0,987, un rappel micro de 0,990, un F1 micro de 0,989 et une exactitude par token de 0,998, avec un macro-F1 de 0,987 sur les 22 étiquettes. Le README indique que les cinq identifiants juridiques italiens ont obtenu 1,000, tandis que les classes plus souples incluent ZIPCODE, CREDITCARDNUMBER, STREET, CITY et ORG. Les options de déploiement incluent une application de bureau Tauri intégrant un sidecar Python/Flask sur CPU, une image Docker autonome CPU uniquement, l'exécution de l'application web depuis les sources, une CLI pour des documents uniques, et une API HTTP avec des points de terminaison tels que /health, /analyze, /pdf et /preview. Des versions précompilées Windows, macOS (Apple Silicon) et Linux AppImage sont proposées. Le projet inscrit sa conception dans la minimisation des données du RGPD et l'alignement avec l'AI Act de l'UE, et inclut un rapport technique au format PDF, une documentation du jeu de données et de la taxonomie, ainsi que des instructions de compilation.