All research
Full-dataset evaluation

AI4Privacy: 47,566 documents in six languages

The same protocol as PII-INDEXBENCH, applied to the most cited public PII corpus and scored per language and per kind of personal data. It also comes with the caveats that follow from a corpus this widely distributed.

Run by Hexagone AI, September 2026. Public dataset, reproducible.

47,566 synthetic emails, forms, chats and JSON payloads in six languages: English, French, German, Spanish, Italian and Dutch. It is the most widely cited public PII corpus, and that popularity cuts both ways, because it has been public long enough that any large model has probably read it during training.

Same protocol as the PII-INDEXBENCH run, same five systems, same scorer, over the whole validation split: 47,566 documents and 293,712 annotated values.

95.3%
Recall
Share of the annotated personal values the output removed, the highest of the five systems here as well, with the OpenAI Privacy Filter next at 82.9%.
80.2%
Precision
Lower than on PII-INDEXBENCH, for a reason worth reading: three quarters of what costs us here is never annotated as personal data anywhere in the corpus. The section below takes the figure apart.
1.3 pts
Spread between languages
Between the best language (French, 95.9%) and the weakest (Dutch, 94.7%) on recall.

Every kind of data the benchmark annotates

Precision, recall and F1 on AI4Privacy PII-Masking-300k, all annotated types, five systems
SystemRecallshare of personal data foundPrecisionF1F1 · exact bounds
Hexagone AIapi.hexagone.ai, masking mode95.3%80.2%87.1%67.7%
OpenMed PIIOpenMed/OpenMed-PII-SuperClinical-Large-434M-v186.8%86.8%86.8%65.4%
OpenAI Privacy Filteropenai/privacy-filter, 1.5B, run locally82.9%89.5%86.1%54.0%
GLiNERurchade/gliner_multi-v2.150.8%60.1%55.1%47.9%
Microsoft Presidiopresidio-analyzer + spaCy en_core_web_lg49.0%65.5%56.1%31.8%

Hexagone AI, language by language

Hexagone AI results per language on AI4Privacy
LanguageDocumentsRecallshare of personal data foundPrecision
English7,94295.9%79.9%
French8,39095.9%81.9%
German8,10095.2%78.9%
Spanish7,80395.6%81.1%
Italian7,87894.6%80.1%
Dutch7,45394.7%79.4%

French comes out ahead of English here, which is what you would expect from a system built in France, and which is the opposite of the usual pattern for tools in this category.

Detection coverage by kind of personal data on AI4Privacy
Kind of personal dataSpansHexagone AIOpenMedOPFPresidioGLiNER
NamesPERSON52,29897.8%93.7%95.2%36.3%83.4%
Street addressesADDRESS41,02495.4%70.8%97.4%no label56.9%
PlacesLOCATION36,31891.9%94.0%40.2%37.3%41.5%
Phone numbersPHONE_NUMBER12,60197.0%85.2%99.4%64.1%60.5%
Email addressesEMAIL_ADDRESS15,88399.8%99.5%99.6%99.7%58.3%
Social security numbersSSN15,79198.0%86.8%99.7%71.2%23.6%
Dates and timesDATE_TIME49,28591.2%92.8%53.1%50.1%62.5%
National ID numbersNATIONAL_ID16,69396.4%no label95.5%no labelno label
Passport numbersPASSPORT_NUMBER15,57096.0%no label95.9%46.6%29.7%
Driving licencesDRIVER_LICENSE15,20797.4%no label99.0%74.7%18.9%
IP addressesIP_ADDRESS14,11099.0%99.4%99.1%99.6%no label
Passwords, keys and tokensPASSWORD10,30390.3%74.6%97.7%no labelno label

Best in each row is bold. « No label » means the system has no category for that kind of data at all, so it is neither scored nor penalised on that row, which is the generous reading of a missing vocabulary. The shading of each cell follows the value in it.

Why this run should be read alongside PII-INDEXBENCH

AI4Privacy has been on HuggingFace for years, so any large model has plausibly seen it during training, which flatters anything with a language model inside it, ours included. PII-INDEXBENCH is not distributed there, and where the two sets of numbers disagree we would trust the PII-INDEXBENCH figure.

Reading the precision number

Three quarters of it is never annotated at all

Precision is 80.2% here against 93.5% on PII-INDEXBENCH, and the gap comes from the annotation scope rather than from anything different in the pipeline. This benchmark labels the values themselves without labelling the fields around them, and it does not label organisations at all.

The corpus is multilingual, and a hand-written list of field labels and salutations in six languages would amount to a classifier tuned until the answer flattered us. Every flagged span is therefore checked against the 210,529 distinct strings this benchmark annotates as personal data somewhere in its 47,566 documents, which is a check anyone can repeat from the published records.

The 94,924 spans that cost us precision

Every prediction on AI4Privacy that touched no annotated span, sorted against the benchmark's own annotations.

  • 74.1% A value this benchmark never annotates as personal data, anywhere (70,298)
  • 25.9% A value it does annotate elsewhere in the corpus, but not here (24,626)
  1. 64.7%61,395 spans

    Field labels and document scaffolding, in six languages

    Rule. The exact string appears as an annotated value in none of the 47,566 documents.

    State, Country, Street, Stadt, Straße, Rue, Calle, Postleitzahl, IP-Adresse. We mask the label as well as the value it introduces, which is over-masking on any reading, even if what it costs is readability rather than privacy. It is also the largest single reason this figure sits below the 93.5% we reach on PII-INDEXBENCH.

    What Hexagone AI removed

    - Land: Deutschland - Gebäude: 543 - Straße: Amselreutehof - Stadt: Rosenfeld - Bundesland: BW

    What the benchmark annotates

    - Land: Deutschland - Gebäude: 543 - Straße: Amselreutehof - Stadt: Rosenfeld - Bundesland: BW

    Same excerpt on both sides, from AI4Privacy record doc-27758, verbatim.

  2. 9.4%8,903 spans

    Organisations, which this gold never annotates at all

    Rule. Our prediction is typed COMPANY. AI4Privacy annotates twelve kinds of personal data and organisations are not among them.

    Every employer, hospital, university and platform we remove counts against us here, because there is no category in which it could have been marked correct: Universidad de Madrid, Université de Genève, Università di Zurigo. Setting those predictions aside lifts precision from 80.2% to 81.7%, and we report the uncorrected figure as the headline.

    What Hexagone AI removed

    password reset has been requested for your EduPortal account

    What the benchmark annotates

    password reset has been requested for your EduPortal account

    Same excerpt on both sides, from AI4Privacy record doc-11, verbatim.

  3. 25.9%24,626 spans

    A value the benchmark annotates in other documents, but not in this one

    Rule. The exact string is an annotated value somewhere in the corpus, just not at this occurrence.

    Country names (Deutschland, Suisse, España, Nederland), salutations (Cher, Gentile, Herr), initials and bare numbers. The benchmark treats a country as personal data in one document and as ordinary prose in the next, and we have no way of telling the two apart from the text alone. A country alongside a profession and a date also happens to be the combination that narrows a person down, so we would rather remove it than guess.

    What Hexagone AI removed

    die Gesundheitsversorgung in Deutschland zu optimieren und die Gesundheit der Bevölkerung nachhaltig zu fördern

    What the benchmark annotates

    die Gesundheitsversorgung in Deutschland zu optimieren und die Gesundheit der Bevölkerung nachhaltig zu fördern

    Same excerpt on both sides, from AI4Privacy record doc-25142, verbatim.

Run it on your own documents.

A benchmark is someone else's data. One week free, no credit card, and the files never leave your machine, so there is nothing to risk in checking for yourself.