lexform · Mesure
Qualité de détection
Dernière exécution : 2026-08-08 (exécution quotidienne) · 100 actes juridiques traités en 193 s · environnement dev
Évolution quotidienne
Le banc tourne tous les matins à 6 h sur le corpus de référence. Chaque point est une exécution ; l’empreinte du prompt permet de rattacher une variation à sa cause.
| Jour | Rappel hors dates | Précision | Fuites | Prompt |
|---|---|---|---|---|
| 2026-08-08 | 98,41 % | 99,52 % | 30 | bf077c2b499b |
| 2026-08-07 | 98,30 % | 99,52 % | 32 | bf077c2b499b |
| 2026-08-06 | 98,25 % | 99,62 % | 33 | bf077c2b499b |
| 2026-08-05 | 97,61 % | 99,67 % | 45 | bf077c2b499b |
| 2026-08-04 | 98,46 % | 99,36 % | 29 | bf077c2b499b |
| 2026-08-03 | 97,51 % | 99,73 % | 47 | bf077c2b499b |
Le modèle échantillonne : deux exécutions identiques ne rendent pas exactement le même chiffre. Une variation de quelques dixièmes de point est du bruit, pas un signal — c’est un décrochage net, ou une dérive tenue sur plusieurs jours, qui mérite qu’on regarde.
Évolution
| Campagne | Rappel hors dates | Précision | Fuites hors dates |
|---|---|---|---|
| Référence | 98,14 % | 97,88 % | 35 |
| Prompt corrigé + double passage | 98,46 % | 97,74 % | 29 |
Le gain est réel mais modeste : 6 fuites en moins. Quand le premier passage attrape déjà 98 % des entités, un second n’a presque plus rien à trouver — l’intuition selon laquelle « deux fois vaut mieux qu’une » se vérifie surtout sur un moteur qui part de plus bas. La précision, elle, n’a pas bougé : les exclusions ajoutées à la consigne (organismes publics, logiciels grand public) sont restées sans effet, ce qui reste à comprendre plutôt qu’à réécrire au jugé.
Ce que ces deux chiffres veulent dire
Le rappel est le seul qui compte pour un pare-feu : c’est la part des données identifiantes effectivement masquées avant l’envoi. 98,46 % signifie que 29 occurrences sur 1 885 sont sorties en clair, sur le périmètre que lexform couvre réellement.
Mais un rappel élevé ne prouve rien tout seul : un moteur qui masquerait tout afficherait 100 %, en rendant le document inutilisable par l’IA. C’est pourquoi le corpus contient 1 055 pièges — dates d’audience, montants, articles de loi, juridictions, personnes déjà pseudonymisées — qui ne doivent PAS être masqués. La précision mesure cette retenue : 43 pièges masqués à tort sur 1 055.
Les deux ne s’arbitrent pas à égalité. En cas de doute, notre moteur masque : un mot masqué de trop se corrige, un nom parti chez un tiers ne revient pas.
Par catégorie de donnée
Trié du moins bon au meilleur : ce sont les premières lignes qui indiquent quoi corriger.
| Catégorie | Occurrences | Fuites | Rappel |
|---|---|---|---|
| Dates de naissance — hors périmètre, jamais masqué | 115 | 115 | n/a |
| Plaques d’immatriculation | 15 | 4 | 73,33 % |
| Références de dossier (RG, Portalis…) | 155 | 12 | 92,26 % |
| Personnes morales | 230 | 6 | 97,39 % |
| Lieux de naissance | 95 | 2 | 97,89 % |
| Personnes physiques | 645 | 5 | 99,22 % |
| Adresses postales | 300 | — | 100,00 % |
| Adresses e-mail | 115 | — | 100,00 % |
| Téléphones | 100 | — | 100,00 % |
| IBAN | 65 | — | 100,00 % |
| Numéros de sécurité sociale | 35 | — | 100,00 % |
| SIREN | 80 | — | 100,00 % |
| SIRET | 20 | — | 100,00 % |
| Pièces d’identité | 10 | — | 100,00 % |
| Adresses web | 20 | — | 100,00 % |
Pièges : ce qui a été masqué à tort
| Piège | Occurrences | Masquées à tort |
|---|---|---|
| Logiciels et marques | 25 | 17 |
| Juridictions | 95 | 11 |
| Organismes publics | 60 | 11 |
| Jurisprudence | 30 | 3 |
| Parties déjà pseudonymisées | 15 | 1 |
| Dates d’acte, d’audience, d’échéance | 360 | — |
| Montants | 315 | — |
| Articles de loi | 125 | — |
| Noms communs homographes | 15 | — |
| Personnes déjà pseudonymisées | 15 | — |
Un choix assumé apparaît ici : la ville d’une juridiction (« Tribunal judiciaire de Bordeaux ») est masquée, alors que le corpus la compte comme une erreur. Un tribunal nommé restreint le champ des parties possibles ; nous préférons perdre des points sur ce banc.
Méthode
Le corpus compte 100 actes couvrant 20 types — contrats de travail, assignations, baux, statuts, conventions de divorce, plaintes pénales, mises en demeure —, soit 47 805 mots dont 5 888 à masquer. Toutes les données sont fictives, mais les clés de contrôle sont mathématiquement valides (Luhn pour les SIREN, modulo 97 pour les NIR et IBAN) afin que les validateurs se déclenchent réellement.
Un cinquième des documents est volontairement difficile : particules et noms à préposition, patronymes étrangers, et bruit de numérisation — O remplacé par 0, l par 1, accents perdus, nom coupé par une césure en fin de ligne. S’y ajoutent des pièges structurels : un patronyme homographe d’un nom commun présent dans le même acte (« M. Boulanger » qui exerce la profession de boulanger), un patronyme homographe d’une ville, deux personnes portant le même nom, un patronyme reconstituable depuis une adresse e-mail.
Chaque document traverse la chaîne complète, celle-là même que l’extension emprunte. Le scoring vérifie, pour chaque entité annotée, si sa chaîne figure encore dans la sortie. Une entité partiellement masquée compte comme détectée : le rappel affiché est donc une borne haute, ce qui est le bon critère ici — ce qui importe est qu’aucune chaîne identifiante ne parte intacte.
Limites
- Corpus synthétique : il reproduit la structure d’actes réels, pas leur désordre. Un vrai scan est plus sale.
- Corpus public : un moteur peut être réglé dessus. Le générateur est déterministe (graine
20260730) ; changer la graine produit 100 nouveaux documents de même structure, ce qui permet de vérifier qu’un moteur n’a pas été ajusté sur ce jeu précis. - Mesure faite sur l’environnement dev, en 193 secondes pour 100 documents.
- Le périmètre annoté exclut civilités et formes sociales : « Monsieur Jean Delacourt » est annoté sur « Jean Delacourt ». Un moteur qui masque aussi la civilité n’est pas pénalisé.
Reproduire la mesure
Le corpus, sa vérité terrain et le script de scoring sont téléchargeables : corpus-test-pseudonymisation.zip (100 documents, 2 000 entités annotées, 1 055 pièges).
Nos propres chiffres sont produits par scripts/eval-corpus.ts puis par le scorer fourni avec le corpus. Ils sont figés dans le dépôt : cette page ne relance rien au chargement.