By · Last updated 2026-04-03

Zpět na blogTechnické

Daň za falešně pozitivní nálezy v nástrojích pro detekci OÚ

GitHub issue #1071 projektu Presidio dokumentuje systematické falešně pozitivní nálezy. Studie z roku 2024 zjistila přesnost 22,7 % na vícejazyčných podnikových datových sadách.

April 3, 20268 min čtení
false positive ratePresidio precisionPII detection accuracyscore threshold configurationhybrid detection

Daň za falešně pozitivní nálezy v nástrojích pro detekci OÚ

Aktualizováno pro rok 2026

Většina nástrojů pro detekci OÚ je hodnocena podle úplnosti (recall). Úplnost měří, jaký podíl skutečných OÚ nástroj nalezne. Jenže přesnost (precision) je stejně důležitá. Přesnost měří, jaký podíl upozornění nástroje skutečně odpovídá OÚ.

Nízká přesnost je nákladná. Systém s 95% úplností a 22,7% přesností zachytí většinu OÚ. Přesto na každou skutečnou entitu OÚ, kterou označí, připadají 3,4 chybná upozornění. V datové sadě s 10 000 skutečnými entitami OÚ takový systém vygeneruje přibližně 44 000 upozornění. Asi 34 000 z nich bude nesprávných. Každé z nich stojí čas na přezkoumání nebo způsobuje nadměrné redigování.

To je daň za falešně pozitivní nálezy. Jde o režijní náklady, které každý tým platí za provoz systému s vysokou úplností a nízkou přesností ve velkém měřítku. Přímý náklad je čas recenzentů. Nepřímý náklad je horší: nadměrně redigované dokumenty skrývají užitečná data, zpomalují práci a oslabují důvěru v nástroj.

Co ukazuje issue #1071 projektu Presidio

GitHub diskuse #1071 projektu Microsoft Presidio (2024) dokumentuje konkrétní vzorec. Detektory TFN (australské daňové číslo) a PCI využívají validaci kontrolního součtu. Čísla, která kontrolním součtem projdou, obdrží skóre 1,0 — maximální důvěru. Žádný kontext PII není vyžadován.

Příčina: kontrola kontextových slov probíhá po kroku kontrolního součtu, nikoli před ním. Číslo, které projde kontrolním součtem, získá nejvyšší skóre bez ohledu na okolní text. Ve finančních tabulkách, vědeckých datových sadách nebo souborech protokolů to zahlcuje výstup chybnými upozorněními. Filtrování prahovou hodnotou skóre situaci nenapraví. Skóre jsou již na maximu.

Druhý vzorec se objevuje v issue #999 projektu Presidio. Segmentace německých slov selhává na složeninách. Slova jako Bundesbehörde (spolkový úřad) mohou být nesprávně rozdělena a označena jako osobní jména. To přidává šum do jakéhokoli německy psaného dokumentu.

Problém 22,7% přesnosti

Alvaro a kol. (2024) testovali Presidio na vícejazyčných podnikových datových sadách. Zjistili 22,7% přesnost. Ve skutečných dokumentech je méně než každé čtvrté upozornění Presidia skutečnou entitou OÚ. To odpovídá zkušenostem odborníků z praxe. Nástroj laděný pouze na úplnost produkuje příliš mnoho šumu pro produkční nasazení.

Studie DICOM z roku 2024 ukázala, že zvýšení score_threshold na 0,7 stále zanechávalo chybná upozornění v 38 z 39 lékařských snímků. Práh, který eliminuje šum v jednom typu dokumentu, způsobuje přehlédnuté detekce v jiném.

Tento problém se netýká výhradně Presidia. Jakýkoli pevný práh vynucuje kompromis. Vysoký práh snižuje šum, ale zvyšuje počet přehlédnutých nálezů. Nízký práh zvyšuje úplnost, ale nafukuje počet upozornění.

Skórování s ohledem na kontext

Řešením je skórování důvěry zohledňující kontext. Místo hodnocení pouze na základě shody vzoru systém zvyšuje důvěru, když se v blízkosti shody nacházejí kontextová slova. Naopak snižuje skóre, pokud kontext chybí.

Pro detekci TFN: slova jako „tax file number“, „TFN“ nebo „Australian tax“ v blízkosti čísla zvyšují jeho skóre. Číslo, které projde kontrolním součtem, ale nemá v okolí žádná kontextová slova, skóruje pod prahem přezkoumání. Nepodložené upozornění je potlačeno.

Pro mezinárodní šum: typy entit vázané na konkrétní země lze omezit na dokumenty v odpovídajícím jazyce. Detektor TFN omezený na angličtinu a australskou angličtinu eliminuje šum. Spuštění na německém obsahu bez tohoto omezení je zdrojem problému.

Třetí vrstvou hybridního systému je transformerový model. Čte celé kontextové okno kolem každého kandidáta. Rozlišuje „Jan Novák, ID pacienta 12345“ od produktového kódu, který odpovídá vzoru jména. Kontext řeší nejednoznačnost, kterou regulární výrazy ani kontrolní součty nedokáží vyřešit.

Podívejte se, jak třívrstvý detekční engine zvládá přesnost ve velkém měřítku. Průvodce vícejazyčnou detekcí OÚ vysvětluje, jak mezinárodní šum ovlivňuje soulad s GDPR.

Praktické kroky

Před nasazením jakéhokoli nástroje pro detekci OÚ změřte jeho přesnost — nejen úplnost.

Spusťte nástroj na sadu dokumentů se známými OÚ i bez nich. Spočítejte upozornění v obou skupinách. Vypočítejte true_positives / (true_positives + false_positives). Toto číslo odhalí zátěž přezkoumávání ještě před zahájením nasazení.

Pro týmy již používající Presidio je analýza distribuce skóre rychlou cestou vpřed. Exportujte vzorek detekcí s jejich skóre důvěry. Spočítejte, kolik z nich skóruje pod 0,6, 0,7 a 0,8. Velký podíl upozornění s vysokým skóre v čistém textu signalizuje problém s kontextem, nikoli s prahem. Přehled bezpečnostního souladu vysvětluje, jak to zdokumentovat v DPIA.

Zdroje

Připraveni chránit svá data?

Začněte anonymizovat PII s více než 285 typy entit ve 48 jazycích.

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.