By · Last updated 2026-06-11

Retour au blogGDPR & Conformité

Pourquoi les outils PII auto-hébergés échouent aux...

spaCy 3.4.4 produit des résultats NER différents de spaCy 3.5.1. Une entreprise de services financiers découvre que 3 % des documents étaient...

June 11, 20266 min de lecture
compliance auditenvironment consistencyspaCy versionsself-hosted PIIreproducible anonymization

Pourquoi les outils PII auto-hébergés échouent aux audits de conformité

Le RGPD exige des preuves. Vous devez montrer que la suppression des données personnelles a été effectuée de la même façon à chaque fois. Les auditeurs DPA vérifient cela directement. Ils veulent voir une méthode claire et cohérente appliquée à toutes les données.

Presidio auto-hébergé a un vrai problème ici. Ce n'est pas un problème de configuration. C'est une limite fondamentale des outils NLP auto-hébergés.

Qu'est-ce que la dérive d'environnement ?

Presidio auto-hébergé tourne en dev, staging et production. Chacun de ces environnements peut se comporter différemment. Donc la même entrée peut produire des résultats différents dans chacun.

C'est ce qu'on appelle la dérive d'environnement. Elle a quatre causes principales.

Dérive de version de modèle

Les modèles spaCy sont versionnés. Le modèle en_core_web_lg 3.4.4 et en_core_web_lg 3.5.1 ont été entraînés sur des données différentes. Ils utilisent aussi des architectures différentes. Donc le même document peut donner des résultats NER différents avec chaque version.

Un setup courant ressemble à ceci :

  • Dev : en_core_web_lg 3.4.4 — installé au démarrage du projet
  • Staging : en_core_web_lg 3.5.0 — mis à jour lors d'une maintenance
  • Production : en_core_web_lg 3.5.1 — mis à jour lors d'un correctif de sécurité

Cela fait trois setups. Trois versions de modèles. Trois comportements de détection différents. Les tests passent en staging. Mais la production tourne un modèle différent. Donc l'écart reste caché.

Dérive de dépendance

spaCy 3.4.x et 3.5.x diffèrent dans la façon de segmenter les phrases. Ce changement affecte comment les noms sont trouvés près des limites de phrase. Ces changements figurent dans les notes de version de spaCy. Mais la plupart des équipes ne les vérifient pas pour l'impact sur la détection des données personnelles.

Dérive de configuration

Les seuils de score définis en dev peuvent ne pas être transférés en production. Les listes de mots personnalisées peuvent aussi différer entre les setups. Ces écarts sont fréquents. Ils sont rarement suivis. Consultez notre guide de conformité RGPD pour ce que les auditeurs recherchent.

Différences matérielles

Les calculs dans les modèles NLP ne sont pas identiques sur tous les CPU et GPU. Un ordinateur portable et un serveur peuvent donner des scores légèrement différents. Donc certains noms peuvent être trouvés sur une machine mais pas sur une autre.

Un vrai résultat d'audit

Une banque a testé son setup Presidio auto-hébergé.

Setup de test : Presidio avec spaCy 3.4.4 sur le cluster staging. Setup en production : Presidio avec spaCy 3.5.1 sur le cluster de production.

Ils ont traité les mêmes documents dans les deux systèmes. Puis ils ont comparé les résultats. Le résultat : 3 % des documents avaient des résultats de suppression de données personnelles différents. Certains noms étaient détectés en staging mais pas en production. D'autres avaient des limites de texte différentes.

Le résultat de l'audit était direct : « L'organisation ne peut pas démontrer une application cohérente des mesures techniques de suppression des données personnelles en raison de variations spécifiques à chaque setup. »

L'article 32 du RGPD exige des mesures techniques appropriées. Les règles de l'EDPB sur la suppression des données personnelles exigent cohérence et reproductibilité. Un taux de 3 % sur 100 000 documents par mois signifie 3 000 documents avec des résultats incohérents chaque mois. Certains sont des faux négatifs. Des données personnelles que le staging aurait détectées restent dans la sortie de production. C'est un manquement à la conformité.

La banque a ensuite migré vers un SaaS géré. Le résultat d'audit a été clôturé. Consultez notre page sécurité et conformité pour les détails.

Pourquoi les services gérés sont différents

Un service géré fait tourner une seule version de moteur. Tous les utilisateurs utilisent la même version en même temps. Les mises à jour de modèle sont appliquées depuis un seul endroit. La configuration est aussi gérée centralement avec un historique complet. Le matériel des utilisateurs n'affecte pas les résultats.

Donc le même document traité aujourd'hui donne le même résultat le mois prochain. Si la version du moteur change, ce changement est enregistré et versionné.

La différence dans la piste d'audit est essentielle.

Piste d'audit auto-hébergée :

  • « Utilisé : Presidio 2.2.35 avec spaCy en_core_web_lg 3.5.1 sur Ubuntu 22.04. »
  • Était-ce la même version qu'en staging ? Inconnu.
  • Le modèle a-t-il changé depuis le traitement de ce document ? Inconnu sauf si suivi.
  • Le seuil de score est-il le même qu'en test ? Cela dépend de la gestion de configuration.

Piste d'audit du service géré :

  • « Utilisé : API anonym.legal, version du moteur 4.22.1, le 2025-03-15T14:22:31Z. »
  • Même version pour tous les utilisateurs ? Oui.
  • A-t-elle changé ? Les versions de moteur sont fixées. La version 4.22.1 désigne toujours le même moteur.
  • La configuration est-elle reproductible ? Oui. L'ID de preset est enregistré. La configuration à cette version est récupérable.

La piste gérée est claire. La piste auto-hébergée exige un suivi rigoureux que la plupart des équipes omettent.

Améliorer la cohérence d'un setup auto-hébergé

Si l'auto-hébergement est requis, vous pouvez réduire la dérive en quatre étapes.

D'abord, fixez les versions de modèles. Verrouillez les versions exactes dans tous les fichiers de déploiement. Bloquez les mises à jour automatiques. Suivez les versions dans le contrôle de source.

Ensuite, figez les images de conteneur. Créez des images Docker avec les versions exactes de modèles incluses. Étiquetez chaque image avec la version du modèle, la version de Presidio et la date. Ne mettez pas à jour les images de base sans tester d'abord.

Aussi, gardez la config dans le code. Stockez tous les paramètres Presidio dans des fichiers versionnés. Cela inclut les détecteurs, les seuils de score et les langues actives. Déployez la configuration avec l'application.

Enfin, testez entre les setups. Après toute mise à jour, lancez un ensemble fixe de documents tests dans le nouveau setup. Comparez les résultats avec une référence stockée. Automatisez cette vérification. Consultez la FAQ pour les questions fréquentes sur les tests de régression PII automatisés.

Ces étapes aident. Mais elles ajoutent aussi du travail. Un service géré offre la même cohérence sans l'effort supplémentaire.

Conclusion

La suppression cohérente des données personnelles n'apparaît pas dans les fiches produit. Mais elle devient critique quand les auditeurs demandent des preuves.

Sans soins actifs, les outils PII auto-hébergés dérivent. Les changements de version créent des écarts silencieux. Ces écarts apparaissent comme des résultats d'audit.

Les services gérés offrent la cohérence par défaut. Le moteur tourne depuis un seul endroit. Les setups des utilisateurs n'affectent pas les résultats. Pour les équipes axées sur la conformité, c'est un avantage direct.

Sources

Prêt à protéger vos données ?

Commencez à anonymiser les PII avec plus de 285 types d'entités dans 48 langues.

About this page

We update this page when our platform or the law changes.

Read our founder note for how we work.

Each change shows up in the timestamp at the top.

Related reading

We follow these rules

  • GDPR (EU 2016/679).
  • ISO/IEC 27001:2022.
  • NIS2 (EU 2022/2555).
  • HIPAA safe harbor under 45 CFR § 164.514(b)(2).

Our promise

We do not sell your data.

We do not train models on your text.

We store your files in Germany.

You can delete your account at any time.

You own your work.

Where we run

Our servers live in Falkenstein, Germany.

We use Hetzner. They hold ISO 27001 certification.

All data stays in the EU.

Backups run every day.

Need help?

Email support@anonym.legal.

We reply within one business day.

How we test

We run a full check suite on every release.

Each surface gets its own sweep script and report.

Human reviewers spot-check the output each week.

We track recall and precision on a labelled set.

Bad runs block the deploy.

What we never do

  • We never sell your information to third parties.
  • We never train models on what you upload.
  • We never keep your work after you delete it.
  • We never share keys with any outside firm.
  • We never run ads inside the product.

Plans in plain words

We sell credits, not seats.

One credit covers one short job.

Long jobs use a few credits each.

You can top up at any time.

Unused credits roll over each month.

Read the plans page for current rates.

Who built this

A small team of engineers and lawyers built this.

We ship from Europe and work in the open.

Our founder note spells out why we started.

Where to start

How the parts fit

A browser add-on cleans text inside Chrome.

A Word plug-in handles drafts in Office.

A small desktop tool works on whole folders.

An agent protocol link feeds large models safely.

All four share one core engine and one rule set.

Words from our team

We started this work after a lunch about cookies.

One friend kept getting odd ads on her phone.

We asked why a court file leaked through a draft.

We sketched the first build on a napkin that week.

By month three we had a tiny demo for a friend.

She used it on her first case the next day.

Common questions we hear

Can the tool read scanned PDFs? Yes, with OCR.

Does it work on long files? Yes, in small chunks.

Can I roll my own rule set? Yes, save it as a preset.

Does it run offline? The desktop build runs offline.

Do you keep my files? No, the cloud build wipes after each run.

Will it learn from my work? No, we never train on inputs.

A short tour of the workflow

Upload a file or paste a snippet of prose.

Pick the entities you want gone from the draft.

Choose a method: replace, mask, hash, encrypt, or redact.

Press run and watch the side panel show each hit.

Skim the result and tweak any rule that misfired.

Save the cleaned file or send it to a teammate.