Presidio en français : taux de détection mesuré et comparatif
Sur notre corpus de 41 documents fictifs de cabinets français, qui contient 374 informations à masquer, Presidio 2.2.364 configuré pour le français (modèle spaCy fr_core_news_md) en retrouve 318, soit 85 %, et masque à tort 9 des 57 termes qui devaient rester lisibles. AnonymFiles en retrouve 374 (100 %) en mode complet et 373 en mode léger, sans aucun terme masqué à tort. L'écart vient surtout de ce que Presidio ne couvre pas d'origine en français : les dates écrites en toutes lettres, les adresses postales, les SIREN et les numéros de sécurité sociale. Presidio est en revanche bien plus rapide, gratuit, et entièrement modifiable.
Quel est le taux de détection de Presidio en français ?
Nous avons fait passer à Presidio le corpus qui sert à mesurer AnonymFiles : 41 documents fictifs écrits comme ceux des cabinets (jugements, conclusions, actes, lettre de mission, export de paie, e-mails…). Chaque document est accompagné de la liste des informations qui doivent disparaître (374 au total) et des termes qui doivent rester lisibles (57 : articles de code, juridictions, organismes). La règle de comptage est la même pour les deux outils : une information est trouvée si sa valeur n'apparaît plus dans la copie caviardée, un terme est masqué à tort s'il en a disparu.
| Outil et réglage | Informations trouvées (sur 374) | Rappel | Termes masqués à tort (sur 57) | Temps d'analyse des 41 documents |
|---|---|---|---|---|
| AnonymFiles, mode complet | 374 | 100 % | 0 | 65 à 165 s selon les passages |
| AnonymFiles, mode léger | 373 | 99,7 % | 0 | 5 s |
| Presidio, réglage par défaut | 318 | 85,0 % | 9 | 2 s (plus 3 s de chargement) |
| Presidio, seuil de score 0,5 | 300 | 80,2 % | 8 | 2 s |
Une précision sur les e-mails. Les adresses du corpus utilisent des domaines réservés aux exemples (.example, .test, prévus par la RFC 2606), et le détecteur d'e-mails de Presidio écarte les domaines qui ne finissent pas par une extension réelle. Sur le corpus brut, il ne trouve donc que 12 e-mails sur 21, et son total tombe à 309 (82,6 %), ou 291 (77,8 %) avec le seuil de 0,5. Ce défaut n'existerait pas sur de vrais dossiers : nous avons refait la mesure avec des domaines en .fr, dans le texte comme dans les réponses attendues, et le tableau donne ces chiffres corrigés, plus favorables à Presidio. AnonymFiles obtient le même résultat sur les deux versions du corpus français.
Le temps, enfin, est nettement à l'avantage de Presidio : environ 2 secondes pour les 41 documents, contre 5 secondes pour AnonymFiles en mode léger et une à trois minutes en mode complet sur notre Mac de test (puce Apple, 8 Go de mémoire), qui fait tourner deux modèles de langue plus lourds. Pour ce que mesure AnonymFiles lui-même, voir aussi notre mesure de détection détaillée.
Que rate Presidio, type par type ?
Le total cache des écarts très différents selon le type d'information. Le détail sur le corpus français :
| Type | Attendues | Presidio, par défaut | Presidio, seuil 0,5 | AnonymFiles, complet |
|---|---|---|---|---|
| Personnes | 166 | 157 (94,6 %) | 157 (94,6 %) | 166 (100 %) |
| Organisations | 58 | 44 (75,9 %) | 44 (75,9 %) | 58 (100 %) |
| Adresses | 72 | 61 (84,7 %), aucune en entier | 61 (84,7 %), aucune en entier | 72 (100 %) |
| E-mails | 21 | 21 (100 %) | 21 (100 %) | 21 (100 %) |
| Téléphones | 21 | 21 (100 %) | 3 (14,3 %) | 21 (100 %) |
| IBAN | 10 | 10 (100 %) | 10 (100 %) | 10 (100 %) |
| Dates privées (naissance…) | 14 | 0 (0 %) | 0 (0 %) | 14 (100 %) |
| Identifiants (SIREN, sécurité sociale…) | 12 | 4 (33,3 %) | 4 (33,3 %) | 12 (100 %) |
- Personnes. C'est le point fort de Presidio, porté par le modèle spaCy. Les 9 oublis sont des cas difficiles : noms en capitales et prénoms seuls dans un export de paie (« LENOIR », « MOREAU », « Quentin »), nom de famille cité seul plus loin dans la pièce (« Delmotte », « Haddad »). Presidio ne propage pas un nom reconnu une fois à ses autres mentions.
- Organisations. Les sociétés désignées par leur forme juridique (« SAS Kalix Investissements », « SARL Azur Nettoyage Services ») sont souvent manquées ou coupées. Dans 17 des 44 organisations comptées trouvées, une partie du nom reste lisible (« SCP Gauthier et » suivi d'une étiquette).
- Adresses. Presidio n'a pas de détecteur d'adresse postale : sa page des entités prises en charge n'en mentionne aucune, et il s'appuie sur l'entité LOCATION du modèle de langue, qui repère des noms de lieux. Résultat : le nom de la voie est masqué, mais le numéro et le type de voie restent (« 27 rue » puis une étiquette). Notre règle les compte « trouvées », parce que la valeur complète a disparu. Aucune des 61 n'est pourtant masquée en entier, et 11 adresses passent en clair (« 8 impasse des Platanes », « 5 place Bellecour »).
- Téléphones. Presidio les trouve tous grâce à la bibliothèque
phonenumbers, la France figurant parmi ses régions par défaut. Mais son détecteur attribue un score de base de 0,4 : dès qu'on fixe un seuil de 0,5, seuls 3 numéros sur 21 restent masqués. À savoir avant de régler le seuil. - Dates. Aucune des 14 dates de naissance écrites en toutes lettres (« 3 juillet 1979 ») n'est détectée. Le modèle spaCy français n'a que quatre étiquettes d'entités (LOC, MISC, ORG, PER), sans étiquette de date, et le détecteur de dates de Presidio ne les a pas reconnues.
- Identifiants. Presidio fournit des détecteurs pour les États-Unis, le Royaume-Uni, l'Espagne, l'Italie, l'Allemagne et une douzaine d'autres pays, mais pas pour la France. Les SIREN et les numéros de sécurité sociale du corpus ne sont donc pas reconnus ; les 4 identifiants comptés trouvés l'ont été par hasard, recouverts par une détection de lieu.
Côté termes à conserver, les 9 erreurs de Presidio viennent surtout des villes : dans « tribunal judiciaire de Bordeaux » ou « URSSAF Pays de la Loire », il masque le nom de lieu, conformément à sa logique (une ville est une LOCATION). AnonymFiles évite ces erreurs grâce à sa liste « ne jamais masquer » par défaut (institutions, textes de loi, juridictions) ; Presidio accepte une liste équivalente (allow_list), que nous n'avons pas utilisée pour mesurer son réglage par défaut.
Et sur des documents médicaux ou dans d'autres langues ?
Notre corpus comprend aussi 4 documents médicaux fictifs (compte rendu d'hospitalisation, ordonnance, courrier de liaison, expertise de dommage corporel) et deux documents par langue étrangère. Presidio y a été configuré avec le modèle spaCy « md » de chaque langue (de_core_news_md, es_core_news_md, it_core_news_md, en_core_web_md), domaines e-mail corrigés.
| Corpus | Attendues | Presidio, par défaut | Presidio, seuil 0,5 | AnonymFiles, complet | Termes masqués à tort (Presidio / AnonymFiles) |
|---|---|---|---|---|---|
| Santé (4 documents, français) | 34 | 21 (61,8 %) | 19 (55,9 %) | 34 (100 %) | 2 sur 6 / 0 sur 6 |
| Allemand (2 documents) | 14 | 12 | 9 | 14 | 3 sur 3 / 3 sur 3 |
| Espagnol (2 documents) | 13 | 11 | 11 | 13 | 3 sur 3 / 3 sur 3 |
| Italien (2 documents) | 12 | 12 | 10 | 12 | 3 sur 3 / 3 sur 3 |
| Anglais (2 documents) | 14 | 13 | 12 | 14 | 3 sur 3 / 2 sur 3 |
Sur les documents médicaux, l'écart se creuse : Presidio ne reconnaît que 2 des 12 identifiants (numéro patient IPP, numéros RPPS et ADELI des soignants, FINESS de l'établissement, numéro de sécurité sociale), faute de détecteurs français, et masque à tort « Paracétamol » et la phrase « IPP est évaluée à 8 % ». Pour ce cas d'usage, voir AnonymFiles pour les professionnels de santé.
Dans les autres langues, Presidio fait bien mieux (48 informations sur 53, 90,6 %) : c'est logique, sa configuration de départ et ses détecteurs nationaux visent d'abord ces pays. Il manque deux téléphones espagnols et deux identifiants allemands. Un point en faveur de l'équité : AnonymFiles masque lui aussi à tort les villes de ces documents (Köln, Madrid, Roma…), 11 fois sur 12, autant que Presidio. Ces petits corpus (deux documents par langue) donnent une tendance, pas une mesure.
Qu'est-ce que Presidio, et pour quoi est-il excellent ?
Presidio est une bibliothèque Python open source de détection et d'anonymisation de données personnelles, créée par Microsoft et publiée sous licence MIT. Le projet est en cours de transfert vers une organisation communautaire indépendante, Data Privacy Stack ; il reste sous licence MIT. Il comprend quatre modules : analyzer (détection dans du texte), anonymizer (remplacement, masquage, chiffrement), image redactor (images, par OCR) et structured (données tabulaires).
Son architecture est sa grande qualité. Chaque détecteur (recognizer) est un module : expressions régulières avec validation (clé de contrôle d'un IBAN), mots de contexte qui relèvent le score, modèles de langue (spaCy, Stanza, transformers, GLiNER), ou appel à un service externe. On en ajoute, on en retire, on règle un seuil par entité, et le tout s'intègre en quelques lignes dans un pipeline de données. C'est un excellent outil :
- pour nettoyer des journaux, des tickets de support ou des jeux de données avant analyse ou entraînement ;
- pour une équipe qui veut maîtriser chaque règle, l'auditer dans le code et l'adapter à son métier ;
- quand le volume compte : dans notre test, il traite 41 documents en 2 secondes ;
Sa limite, assumée par sa documentation, est qu'il est livré réglé pour l'anglais : « In its default configuration, it contains recognizers and models for English ». En français, c'est un point de départ, pas un produit fini.
Comment améliorer Presidio pour des documents français ?
Si vous choisissez Presidio, voici, d'après nos erreurs mesurées, les réglages qui rapporteraient le plus. Nous ne les avons pas testés : c'est le travail d'intégration à prévoir.
- Un modèle plus grand. Nous avons utilisé
fr_core_news_md(43 Mo) faute de place sur notre machine de test. Le modèlefr_core_news_lg(545 Mo) annonce un score F des entités un peu meilleur (0,842 contre 0,832 selon les métadonnées publiées par spaCy) : il ferait probablement un peu mieux sur les personnes et les organisations. Un modèle de type transformer ou GLiNER est une autre piste. - Des détecteurs français. SIREN et SIRET (clé de Luhn), numéro de sécurité sociale (clé sur 97), identifiants de santé, dates en toutes lettres (« 3 juillet 1979 »), adresses (« numéro + type de voie + nom »).
- Une liste de termes à conserver. Le paramètre
allow_listévite de masquer les juridictions, les codes et les organismes. - Des seuils par entité. Un seuil global de 0,5 supprime les téléphones (score 0,4) : réglez le seuil type par type, ou relevez le score du détecteur.
- La cohérence entre mentions. Presidio ne relie pas « Madame Vasseur » à « Claire Vasseur ». Pour pseudonymiser un dossier entier avec la même étiquette par personne, il faut écrire cette logique, puis la table de correspondance qui va avec.
Presidio ou logiciel prêt à l'emploi : lequel choisir ?
La vraie question n'est pas « lequel détecte le mieux », mais « qui va s'en servir, et sur quoi ».
| Critère | Presidio | AnonymFiles |
|---|---|---|
| Pour qui | Développeurs, équipes data | Cabinets, offices, directions juridiques, sans développeur |
| Forme | Bibliothèque Python et API | Application Mac et Windows |
| Fichiers | Du texte (et des images avec son module dédié) : l'extraction depuis Word, PDF ou e-mails et la reconstruction du document sont à développer | Word, PDF texte ou scanné (OCR local), e-mails .eml et .msg, tableurs, présentations, images ; export PDF et Word à la même mise en page |
| Français, réglages par défaut | 85 % sur notre corpus, sans dates, adresses complètes ni identifiants français | 100 % (99,7 % en mode léger) sur le même corpus |
| Relecture avant envoi | À construire | Côte à côte, obligatoire avant l'export |
| Même étiquette pour une personne dans tout le dossier | À construire | Oui, étiquettes renommables |
| Remettre les vrais noms dans la réponse de l'IA | Possible avec l'anonymizer (opérateurs de chiffrement), à intégrer | Oui, sur le poste, table chiffrée (AES-256-GCM) qui ne quitte pas l'ordinateur |
| Langues | Toutes celles pour lesquelles vous fournissez un modèle | Interface en français et en anglais ; pièces étrangères (anglais, allemand, espagnol, italien) traitées en choisissant la langue du dossier, mesurées ici sur de petits corpus |
| Vitesse | Très rapide (2 s pour 41 documents) | 5 s en mode léger, une à trois minutes en mode complet |
| Prix | Gratuit (MIT), coût d'intégration et de maintenance | 290 € HT par an et par poste, 240 € HT dès 3 postes, essai de 14 jours |
Choisissez Presidio si vous avez des développeurs, des flux de texte à traiter en volume (journaux, bases, tickets), et le temps d'écrire et de tester les détecteurs français. Choisissez un logiciel prêt à l'emploi si les documents sont des pièces de dossier, si ceux qui les traitent sont avocats, notaires ou comptables, et si chaque copie doit être relue avant de partir vers une IA. Pour comparer les autres solutions du marché : comparatif des logiciels d'anonymisation et choisir un logiciel de pseudonymisation pour avocat.
Comment avons-nous mesuré ?
La mesure a été faite le 19 octobre 2026, sur un Mac à puce Apple de 8 Go de mémoire, sous Python 3.12.4.
- Corpus. 41 documents fictifs de cabinets (374 informations attendues, 57 termes à conserver), 4 documents médicaux (34 et 6), 2 documents par langue étrangère. Tout y est inventé (les IBAN ont des clés valides), avec des pièges volontaires : homonymes, noms en capitales ou dans des tableaux, dates de naissance à côté de dates de textes de loi. 45 autres éléments (montants, numéros de rôle, références cadastrales) relèvent du masquage à la main et ne sont comptés pour aucun des deux outils.
- Presidio.
presidio-analyzer2.2.364, spaCy 3.8.16, modèlefr_core_news_md3.8.0, installés dans un environnement séparé.AnalyzerEnginecréé avec unNlpEngineProviderspaCy français etsupported_languages=["fr"], avec ses détecteurs prédéfinis chargés pour le français : e-mail, IBAN, téléphone, URL, IP, MAC, crypto, dates, licence médicale et le détecteur spaCy (personnes, lieux, organisations). Chaque document est analysé seul, au seuil par défaut (0), puis en ne gardant que les détections de score 0,5 ou plus. Chaque zone détectée est remplacée par son type entre chevrons, comme le fait l'anonymizer par défaut. - AnonymFiles. Version 0.6.0, moteur réel (deux modèles locaux et des règles en mode complet, modèle de noms et règles en mode léger), réseau coupé, liste « ne jamais masquer » par défaut active comme dans l'application. Les chiffres cités sont ceux d'« un dossier par document », chaque pièce traitée seule, comme pour Presidio ; ils sont identiques quand les 41 pièces forment un seul dossier.
- Règle de comptage. Une information est trouvée si sa valeur, mot entier et sans tenir compte de la casse, n'apparaît plus dans la copie ; un terme est masqué à tort s'il a disparu. Cette règle est indulgente : une adresse dont seul le nom de rue est masqué compte comme trouvée. Nous avons donc aussi compté les informations partiellement masquées : 82 pour Presidio (dont les 61 adresses), 1 pour AnonymFiles en mode complet, où seule la civilité reste lisible (« Monsieur » devant l'étiquette).
Pour refaire le test de Presidio sur vos propres documents fictifs, les étapes sont simples : pip install presidio-analyzer==2.2.364, installez le modèle fr_core_news_md 3.8.0 depuis les versions publiées par spaCy, créez l'analyseur avec NlpEngineProvider(nlp_configuration={"nlp_engine_name": "spacy", "models": [{"lang_code": "fr", "model_name": "fr_core_news_md"}]}) puis AnalyzerEngine(nlp_engine=…, supported_languages=["fr"]), et appelez analyze(text=…, language="fr"). Notre script de mesure, les résultats bruts de chaque passage (JSON) et le corpus sont disponibles sur demande à contact@anonymfiles.com.
Quelles sont les limites de ce comparatif ?
- C'est notre corpus. Nous l'avons écrit, et notre moteur a été mis au point en le mesurant : il est normal qu'AnonymFiles y obtienne de très bons résultats. Sur des documents que nous n'avons jamais vus, il peut rater des choses, d'où la relecture obligatoire avant l'export.
- Presidio n'est pas réglé. Nous avons mesuré sa configuration d'origine pour le français, avec le modèle « md ». Une équipe qui ajoute les détecteurs listés plus haut obtiendra mieux.
- Du texte seulement. La mesure ne dit rien de l'extraction depuis Word, PDF ou scans.
- Des corpus étrangers minuscules. Deux documents par langue ne suffisent pas à classer deux outils.
- Des chiffres non comparables à d'autres études. Hexagone AI a publié une comparaison avec Presidio sur 5 000 échantillons du jeu de données public ai4privacy (évaluation interne, 2024), où Presidio obtient 74,74 % en français. Jeu de données, métrique et configuration diffèrent des nôtres : ces chiffres ne s'additionnent ni ne se comparent. Notre avis sur cette solution : alternative à Hexagone AI.
Aucun outil n'atteint 100 % sur tous les dossiers réels. Une copie pseudonymisée reste aussi exposée aux identifiants indirects (fonction, lieu, montant) : voir le risque de ré-identification et la différence entre anonymisation et pseudonymisation.
Questions fréquentes
Presidio fonctionne-t-il en français ?
Oui, à condition de le configurer : sa configuration par défaut est prévue pour l'anglais. Il faut lui donner un modèle de langue français (par exemple spaCy fr_core_news_md ou fr_core_news_lg) et déclarer le français dans l'AnalyzerEngine. Les détecteurs à règles génériques (e-mail, IBAN, téléphone, URL) se chargent alors pour le français, mais aucun détecteur propre à la France (SIREN, numéro de sécurité sociale, adresse postale) n'est fourni.
Quel est le taux de détection de Microsoft Presidio ?
Il dépend du corpus et de la configuration. Sur nos 41 documents fictifs de cabinets français, Presidio 2.2.364 avec spaCy fr_core_news_md retrouve 318 des 374 informations attendues (85 %) avec son seuil par défaut, et 300 (80 %) avec un seuil de 0,5. AnonymFiles en retrouve 374 (100 %) en mode complet et 373 en mode léger.
Presidio est-il gratuit ?
Oui. Presidio est une bibliothèque open source publiée sous licence MIT, créée par Microsoft et en cours de transfert vers une organisation communautaire, Data Privacy Stack. Le coût réel est celui de l'intégration : extraction du texte des fichiers, réglages pour le français, reconstruction des documents, relecture.
Pourquoi Presidio ne détecte-t-il pas bien les adresses françaises ?
Presidio n'a pas de détecteur d'adresse postale : il s'appuie sur l'entité LOCATION du modèle de langue, qui repère des noms de lieux. Sur notre corpus, il masque le nom de la voie dans 61 adresses sur 72, mais jamais l'adresse entière : le numéro et le type de voie restent visibles, par exemple « 27 rue » suivi d'une étiquette.
Peut-on améliorer Presidio pour des documents français ?
Oui, c'est sa force : on peut ajouter des détecteurs à base d'expressions régulières (SIREN, numéro de sécurité sociale, dates en toutes lettres, adresses), une liste de termes à ne jamais masquer, des mots de contexte, ou un modèle plus grand (fr_core_news_lg) ou de type transformer. Ce travail de développement et de test reste à la charge de votre équipe.
Quelle alternative à Presidio pour un cabinet ?
Si personne ne développe dans le cabinet, un logiciel prêt à l'emploi qui fonctionne sur le poste est plus adapté : il ouvre les fichiers Word, PDF, e-mails et tableurs, propose une relecture avant l'export et garde la table de correspondance sur l'ordinateur. AnonymFiles fait cela, entièrement en local, pour 290 € HT par an et par poste.
Ce comparatif est-il impartial ?
Il est aussi honnête que nous avons pu le rendre, mais il a un biais : le corpus est le nôtre, et notre moteur a été mis au point avec lui. Nous publions la configuration exacte de Presidio, la règle de comptage et les résultats bruts, et nous invitons chacun à refaire la mesure sur ses propres documents fictifs.