Home › Blog › Presidio comparison

Presidio accuracy on French documents: a measured comparison

On our corpus of 41 fictional French law-firm documents, containing 374 items to redact, Presidio 2.2.364 set up for French (spaCy fr_core_news_md) found 318, or 85%, and wrongly removed 9 of the 57 terms that should have stayed readable. AnonymFiles found all 374 in full mode and 373 in light mode, with no term wrongly removed. Most of the gap comes from what Presidio does not cover for French out of the box: written-out dates, postal addresses, French company and social security numbers. Presidio, on the other hand, is far faster, free and fully customizable.

Published · Updated · 11 min read

How accurate is Presidio on French documents?

We ran Presidio on the corpus we use to measure AnonymFiles: 41 fictional documents written the way French law firms, notaries and accountants write them (judgments, pleadings, deeds, engagement letters, a payroll export, emails…). Each document comes with the list of items that must disappear (374 in all) and of terms that must stay readable (57: statute references, courts, public bodies). The counting rule is the same for both tools: an item is found if its value no longer appears in the redacted copy, and a term is wrongly redacted if it has disappeared.

Tool and settingItems found (of 374)RecallTerms wrongly redacted (of 57)Time for 41 documents
AnonymFiles, full mode374100%065 to 165 s depending on the run
AnonymFiles, light mode37399.7%05 s
Presidio, default settings31885.0%92 s (plus 3 s to load)
Presidio, score threshold 0.530080.2%82 s

A note on emails. The corpus uses domains reserved for examples (.example, .test, per RFC 2606), and Presidio's email recognizer rejects domains without a real public suffix. On the raw corpus it therefore finds only 12 of 21 emails, and its total drops to 309 (82.6%), or 291 (77.8%) at the 0.5 threshold. That would not happen on real files, so we reran the test with .fr domains, in the text and in the expected answers alike; the table shows these corrected figures, which favor Presidio. AnonymFiles scores the same on both versions of the French corpus.

Speed clearly goes to Presidio: about 2 seconds for the 41 documents, against 5 seconds for AnonymFiles in light mode and one to three minutes in full mode on our test Mac (Apple silicon, 8 GB of memory), which runs two heavier language models. For how we measure AnonymFiles itself, see our detailed detection benchmark.

What does Presidio miss, type by type?

TypeExpectedPresidio, defaultPresidio, threshold 0.5AnonymFiles, full
People166157 (94.6%)157 (94.6%)166 (100%)
Organizations5844 (75.9%)44 (75.9%)58 (100%)
Street addresses7261 (84.7%), none in full61 (84.7%), none in full72 (100%)
Emails2121 (100%)21 (100%)21 (100%)
Phone numbers2121 (100%)3 (14.3%)21 (100%)
IBANs1010 (100%)10 (100%)10 (100%)
Private dates (birth…)140 (0%)0 (0%)14 (100%)
Identifiers (SIREN, social security…)124 (33.3%)4 (33.3%)12 (100%)

Most of the 9 wrongly redacted terms are city names inside court names ("tribunal judiciaire de Bordeaux"): Presidio treats a city as a LOCATION, by design. AnonymFiles avoids these with its default "never redact" list (public bodies, statutes, courts); Presidio supports an equivalent allow_list, which we did not use when measuring its defaults.

What about medical documents and other languages?

Our corpus also includes 4 fictional French medical documents and two documents per foreign language. Presidio used each language's spaCy "md" model, with email domains corrected.

CorpusExpectedPresidio, defaultPresidio, threshold 0.5AnonymFiles, fullTerms wrongly redacted (Presidio / AnonymFiles)
Health (4 French documents)3421 (61.8%)19 (55.9%)34 (100%)2 of 6 / 0 of 6
English (2 documents)141312143 of 3 / 2 of 3
German (2 documents)14129143 of 3 / 3 of 3
Spanish (2 documents)131111133 of 3 / 3 of 3
Italian (2 documents)121210123 of 3 / 3 of 3

On medical documents the gap widens: Presidio recognized only 2 of the 12 French health identifiers (hospital patient number, practitioner RPPS and ADELI numbers, facility FINESS number, social security number). Outside French, Presidio does much better, which makes sense given its English-first design and its national recognizers. In fairness, AnonymFiles also wrongly redacts the city names in these documents (Köln, Madrid, Roma…), 11 times out of 12, as often as Presidio. Two documents per language show a trend, not a ranking. For health data, see AnonymFiles for healthcare.

What is Presidio, and what is it great at?

Presidio is an open-source Python library for detecting and anonymizing personal data, created by Microsoft and released under the MIT license. The project is moving to an independent, community-governed organization, Data Privacy Stack, and stays MIT-licensed. It has four modules: analyzer (detection in text), anonymizer (replace, mask, encrypt), image redactor (OCR-based) and structured (tabular data).

Its architecture is its main strength. Each recognizer is a plug-in: regular expressions with validation (an IBAN checksum), context words that raise the score, language models (spaCy, Stanza, transformers, GLiNER) or a call to an external service. You add or remove recognizers, set thresholds per entity, and drop it into a data pipeline in a few lines. It is an excellent choice to scrub logs, support tickets or datasets before analysis or training, for teams that want to own and audit every rule, and when throughput matters: 41 documents in 2 seconds in our test.

Its documentation is upfront about the limit: "In its default configuration, it contains recognizers and models for English." For French, it is a starting point, not a finished product.

How can you improve Presidio for French?

Based on the errors we measured, these changes would pay off most. We have not tested them: this is the integration work to plan for.

  1. A larger model. We used fr_core_news_md (43 MB) because disk space was tight on our test machine. fr_core_news_lg (545 MB) reports a slightly higher entity F-score (0.842 vs 0.832 in spaCy's published metadata) and would probably do a little better on people and organizations. A transformer or GLiNER model is another option.
  2. French recognizers. SIREN and SIRET (Luhn checksum), social security number (mod-97 key), health identifiers, written-out dates, and street addresses (number, street type, name).
  3. An allow list so courts, statutes and public bodies stay readable.
  4. Per-entity thresholds. A global 0.5 threshold wipes out phone numbers (score 0.4).
  5. Consistency across mentions. Presidio does not link "Madame Vasseur" to "Claire Vasseur". To pseudonymize a whole case file with one tag per person, you need to write that logic, plus the mapping table that goes with it.

Presidio or a ready-to-use tool: which should you choose?

CriterionPresidioAnonymFiles
Built forDevelopers, data teamsLaw firms, notaries, accountants, in-house legal teams, no developer needed
FormPython library and APIMac and Windows app
FilesText (and images with its dedicated module); extracting from Word, PDF or email and rebuilding the document is up to youWord, text or scanned PDF (local OCR), .eml and .msg emails, spreadsheets, presentations, images; PDF and Word export with the same layout
French, out of the box85% on our corpus, no dates, full addresses or French identifiers100% (99.7% in light mode) on the same corpus
Review before sendingTo be builtSide by side, required before export
Restore real names in the AI's answerPossible with the anonymizer's encryption operators, to be integratedYes, on the computer; encrypted mapping table (AES-256-GCM) never leaves it
LanguagesAny language you supply a model forInterface in French and English; foreign-language files (English, German, Spanish, Italian) handled by setting the case-file language
PriceFree (MIT), plus integration and maintenanceEUR 290 excl. VAT per seat per year, EUR 240 from 3 seats, 14-day trial

Pick Presidio if you have developers, high-volume text flows (logs, databases, tickets) and time to write and test recognizers for your language. Pick a ready-to-use tool if the documents are case files, the people handling them are lawyers or accountants, and every copy must be reviewed before it goes to an AI. More options: best anonymization software compared and choosing pseudonymization software for lawyers.

How did we measure?

Measured on October 19, 2026, on an Apple silicon Mac with 8 GB of memory, Python 3.12.4.

To test Presidio on your own fictional documents: pip install presidio-analyzer==2.2.364, install fr_core_news_md 3.8.0 from spaCy's releases, build NlpEngineProvider(nlp_configuration={"nlp_engine_name": "spacy", "models": [{"lang_code": "fr", "model_name": "fr_core_news_md"}]}) then AnalyzerEngine(nlp_engine=…, supported_languages=["fr"]), and call analyze(text=…, language="fr"). Our measurement script, the raw JSON results of every run and the corpus are available on request at contact@anonymfiles.com.

What are the limits of this comparison?

No tool reaches 100% on every real file, and a pseudonymized copy can still leak through indirect identifiers: see re-identification risk and anonymization vs pseudonymization.

FAQ

How accurate is Microsoft Presidio?

It depends on the documents and the configuration. On our 41 fictional French law-firm documents, Presidio 2.2.364 with the spaCy fr_core_news_md model found 318 of 374 expected items (85%) at its default threshold, and 300 (80%) with a 0.5 score threshold. AnonymFiles found 374 (100%) in full mode and 373 in light mode. On our small English sample, Presidio found 13 of 14.

Does Presidio work in French?

Yes, once configured: out of the box it is set up for English. You need a French language model (such as spaCy fr_core_news_md or fr_core_news_lg) and to declare French in the AnalyzerEngine. The generic rule-based recognizers (email, IBAN, phone, URL) then load for French, but there are no France-specific recognizers for company numbers (SIREN), social security numbers or postal addresses.

Is Presidio free?

Yes. Presidio is an open-source library released under the MIT license. It was created by Microsoft and is moving to an independent community organization, Data Privacy Stack. The real cost is integration: extracting text from files, tuning for your language, rebuilding documents and reviewing the output.

What is a good Presidio alternative?

If you have developers and text pipelines, the best alternative to stock Presidio is often Presidio with your own recognizers. If the people handling the documents are lawyers or accountants working on Word, PDF and email files, a ready-to-use desktop app is a better fit. AnonymFiles runs entirely on the computer, with a side-by-side review before export, for EUR 290 excl. VAT per seat per year.

Can Presidio be improved for French documents?

Yes, that is its strength. You can add regex recognizers with checksums (SIREN, social security number, written-out dates, addresses), an allow list of terms to keep, context words, per-entity thresholds, or a larger model (fr_core_news_lg) or a transformer-based one. That development and testing work is yours to do.

Is this comparison fair?

We made it as fair as we could, but it has a bias: the corpus is ours and our engine was tuned on it. We publish Presidio's exact configuration, the counting rule and the raw results, and we invite anyone to rerun the test on their own fictional documents.