Reproduzierbare Erkennungsqualität. Nicht "vertrau uns" — prüfe nach.
Datenmaske veröffentlicht eine versionierte, reproduzierbare Benchmark-Stichprobe zur Erkennung deutscher personenbezogener Daten und zur Irreversibilität der Schwärzung. Methodik, Korpus-Hash und Rohdaten sind öffentlich; jede Zahl ist ihrer Quelle zugeordnet.
Korpus
6 PDFs
synthetisch, bepflanzt
PII-Entitäten
45
Ground-Truth
Irreversibel
✓ ja
MuPDF verifiziert
Stand
16.07.2026
Version 0.1.0
01 / Methodik
Wie gemessen wird
Korpus
Synthetische deutsche Test-PDFs (Arbeitsvertrag, Bewerbung, Behördenbescheid, Rechnung, Arztbrief, Anwaltsschreiben) mit platzierten PII-Entitäten und Ground-Truth-JSON-Sidecars.
Pipeline
pdfjs-dist (Textextraktion) → regelbasierte Muster + spaCy/GLiNER NER
(selbst gehostet, EU) → MuPDF applyRedactions().
Hash
SHA-256 über die kanonische Ground-Truth-JSON-Konkatenation
(scripts/test-docs/*.json) — nicht
über rohe PDF-Bytes, da pdf-lib nicht-deterministische Metadaten einbettet.
Korpus-Hash (SHA-256)
231861473137d899722f0c92f9b7a264daa01dada73beb01ae67f8b1a2b60967
Korpus: synthetische deutsche Test-PDFs mit platzierten PII-Entitäten. Pipeline-Stufen: pdfjs-dist (Textextraktion) → regelbasierte Muster + spaCy/GLiNER NER (selbst gehostet, EU) → MuPDF applyRedactions(). Hash gebildet über die kanonische Ground-Truth-JSON-Konkatenation (scripts/test-docs/*.json). Irreversibilitäts-Nachweis ist deterministisch und offline reproduzierbar (scripts/redaction-claim-test.ts).
02 / Ergebnisse
Recall & Precision pro PII-Typ
| Typ | Recall | Precision | FN | FP |
|---|---|---|---|---|
| address | 100 % | 53 % | 0 | 8 |
| birth_date | 100 % | 100 % | 0 | 0 |
| 83 % | 100 % | 1 | 0 | |
| iban | 100 % | 100 % | 0 | 0 |
| insurance_number | 100 % | 100 % | 0 | 0 |
| name | 83 % | 77 % | 2 | 3 |
| phone | 100 % | 100 % | 0 | 0 |
| tax_id | 100 % | 100 % | 0 | 0 |
| gesamt | 93 % | 79 % | ||
03 / Irreversibilität
Nachweis: echte Content-Stream-Entfernung
Der Irreversibilitäts-Nachweis ist deterministisch und offline reproduzierbar. Er
vergleicht eine klassische "manuelle" Schwärzung (schwarzes Rechteck über dem
Text) mit der echten Datenmaske-Pipeline (MuPDF applyRedactions()).
Manuell — schwarzer Balken
Ein schwarzes Rechteck wird über die IBAN gezeichnet. Das PDF wird mit pdfjs-dist wieder ausgelesen.
IBAN wiederherstellbar: JA
Datenmaske — applyRedactions()
MuPDF entfernt den Text physisch aus dem Content-Stream; der Verifizierer prüft, dass die IBAN nicht mehr im Text extrahierbar ist.
IBAN entfernt: JA Verifizierung passed: true
Quelle: scripts/redaction-claim-test.ts
(Runner-Hash: 3669496ba337feb8…).
Geplante Test-IBAN: DE89 3704 0044 0532 0130 00.
Dritte-Partei-Referenz
Essex Software — Stichprobe öffentlich indizierter PDFs: bei rund jedem sechsten Dokument (17 %, n=72) war der vermeintlich geschwärzte Text noch auswählbar.
Quelle: https://essexsoftware.com/research/ — abgerufen 16.07.2026.
04 / Im Branchenvergleich
Status der Wettbewerber
Jede Wettbewerber-Aussage ist entweder eine Herstelleraussage (mit Quelle und Abrufdatum) oder eine datierte Eigenmessung. Wir veröffentlichen keine strittigen gemessenen "Wettbewerber-Recall = X %"-Zahlen (UWG §5).
Foxit PDF Editor
vendor english onlyLaut eigener Security-Seite unterstützt die Mustererkennung nur englischsprachige Dokumente — für deutsche PII also per Herstelleraussage nicht anwendbar.
Quelle: https://www.foxit.com/pdf-editor/security-and-privacy/ — abgerufen 16.07.2026.
Adobe Acrobat Pro
vendor no german nerAdobe liefert kein dediziertes deutsches NER-Musterpaket für die Schwärzung; Dokumente müssen manuell markiert werden.
Quelle: https://helpx.adobe.com/acrobat/using/redact-pdf.html — abgerufen 16.07.2026.
Docuflair
pendingManuelle Messung am selben Korpus geplant; Rohdaten werden unter scripts/benchmark/competitors/docuflair/ veröffentlicht.
Quelle:
scripts/benchmark/competitors/MANIFEST.md
— abgerufen 16.07.2026.
Vollständige Beleg-Liste:
scripts/benchmark/competitors/MANIFEST.md.
05 / Funktionsabdeckung
Was heute messbar funktioniert — und was noch fehlt
„Bestanden“ gibt es nur mit reproduzierbarer Prüfung. Teilstände und fehlende Funktionen bleiben sichtbar, damit die Roadmap nicht als Produktbehauptung erscheint.
| Funktion | Web | Desktop | Messmethode |
|---|---|---|---|
| PDF/A-1b/2b/3b | passGhostscript conversion validated with the exact veraPDF flavour; permanent-redaction regression rechecked after conversion | partialNative adapter executed against the same real Ghostscript + veraPDF toolchain; automated check failed in this run | veraPDF profiles + visual and irreversibility regression |
| QR- und Barcode-Erkennung | passLocal ZXing detector over generated QR/DataMatrix/Code128 fixtures; payload discarded | passLocal rxing detector over generated QR/DataMatrix/Code128 fixtures; payload discarded | planted QR/DataMatrix/Code128 corpus; format and redactable bbox checks |
| Gesichter, Unterschriften, Stempel, Logos | partialOffline semantic classifier over bounded embedded-image crops; ambiguous regions remain generic and are never auto-accepted | partialNative classifier parity covers all four semantic classes plus a generic negative; shared published corpus measures the equivalent Web heuristic | procedural image-crop corpus; per-class recall/precision; diverse licensed corpus and bbox mAP remain external validation |
| DOCX/XLSX/TIFF/MSG/EML in Desktop | partialDOCX and image ingestion exist; this row targets Desktop | partialLocal passive normalization for DOCX/XLSX/EML/MSG and direct TIFF-to-PDF; active sender HTML and remote resources are never rendered | format corpus; passive parsing/rendering, extraction checks, security regression |
| Selektiver Export pro Empfänger | passImmutable per-recipient export policy with exact visible-value allow-list | passSame shared recipient policy applied before native redaction | policy fixture matrix; expected visible/redacted entities per recipient |
| Inverser DSAR-Modus | passExact requester preservation; non-rejected detected third parties automatically selected | passSame fail-closed inverse DSAR policy runs locally | subject/third-party labelled DSAR corpus; third-party selection and requester preservation |
| Import eigener Wörterbücher | passShared bounded parser, persisted categories and boundary-safe literal matching | passSQLite persistence plus the shared parser and native boundary-safe matching | CSV/TXT fixtures; valid/invalid rows, literal match recall, collision rate |
| Manipulationserkennbare Audit-Hashkette | passConvex mutation chains events atomically; deterministic tamper test | passSQLite appends SHA-256 chain and exposes local verification command | deterministic valid/tampered/removed-event tests |
| Öffentlicher/lokaler Zertifikatsprüfer | pass/pruefen verifies entirely in-browser; no upload | passCompliance screen verifies certificate files and optional document hashes entirely on-device | valid/tampered certificate + optional original/output SHA-256 fixtures |
| Weiß, Blur, Pixel, Token-Ersatz | passAll visual styles share permanent-removal verification; generated blur/pixel textures never sample source pixels | passStyle selection plus native normalization and post-verification generated textures | rendered pixel diff + text extraction + token consistency fixtures |
Stand: 09.08.2026 · Schema v1
06 / Selbst verifizieren
Reproduzierbarkeit
Machine-checkable API
Die committed Benchmark-Datei ist über einen öffentlichen Endpoint abrufbar;
der Hash im Response-Header lässt sich per curl | sha256sum nachprüfen.
curl -s https://datenmaske.de/api/benchmark | sha256sum
# vergleiche mit X-Datenmaske-Benchmark-Hash Runner selbst ausführen
Der Runner ist im Repo enthalten. Er regeneriert das Korpus, führt die echte Pipeline aus, bildet den Hash und scheitert geschlossen, wenn der NER-Endpoint nicht erreichbar ist.
git clone <repo>
cd datenmaske && pnpm install
SPACY_API_URL=https://spacy.mokka-dev.de pnpm run benchmark
# -> src/lib/benchmark/results.json
Quellen:
scripts/benchmark/run-benchmark.ts,
scripts/redaction-claim-test.ts,
scripts/generate-test-docs.ts.
Hinweis
Messung an synthetischem Korpus unter Laborbedingungen; nicht repräsentativ für beliebige Fremd-Dokumente. Wettbewerber-Status jeweils Herstelleraussage oder datierte Eigenmessung. Keine der hier veröffentlichten Zahlen ist ein versicherungsförmiges Versprechen — die Erkennungsvollständigkeit ist ein best-effort Prozesses, der menschliche Prüfung nicht ersetzt (AGB § 3(5)).