Die Schwärzungswerkzeuge sind für Entwickler gebaut, und Entwickler haben bereits Text. In einer Kanzlei kommt Papier aber als gescannte Seite an. Wie aus dieser Seite Text wird, sagt keines dieser Werkzeuge. Den schwierigsten Schritt müssen Sie also selbst erledigen.
Für wen die Werkzeuge gebaut sind
Presidio ist das bekannteste quelloffene Projekt zur Erkennung personenbezogener Daten. Es entstand bei Microsoft und wird heute von einer Community getragen. Die Dokumentation beginnt mit pip install presidio-analyzer presidio-anonymizer. Wenige Zeilen später ruft man analyzer.analyze(text=..., language="en") auf, und der erste Parameter heißt text.
Für Bilder gibt es ein eigenes Paket, presidio-image-redactor. Es setzt voraus, dass Tesseract bereits installiert ist. Seine rund 2.800 Downloads pro Woche im Oktober 2026 sind wenig im Vergleich zu den Seiten, die in derselben Woche durch die Scanner deutscher Kanzleien, Praxen und Personalabteilungen laufen.
Für ihre tatsächliche Kundschaft ist diese Bauweise richtig. Wer Supporttickets, Chatprotokolle oder Datenbankfelder bereinigt, hat bereits Text. Eine eingebaute Texterkennung wäre dort Ballast: mehr Abhängigkeiten, längere Laufzeiten, eine weitere Fehlerquelle. Den Vergleich mit Presidio ziehen wir in einem eigenen Beitrag.
Der Schritt vor dem ersten Funktionsaufruf
Bevor die Erkennung beginnt, muss jemand die Seite in Text verwandeln. Dazu braucht es eine Auflösung, bei der Ziffern lesbar bleiben, ein Sprachpaket, das Umlaute kennt, und die richtige Seitensegmentierung. Am heikelsten ist der letzte Teil: Jedes erkannte Wort braucht seine Koordinaten. Nur dann liegt der Balken später auf dem Wort und nicht zwei Zeilen darunter.
Diesen Schritt übernimmt kein Produkt. Jedes Werkzeug setzt danach ein, und keines sagt, wessen Aufgabe er ist. In der Dokumentation steht er als Voraussetzung („Tesseract muss installiert sein“), im Code als Argument, das schon Text enthält.
So bleibt der schwierigste Schritt an der Person hängen, die am wenigsten darauf vorbereitet ist. Der Entwickler, der eine Bibliothek einbindet, kennt seine Textquellen. Die Steuerfachangestellte, die am Freitagnachmittag eine gescannte Lohnsteuerbescheinigung weitergibt, kennt weder Seitensegmentierung noch Sprachpakete.
Der Fehler fällt niemandem auf
Dieser Schritt scheitert ohne Fehlermeldung. Liest die Texterkennung in einer Steuer-Identifikationsnummer eine Null als Buchstaben O, passt das Muster für die elfstellige Nummer nicht mehr. Liest man eine deutsche Seite nur mit einem englischen Sprachpaket, wird aus „Müller“ Zeichensalat, den kein Modell als Namen erkennt. In beiden Fällen kommt eine leere oder kurze Liste zurück, die aussieht wie ein Dokument ohne Funde.
Dann gehen die IBAN auf dem Kontoauszug und die Sozialversicherungsnummer auf der Meldebescheinigung ungeschwärzt hinaus, obwohl sie als geprüft gelten. Für Berufsgeheimnisträger stellt § 203 StGB das unbefugte Offenbaren eines anvertrauten Geheimnisses unter Strafe, unabhängig von der DSGVO. Ein Entwickler, dessen Pipeline eine Zeile übersieht, schreibt ein Ticket. Eine Kanzlei mit einer Kontonummer im Klartext muss sich vor ihrem Mandanten erklären.
Bei Scans kommt es darauf an, wo die Texterkennung läuft
Bei einem Textdokument können Sie erst auf dem eigenen Rechner schwärzen und dann weitergeben. Bei einem Scan ist die Texterkennung zwingend der erste Schritt. Läuft sie über eine Cloud-Schnittstelle, erhält ein Dritter das vollständige, ungeschwärzte Bild. Die spätere Schwärzung schützt dann nur noch die Ausgabe.
Verarbeitet ein Dienstleister personenbezogene Daten im Auftrag, verlangt Art. 28 DSGVO einen Auftragsverarbeitungsvertrag, ergänzt durch das BDSG. Für Kanzleien und Praxen gelten zusätzlich die Bedingungen von § 203 Abs. 3 StGB für externe Dienstleister. Die Landesdatenschutzbehörden und der BfDI prüfen das anhand der Dokumentation. Ob ein Auftragsverarbeitungsvertrag überhaupt nötig wird, hängt also vom Ort der Texterkennung ab.
Dieselbe Annahme in unserem eigenen Code
Dieselbe Annahme steckte an drei Stellen in unserem eigenen Code.
Erstens haben wir die Fläche eines eingebetteten Bildes als Maß für seine Bedeutung genommen. Kleine Bilder galten als Logo und wurden nicht gelesen. Eine verkleinerte Ausweiskopie in einem Anschreiben ist aber auch klein, und sie enthält mehr personenbezogene Daten als der Text um sie herum.
Zweitens rief unser Code eine Methode auf, die unsere PDF-Bibliothek nicht besaß. Der Fehler wurde abgefangen und nur auf Debug-Ebene protokolliert, die im Betrieb niemand liest. Die Funktion, die nach Bildern fragen sollte, antwortete deshalb bei jedem Dokument mit „keine Bilder“. Das sah aus wie ein sauberes Dokument, also schlug kein Test an.
Drittens erfasste ein von Hand gezogener Rahmen über einem Scan nichts. Die Funktion suchte unter dem Rahmen nach Wörtern, und eine reine Bildseite hat ohne Texterkennung keine. Der Nutzer sah seinen Rahmen, das Programm einen leeren Bereich.
Alle drei Fehler hatten dieselbe Ursache: Unser Code erwartete stillschweigend, dass schon Text vorhanden ist. Diese Erwartung kann überall stecken, wo ein Dokument ins Programm gelangt, und muss dort einzeln geprüft werden.
Was promptShield mit einer gescannten Seite macht
promptShield rendert eine gescannte Seite mit 300 dpi und liest sie mit Tesseract in der Dokumentsprache und zusätzlich auf Englisch. Es bestimmt die Bildbereiche mit personenbezogenen Daten, deckt genau diese Pixel ab und legt darunter eine durchsuchbare Textebene an. Mitgeliefert werden acht Sprachpakete: Englisch, Französisch, Deutsch, Spanisch, Italienisch, Niederländisch, Portugiesisch und Polnisch.
Mit dem falschen Paket liest auch unser Programm eine Seite schlecht, und es meldet das nicht. Die Einzelheiten stehen in unserem Beitrag zur Scanverarbeitung.
Danach läuft die Erkennung in Schichten. Präzise Muster finden Werte mit fester Form wie IBAN oder Steuer-Identifikationsnummer, ein Entitätsmodell sucht Namen, Firmen und Anschriften. Ein tieferer Durchgang mit einem Sprachmodell ist optional und standardmäßig ausgeschaltet. Die Ergebnisse werden zusammengeführt, von Dubletten und Fehltreffern bereinigt und über die Seiten übertragen, sodass ein Name von Seite 1 auch auf Seite 4 markiert wird.
Vollständig ist das Ergebnis trotzdem nicht, denn kein lokales Modell erkennt jede Kennung. Deshalb lässt sich eine geschützte Datei erst herunterladen, wenn ein Mensch die Funde im Überprüfen-Dialog bestätigt hat.
Entfernen nimmt den Inhalt aus der Datei, statt einen schwarzen Kasten darüberzulegen. Das gilt auch für unsichtbare Stellen wie Alternativtexte, Metadaten, Sprungziele und Formularfelder. Dort steht danach der Code des Werts oder eine neutrale Markierung. Eine vorher gerenderte Miniaturansicht wird entfernt, weil sich in einem Rasterbild nichts ersetzen lässt.
Codes gelten je Ordner: Im selben Ordner erhält derselbe Wert denselben Code, Codes verschiedener Ordner sind voneinander getrennt. Global gilt nur ein Code, den Sie selbst festgelegt haben.
„100 % offline“ gilt für die Desktop-Anwendung. Die kostenlose Browser-Anwendung sendet beim Start ein anonymes Signal, das Dokument bleibt aber auf Ihrem Gerät. Den abgeschotteten Betrieb ohne Lizenzabfrage und ohne Absturzberichte bietet die Desktop-Anwendung im Tarif Pro.
Wer diesen Schritt übernehmen sollte
Heute bleibt dieser Schritt unbemerkt an dem hängen, der zuletzt mit dem Dokument arbeitet. Wer Scans weitergibt, sollte deshalb fragen können: Wer hat aus diesem Bild Text gemacht, mit welchem Sprachpaket und auf welchem Rechner? Wir halten es für die Aufgabe eines Werkzeugs, diesen Schritt zu übernehmen, statt ihn dem Menschen am Kopierer zu überlassen.
Fragen aus der Praxis
Warum übersehen Schwärzungswerkzeuge Text in Bildern?
Sie erwarten Text, und ein Bild liefert erst nach einer Texterkennung Text. Fehlt dieser Schritt oder misslingt er, etwa durch ein falsches Sprachpaket oder eine zu geringe Auflösung, meldet die Erkennung schlicht keine Funde.
Ist dafür nicht Presidios Bildmodul gedacht?
Im Prinzip ja: presidio-image-redactor verbindet Texterkennung mit der Erkennung personenbezogener Daten und zeichnet Balken ins Bild. Es richtet sich aber an Entwickler. Tesseract, Sprachpakete und Einstellungen wählt, wer das Modul in eine eigene Pipeline einbindet.
Warum ist lokale Verarbeitung bei Scans besonders wichtig?
Bei einem Scan läuft die Texterkennung vor jeder Schwärzung. Geschieht das bei einem externen Dienst, erhält dieser das Originalbild, und es stellen sich die Fragen nach Art. 28 DSGVO und nach § 203 StGB. Geschieht es auf Ihrem Rechner, verlässt das Original diesen Rechner nicht.
Dieser Beitrag erläutert, woher die Pflichten stammen. Er ersetzt keine rechtliche Prüfung Ihres Einzelfalls.