Detection accuracy: how we test

We test detection with generated documents in 46 languages at the default threshold of 85%, and with a second value set that catches a repair written for one set of strings. This page describes the method and its limits; it does not publish hit rates. These are test texts, not customer documents.

What was measured

For each of 46 languages the corpus holds a letter and a running-prose document with one person's data — name, street, house number, postcode, city, date of birth, e-mail, phone and, where the country has them, an IBAN and a national identifier (16–20 values per language) — plus one document with no personal data at all. The values are generated and pass their own check digits; they belong to no real person. A value counts as found only if it is covered completely. The second value set ("holdout") keeps the documents and replaces the values, so a repair written for one set of strings cannot pass as a general one.

Last run on 2026-09-26 with the product's own detection path, on desktop commit 7bae21d. The test has not been repeated for every release since.

The threshold matters

The threshold is a setting in every preset. Detection does not fall off gradually above 85% — it drops in one step, because many recognizers score exactly 0.85. A higher threshold redacts less text by mistake and misses more. The app shows a note when a preset is set above 85%.

The other side of a low threshold: in documents that contain no personal data at all, it also redacts some text that is not personal data. That is the cost of caution, and the reason the threshold is a setting.

Limits of this test

  • The test uses texts written for this purpose, not customer documents. Your documents, layouts and names can score higher or lower.
  • It uses typed text. Pages read by text recognition (scanned documents, photos) are less accurate and are not part of this test.
  • For Indonesian, recognition of place names was measured only on real place names; invented or very rare names were not recognised in our test.
  • Whether the models recognise invented names of people and places as well as real ones is not established by this measurement, and no figure for it is published here.
  • Per language the sample is small (16–20 values), so one value changes the result for a language noticeably.