PromptShieldpromptShieldpromptShield
Voir en actionFonctionnalitésComment ça marcheWorkflows IASérénitéGestion des licencesSuivi de conformité
TarifsTélécharger
Développeurs
AperçuDocs APIClés API
FAQ
Se connecter
  1. Accueil
  2. Blog
  3. Ingénierie
Ingénierie2026-06-08· 9 min de lecture

Pourquoi nous avons construit notre propre moteur de détection plutôt que d'embarquer Presidio

Microsoft Presidio est l'une des meilleures boîtes à outils open source pour la détection de données personnelles. Nous en avons lu le code, nous nous en sommes inspirés, et nous avons malgré tout choisi de ne pas l'embarquer. Voici, sans détour, pourquoi.

En une phrase : Presidio repère des données personnelles à l'intérieur d'un bloc de texte. promptShield fait quelque chose de plus étroit et de plus concret — il prend un PDF sur le poste de l'utilisateur, sans connexion, et lui permet de cliquer sur un nom dans la page et de le voir se faire noircir. Les deux tâches consistent à « trouver des données personnelles », alors on les croit identiques. Elles ne le sont pas. Et c'est précisément là où elles diffèrent que nous aurions passé tout notre temps à forcer Presidio à faire ce pour quoi il n'a jamais été conçu.

Il ne s'agit donc pas de réinventer la roue pour le plaisir. Il nous fallait vraiment une autre roue. Voici pourquoi.

Ce que nous livrons n'est pas un flux de texte

Presidio raisonne en texte brut : vous lui donnez une chaîne, il vous renvoie une liste de positions — « les caractères 40 à 51 sont un nom ». Parfait si vous analysez des messages ou une colonne de base de données, où le texte n'est rien d'autre que du texte. C'est le mauvais point de départ pour nous, car notre utilisateur ne regarde pas une chaîne de caractères. Il regarde une page.

Une page de PDF, ce n'est pas une ligne de texte — c'est une mise en page. Les mots occupent des cases à des coordonnées précises. Un même nom peut être coupé sur deux lignes, réparti sur deux colonnes, voire pivoté. Et l'utilisateur ne caviarde pas « les caractères 40 à 51 » — il noircit un rectangle sur la page qu'il a sous les yeux. Pour nous, trouver le nom et savoir où il se situe sur la page ne sont donc pas deux étapes distinctes que l'on assemblerait. C'est la même étape.

Voici ce que cela donne en pratique. Quand notre pipeline repère « Pierre Dubois » coupé entre la fin d'une ligne et le début de la suivante, il doit transformer ce seul nom en deux rectangles et noircir les deux. Quand il trouve un nom en page 1, il le retient et le noircit automatiquement en page 4, pour éviter à l'examinateur de signaler onze fois la même personne à la main. Presidio n'a aucune notion de tout cela — il ne connaît que des positions dans une chaîne. Pour le faire fonctionner, nous aurions dû l'envelopper de tant de code dédié à la page et à la mise en page que Presidio aurait géré la petite partie facile, et notre propre code tout ce qui est réellement difficile.

Nous ne faisons pas tourner un modèle. Cinq couches votent.

Chez Presidio, chaque détecteur travaille de son côté, et l'on met simplement en commun tout ce qu'ils trouvent. C'est souple, mais il y a un piège : si l'un d'eux a la gâchette facile, toutes ses fausses alertes se retrouvent dans vos résultats. Votre précision est tirée vers le bas, au niveau de votre détecteur le plus bruyant.

Nous avons pris le parti inverse : nos détecteurs doivent se mettre d'accord. Cinq d'entre eux parcourent la même page :

  • Regex — motifs structurés à haute précision (NIR, IBAN, courriel, téléphone, identifiants d'entreprise), avec une fenêtre de contexte : un simple nombre à 9 chiffres n'est pas un numéro de sécurité sociale tant que les mots alentour ne le confirment pas.
  • NER spaCy — modèles statistiques par langue, un pour chacune des 7 langues.
  • GLiNER — reconnaissance d'entités zero-shot pour les types que les modèles entraînés manquent.
  • BERT NER — reconnaissance à base de transformeur là où les modèles plus légers manquent de rappel.
  • LLM — optionnel, GGUF local ou API distante, pour les cas de contexte les plus subtils.

Au lieu de simplement mettre en commun ce qu'ils trouvent, nous les faisons voter. Si deux détecteurs signalent la même chose, nous lui faisons davantage confiance ; si trois s'accordent, plus encore. Ce qu'un seul détecteur nerveux a repéré doit franchir une barre bien plus haute avant d'être montré à l'utilisateur. Cette logique de vote — la façon dont nous pesons les accords, fusionnons les détections qui se chevauchent et reportons les résultats d'une page à l'autre — c'est le produit. C'est de là que vient réellement notre précision. Presidio vous fournit les détecteurs, mais il vous laisse délibérément trancher vous-même la question de leur réconciliation. Or écrire cette logique, c'est écrire l'essentiel d'un moteur — alors nous l'avons écrit en entier.

Cela doit tourner câble réseau débranché

promptShield est une application de bureau hors ligne. Toute la promesse, c'est que vos documents ne quittent jamais votre machine — aucun aller-retour vers le cloud, aucune clé d'API, aucun « promis, on ne journalise rien ». C'est une contrainte forte, et elle redessine la question de la dépendance.

Presidio peut tourner en local, lui aussi — mais ce n'est pas ainsi que la plupart des gens l'utilisent. Pour en tirer une bonne précision, la voie courante consiste à le brancher sur les services linguistiques cloud de Microsoft ou d'Amazon. Ce sont exactement les appels cloud que nous avons promis de ne jamais faire. Reste l'option entièrement locale de Presidio, qui repose sur des modèles plus petits et plus légers — et c'est justement la configuration que nous avons mesurée dans notre benchmark, celle qui inonde les documents financiers de faux positifs.

Et cela va plus loin que la précision. Nous devons embarquer chaque modèle d'IA dans l'installeur de l'application et le faire tourner sur la machine de l'utilisateur. Chaque modèle doit être empaqueté, verrouillé sur une version, vérifié contre toute altération, chargé en mémoire et — la partie dont personne ne vous parle — proprement déchargé ensuite. Sous Windows, si un utilisateur retire un pack de langue alors qu'une partie du modèle est encore retenue en mémoire, Windows refuse purement et simplement de supprimer les fichiers. Nous tenons donc à jour avec soin la liste de chaque endroit où un modèle pourrait encore être chargé, sur les cinq détecteurs, et nous les libérons tous avant de supprimer quoi que ce soit. Ce travail de ménage ne fonctionne que si nous contrôlons exactement comment et quand chaque modèle est chargé. Un moteur tiers qui charge ses propres modèles, selon son propre calendrier, buterait sans cesse là-dessus.

Le filtrage du bruit est le vrai rempart — et il est à nous

Dans notre comparaison directe, Presidio par défaut a émis 666 détections sur un corpus de 14 documents ; nous en avons émis 252 sur les mêmes documents. L'écart, c'est presque entièrement du bruit que nous filtrons et qu'une installation par défaut laisse passer : pays cités dans les clauses juridictionnelles (« régi par le droit français »), URL en pied de page, titres de fonction confondus avec des noms, termes génériques de service étiquetés en organisations, une même personne fragmentée en trois détections qui se chevauchent.

Chacun de ces filtres fonctionne dans les sept langues, est calibré sur de vrais contrats et états financiers, et s'exécute à l'intérieur de l'étape de vote — là où il peut peser à la fois le degré de confiance des détecteurs et l'endroit où le texte se trouve réellement sur la page. On pourrait reconstruire tout cela sous forme de modules greffés sur Presidio. Mais à ce stade, Presidio ne fait plus que lancer les détecteurs, tandis que tout ce qui rend notre résultat propre — le filtrage, le vote, la conscience de la mise en page — reste du code que nous avons dû écrire nous-mêmes. Nous porterions une lourde dépendance surtout pour en désactiver de grands pans.

Ce que nous avons abandonné

Ce choix n'a pas été gratuit, et prétendre le contraire serait malhonnête.

  1. Nous ne récupérons pas gratuitement l'étendue des reconnaisseurs de Presidio. Sa communauté livre des reconnaisseurs pour des types d'entités et des langues que nous n'avons pas construits. Chacun que nous voulons, nous l'écrivons et le testons nous-mêmes.
  2. Nous portons notre propre maintenance. Quand une bibliothèque de transformeurs introduit une rupture, c'est à nous de l'absorber — pas d'amont à qui ouvrir un ticket en attendant. Nous en avons encaissé quelques-unes.
  3. Nous ne pouvons pas nous appuyer sur le nom de Presidio. « Bâti sur Microsoft Presidio » est un raccourci de crédibilité dans une discussion d'achat. Nous l'avons échangé contre « voici notre comparaison reproductible » — plus de travail, et moins d'emprunt à une marque.

Quand préférer Presidio

Si votre problème ressemble à l'un de ceux-ci, Presidio est très probablement le bon choix, et construire le vôtre serait du gâchis :

  • Vous analysez des flux de texte — journaux de conversation, colonnes de base de données, charges utiles d'API — et non des documents délimités et mis en page.
  • Vous voulez un contrôle au niveau bibliothèque dans un système DLP Python plus large, et vous acceptez d'assumer le réglage de la précision.
  • Vous pouvez utiliser un moteur NER cloud (Azure, AWS) et souhaitez une seule abstraction PII par-dessus plusieurs fournisseurs.
  • Vous avez davantage besoin d'étendue de types et de langues que d'une expérience d'examen impeccable sur une classe de documents fixe.

Presidio est le meilleur outil pour une large part, variée, du monde de la détection de données personnelles. Nous ne sommes pas dans cette part.

La vraie règle de décision

Voici le test que nous avons appliqué, et celui que nous recommanderions à quiconque hésite entre « adopter la bibliothèque » et « construire le moteur » :

Si la dépendance fait la partie facile et que vous écrivez la partie difficile par-dessus, vous n'adoptez pas une bibliothèque — vous adoptez une contrainte.

Pour nous, les parties difficiles — savoir où le texte se situe sur la page, faire voter cinq détecteurs, gérer les modèles d'IA hors ligne, filtrer le bruit dans sept langues — constituent l'essentiel du produit, et elles sont toutes étroitement imbriquées. Presidio serait resté tout en bas à lancer les détecteurs pendant que chaque décision qui compte vraiment se prenait dans notre propre code. Alors nous avons écrit cette couche du bas, nous aussi — et nous avons obtenu un moteur dont nous comprenons chaque pièce, que nous livrons entièrement hors ligne, et que nous calibrons sur le type exact de documents que nos utilisateurs caviardent réellement.

Presidio nous a inspirés. Nous avions simplement un autre document à caviarder.

Partager

Anonymisation de documents propulsée par l'IA. Détectez et masquez les données sensibles hors ligne, en toute confidentialité.

Produit

  • Chrome extension

Compte

Mentions légales

Canada flagProudly Canadian
promptShield Inc. · 222, Wayman, Gaspé (QC) G4X 1T1, Canada · D-U-N-S® 243371918 · IP geolocation by DB-IP
© 2026 promptShield inc. Tous droits réservés.
promptShieldpromptShieldpromptShield
Fonctionnalités
Tarifs
Télécharger
Développeurs
Comment ça marche
Workflows IA
Sérénité
vs Microsoft Presidio
Alternatives
Blog
Équipe
Se connecter
S'inscrire
Tableau de bord
Politique de confidentialité
Conditions d'utilisation
Sécurité
Traitement des données (ATD)
Remboursement
Contact
Taux de change