Technik
· 9 Min. Lesezeit

Warum eine eigene Erkennung statt Presidio

Von Amine Gaaliche · Entwurf mit Claude erstellt, von Hand geprüft und redigiert

Wir haben eine eigene Erkennung gebaut, weil eine Bibliothek Zeichenpositionen in einem Text liefert. Wir brauchten Rechtecke auf PDF-Seiten, auch auf Scans, und alles auf dem eigenen Rechner. Dazwischen liegt fast die ganze Arbeit, und sie besteht vor allem aus der Entscheidung, was nicht markiert wird.

Presidio löst eine andere Aufgabe, und zwar gut

Presidio ist ein ernstzunehmendes Werkzeug. Entwickelt wurde es bei Microsoft, heute führt eine Community das Projekt. Man übergibt einen Text und erhält zu jedem Fund einen Entitätstyp, Anfangs- und Endposition und einen Konfidenzwert. Für Protokolldateien, Datenbankfelder oder Nachrichten in einer Verarbeitungskette ist das eine solide Grundlage.

Unsere Nutzer stellen eine andere Frage. Vor ihnen liegt ein Schriftsatz als PDF oder ein eingescannter Mietvertrag mit Stempel. Sie wollen wissen, welche Stellen auf dieser Seite verschwinden müssen, bevor die Datei das Haus verlässt.

Die Bibliothek meldet, dass an den Zeichen 412 bis 425 ein Muster gepasst hat. Das ist richtig, beantwortet aber nicht die Frage des Nutzers. Zwischen dieser Meldung und einem geschwärzten Rechteck auf Seite 3 liegt fast die gesamte Arbeit. Sie besteht größtenteils aus Entscheidungen, was bewusst nicht markiert wird.

Wer je eine Behördenakte für die Akteneinsicht vorbereitet hat, kennt das. Das Schwärzen selbst geht schnell. Aufwendig ist die Entscheidung, was stehen bleiben darf: die Funktion unter der Unterschrift, der Name des Gerichts, der Ort im Briefkopf.

Von der Zeichenposition zum Rechteck auf der Seite

Eine PDF-Seite ist ein Layout. Jedes Wort sitzt in einem Kasten mit Koordinaten, Spalten stehen nebeneinander, Tabellenzellen brechen um. Die Textextraktion liefert den Text oft in anderer Reihenfolge, als ein Mensch ihn liest.

Zeichenpositionen müssen also auf diese Kästen zurückgerechnet werden. Ein Name, der am Zeilenende umbricht, muss auf beiden Zeilen abgedeckt sein. Jede Ungenauigkeit lässt einen Buchstaben stehen.

Die Erkennung arbeitet in Schichten. Zuerst erfassen präzise Muster Werte mit fester Form, also IBAN, Steuer-Identifikationsnummer und Sozialversicherungsnummer. Die deutsche Sozialversicherungsnummer enthält in der Mitte einen Buchstaben, den Anfangsbuchstaben des Geburtsnamens. Ein Muster, das nur Ziffern erwartet, erfasst sie nicht.

Danach erkennt ein Entitätsmodell Namen, Organisationen und Orte, je nach Installation spaCy, BERT oder GLiNER. Eine Schicht mit einem Sprachmodell lässt sich zuschalten, ab Werk ist sie ausgeschaltet. Die Ergebnisse werden zusammengeführt, Doppelungen bereinigt und auf andere Seiten übertragen. So kann ein Name von Seite 1 auch auf Seite 4 markiert werden.

Ein Scan enthält zunächst keinen Text

Eine gescannte Seite ist ein Bild. Eine Bibliothek, die Text erwartet, bekommt daraus nichts. promptShield rendert die Seite deshalb mit 300 dpi und liest sie mit Tesseract, in der Dokumentsprache und auf Englisch.

Die Fundstellen werden im Bild verortet und überdeckt. Darunter entsteht eine neue Textschicht, damit die Datei durchsuchbar bleibt.

Sprachpakete gibt es für acht Sprachen: Deutsch, Englisch, Französisch, Spanisch, Italienisch, Niederländisch, Portugiesisch und Polnisch. Wird ein Scan mit dem falschen Paket gelesen, sinkt die Trefferquote, ohne dass eine Fehlermeldung erscheint. Es gibt dann nur weniger Treffer, etwa bei einer tschechischen Urkunde.

Die meiste Arbeit ist das Weglassen

Ein Entitätsmodell sieht unter einer Unterschrift „Geschäftsführer“, in einer französischen Vollmacht „Directeur“, auf einer englischen Folie „CEO“. Manchmal ordnet es solche Wörter als Person ein. Im Deutschen wird zudem jedes Substantiv großgeschrieben. Die Großschreibung sagt hier also wenig darüber, ob ein Eigenname vorliegt.

Dagegen hilft eine mehrsprachige Ausschlussliste mit 195 Funktionsbezeichnungen. Sie ist einer von mehreren Filtern, die nach dem Modell laufen.

Ein zu viel geschwärztes Wort gibt nichts preis. Falsche Treffer kosten aber Aufmerksamkeit. Wer auf jeder Seite zwanzig überflüssige Markierungen zurücknimmt, prüft die einundzwanzigste weniger sorgfältig, und gerade sie ist dann die IBAN des Mandanten.

Wie groß der Abstand werden kann, zeigt unser Vergleich mit Presidio. Im veröffentlichten Lauf meldete Presidio in der Standardinstallation auf denselben Dokumenten 666 Textstellen, promptShield 252. Mit dem aktuellen Stand haben wir den Vergleich seither nicht wiederholt. Die Zahlen gelten deshalb nur für den damaligen Stand.

Ein solcher Abstand entsteht vor allem bei der Frage, was als Fund zählt, weniger bei der Wahl des Modells. Das Modell ist bei uns austauschbar und pro Installation konfigurierbar. Die Filter sind an vielen echten Dokumenten gewachsen und beziehen die Seite ein, auf der geschwärzt wird.

Keine lokale Erkennung erfasst jeden Wert in jedem Dokument. Deshalb müssen die Funde im Dialog „Überprüfen“ bestätigt werden, bevor sich eine geschützte Datei herunterladen lässt.

Entfernen heißt: Darunter liegt nichts mehr

Ein schwarzer Kasten über einem Namen ist nur eine Zeichnung. Der Name bleibt in der Datei und lässt sich kopieren und auslesen. Echte Schwärzung entfernt deshalb den Inhalt darunter.

Ein PDF bewahrt Text aber oft an weiteren Stellen auf. Getaggte PDFs enthalten für Screenreader Ersatztexte in ActualText und Alt. XMP-Metadaten und PieceInfo halten Angaben fest, benannte Sprungziele tragen Namen, und Formularfelder speichern ihren Wert samt fertiger Darstellung.

Beim Export ersetzt promptShield die Werte auch dort: durch den Code, wenn Sie kodiert haben, durch eine neutrale Markierung, wenn Sie entfernt haben. Ein vor der Schwärzung gerendertes Vorschaubild wird entfernt, denn in einem Rasterbild lässt sich nichts ersetzen. Diese Arbeit gehört nicht zu einer Erkennungsbibliothek, sondern zu einem Produkt, das eine Datei aus der Hand gibt.

Warum es auf den Ort der Verarbeitung ankommt

Läuft die Erkennung bei einem Dienstleister, geht das Dokument im Klartext an einen Dritten. Dafür verlangt Art. 28 DSGVO einen Auftragsverarbeitungsvertrag, und das BDSG ergänzt die Vorgaben. Darüber wachen die Landesdatenschutzbehörden und für den Bund der BfDI.

Für Kanzleien, Arztpraxen und Steuerberater gilt zusätzlich § 203 StGB, unabhängig von der DSGVO. Ob eine konkrete Gestaltung genügt, ist eine Frage des Einzelfalls. Dieser Abschnitt zeigt nur, woher die Pflichten kommen.

Presidio lässt sich ebenso lokal betreiben. Die Pflichten treffen Dienste, die eine Datei erst verschicken, um zu erfahren, was darin steht. Bei promptShield laufen Erkennung, Texterkennung, Kodieren und Entfernen auf dem Gerät, auf dem die Datei liegt.

Die Desktop-Anwendung arbeitet zu 100 % offline, im Tarif Pro auch ohne Lizenzabfrage und Absturzberichte. Die kostenlose Browser-Anwendung sendet beim Start ein anonymes Signal. Vollständig offline ist sie also nicht. In beiden Fällen verlässt das Dokument das Gerät nicht.

Ein Fehler, den wir selbst veröffentlicht haben

Auf unserer Website stand in sieben Sprachen, derselbe Wert erhalte in der ganzen Bibliothek denselben Code. Das stimmte nicht. Ein Code gilt für seinen Ordner, und Ordner sind voneinander getrennt. Derselbe Mandantenname in zwei Ordnern erhält zwei verschiedene Codes.

Global gilt nur ein Code, den Sie selbst festlegen. Die Länge eines Codes richtet sich nach dem ersetzten Wert. Fest ist nur die Form: der Kennbuchstabe des Typs und Füllzeichen in eckigen Klammern. Die kostenlose Browser-Anwendung erzeugt Codes nach demselben Verfahren wie die Desktop-Anwendung, mit einem eigenen Schlüssel des Browsers.

Ein Code aus der Demo hat also die Form, die das Produkt tatsächlich vergibt. Weil uns das Modell gehört, konnten wir es später für den Browser verkleinern, wie ein eigener Beitrag beschreibt.

Häufige Fragen

Warum nicht einfach eine fertige Bibliothek nehmen?

Eine Bibliothek löst den kleineren Teil der Aufgabe: Sie findet Muster und Entitäten in Text und gibt Positionen zurück. Es fehlen dann noch die Übertragung auf die Seite, die Texterkennung für Scans, das Entfernen samt verborgener Kopien und vor allem die Filter. Wer dafür ein Wochenende ansetzt, sollte eher in Monaten rechnen.

Was liefert eine Bibliothek wie Presidio nicht?

Presidio liefert, wofür es gebaut wurde: Entitätstypen mit Positionen und Konfidenzwerten. Was daraus auf einer PDF-Seite wird, welche Bereiche eines Scans zu überdecken sind und wo Kopien des Textes stecken, klärt die Anwendung. Das ist eine Frage des Zuschnitts und sagt nichts über die Qualität der Bibliothek.

Liegt der Unterschied am Modell oder am Filtern?

Überwiegend am Filtern, etwa an der Ausschlussliste mit 195 Funktionsbezeichnungen. Das Modell ist austauschbar, je nach Installation spaCy, BERT oder GLiNER. Die Zahlen aus dem veröffentlichten Lauf gegen Presidio sind eine datierte Messung.

Wird ein Dokument für die Erkennung an einen Server geschickt?

Nein. Erkennung, Texterkennung, Kodieren und Entfernen laufen auf Ihrem Gerät, und das Code-Register bleibt dort. Die optionale Schicht mit einem Sprachmodell ist ab Werk ausgeschaltet.

Was auf einer Seite stehen bleibt, entscheidet am Ende ein Mensch. Wir haben unsere Erkennung gebaut, damit diese Person eine Seite bekommt, auf der das Nötige markiert ist und das Überflüssige möglichst nicht.

Dieser Beitrag erläutert, woher rechtliche Pflichten kommen. Er ersetzt keine Beratung im Einzelfall.

War das hilfreich? Sagen Sie es uns.

Teilen