Automatisierte Texterkennung in Fahrzeugscheinen durch Selfmade OCR-System
Das manuelle Erfassen von Fahrzeugdaten kostet Zeit und ist fehleranfällig, was besonders die Automobil- und Logistikbranche Tag für Tag erfährt. Zusammen mit MOSOLF entwickeln wir ein Tool, das ein automatisiertes Auslesen der im Fahrzeugschein enthaltenen Daten zum Ziel hat. Dadurch wollen wir den Prozess deutlich vereinfachen und beschleunigen.
In der Automobil- und Logistikbranche gehört die Erfassung von Fahrzeugdaten zum Tagesgeschäft. Viele Informationen lassen sich aus dem ersten Teil der Zulassungsbescheinigung – besser bekannt als Fahrzeugschein – entnehmen. Die Erfassung der relevanten Daten aus diesem Dokument geschieht in der Praxis durch ein manuelles Abtippen, da der Fahrzeugschein, anders als andere amtliche Dokumente, wie beispielsweise der deutsche Personalausweis, keine maschinenlesbare Zone enthält. Dieser Vorgang ist nicht nur zeitintensiv, sondern auch fehleranfällig.
Die Herausforderung für uns war, diesen Prozess durch automatisierte Texterkennung (englisch Optical Character Recognition, kurz OCR) deutlich zu beschleunigen und die Fehleranfälligkeit zu reduzieren.
Das Projekt entstand im Rahmen unserer Innovationspartnerschaft mit MOSOLF, einem der führenden Automobil-Logistikunternehmen in Europa. Für die Umsetzung haben wir klassische Ansätze des maschinellen Sehens speziell an diesen Anwendungsfall angepasst, um durch das Einbringen von Vorwissen maximale Erkennungsraten des jeweiligen Fahrzeugscheins zu erzielen. Zudem setzen wir neuronale Netze ein, die wir mithilfe künstlich generierter Daten trainieren.
Fälschungssicher, aber nicht maschinenfreundlich
Das Aussehen und die Beschaffenheit des deutschen Fahrzeugscheins sind in der Verordnung über die Zulassung von Fahrzeugen zum Straßenverkehr (Fahrzeug-Zulassungsverordnung, kurz FZV) festgelegt und seit Oktober 2005 unverändert. Dieser genormte Aufbau für die automatisierte Texterkennung Fluch und Segen zugleich:
Einerseits ermöglicht dieser, die exakte Lokalisierung des Fahrzeugscheins innerhalb eines Fotos oder Scans sowie die eindeutige Zuordnung der einzelnen Felder durch einen Abgleich mit einer hinterlegten Vorlage des Dokuments. Dies erleichtert die automatische Texterkennung ungemein.
Andererseits zeigt die Erfahrung, dass Zulassungsstellen im Bundesgebiet das Aussehen oftmals bei Schriftart und -größe variieren. Dieser fehlenden Einheitlichkeit lässt sich jedoch durch den Einsatz neuronaler Netze begegnen. Darüber hinaus kommt es durch die fälschungserschwerende Beschaffenheit des amtlichen Dokuments auch zu besonderen Herausforderungen: Zu den Sicherheitsmerkmalen zählt unter anderem ein "mehrfarbiger Guillochenschutzunterdruck (zweistufig verarbeitet) mit Irisverlauf und integrierten Mikroschriften auf beiden Seiten", oder – vereinfacht ausgedrückt – ein ziemlich wilder Hintergrund.
Zudem erleichtern die dunkelgrünen Rasterlinien dem menschlichen Leser zwar die Zuordnung der einzelnen Felder, erschweren allerdings die maschinelle Texterkennung. Besonders der sogenannte Druckversatz, also über die Linien herausragender Text, sorgt für deutliche Schwierigkeiten bei der automatisierten Erkennung. OCR-Systeme, die auf der Freistellung einzelner Zeichen durch Kantenerkennung basieren, steigen hier aus, da durch die Rasterlinien eine Verbindung aller Zeichen gegeben ist. Auch eine Binarisierung des Bildes anhand der Farbwerte, also die Trennung von schwarzem Text und grünen Rasterlinien, ist schwierig, da der exakte Grünton stark von der Aufnahmequalität und dem Aufnahmegerät abhängig ist.
Ein OCR-System speziell zugeschnitten auf den Fahrzeugschein
Das von uns entwickelte System basierte zuerst auf einem Template Matching-Algorithmus für die Texterkennung. Dafür erzeugten wir von jedem Zeichen, das in einem Fahrzeugschein vorkommen kann, einen Prototypen. Der Algorithmus berechnete an jeder Position des Bildes die Übereinstimmung zwischen Bild und Prototyp und erkannte ein Zeichen dann, wenn die Korrelation hoch war.
Aufgrund der in der Praxis vorkommenden Variation des Aussehens des Fahrzeugscheins gelangten wir mit dem Template Matching-Algorithmus an die Grenzen der Texterkennung. Daher setzen wir mittlerweile auf neuronale Netze, für die unterschiedliche Schriftarten keine Hürde darstellen. Zunächst wird der Fahrzeugschein auf dem Bild erkannt und lokalisiert. Anschließend können die einzelnen Textfelder ausgeschnitten werden, sodass kleine Bildausschnitte mit dem zugehörigen Text vorliegen. Nun kommen die neuronalen Netze zum Einsatz, die aus dem kleinen Bildausschnitt den erkannten Text liefern.
Zusätzlich haben wir Regeln für die Auswahl der erlaubten Zeichen pro Feld definiert. So kann ein Datum beispielsweise nur Ziffern und Punkte enthalten, aber keine Buchstaben. Die Fahrgestellnummer (Fahrzeug-Identifizierungsnummer, FIN) darf nur Ziffern und Großbuchstaben enthalten. Die erkannte Fahrgestellnummer lässt sich außerdem durch eine ebenfalls im Fahrzeugschein abgedruckte Prüfsumme validieren. Durch diese zusätzliche Validierung lassen sich Fehler beim Auslesen der Fahrgestellnummer minimieren.
Für einige weitere Felder sind außerdem Listen mit möglichen Werten vorhanden, die in das Feld eingetragen werden können. So sind z. B. die Fahrzeugklassen und Aufbauarten im Verzeichnis zur Systematisierung von Kraftfahrzeugen und ihren Anhängern festgelegt.
Wir haben den Algorithmus zur Texterkennung in Python implementiert (unter Verwendung von TensorFlow und OpenCV). Das Ganze haben wir in einen Flask-Webserver verpackt, der die benötigte Schnittstelle bereitstellt. Dieser nimmt ein Bild entgegen und gibt ein JSON-Objekt zurück, das eine Zuordnung der Feldbezeichnung zum jeweils in diesem Feld erkannten Text enthält. Das Frontend haben wir mit HTML, CSS und Vanilla Javascript aufgebaut. Der Nutzer hat darüber die Möglichkeit, per File-Input ein zuvor aufgenommenes Bild hochzuladen. Das Bild wird dann an das Backend gesendet, dort verarbeitet und das Ergebnis an das Frontend zurückgespielt.
Der erkannte Text wird übersichtlich neben den zugehörigen Feldausschnitten präsentiert, sodass das Ergebnis leicht mit dem Eingangsbild verglichen und mögliche Fehler korrigiert werden können. Die Prüfziffernvalidierung für die Fahrgestellnummer wird dabei durch farbliche Hervorhebung dargestellt.
Der Anwender hat nicht nur die Möglichkeit, die Ergebnisse der maschinellen Texterkennung zu überprüfen, sondern kann auch gegebenenfalls notwendige Korrekturen vornehmen. Schließlich kann der Nutzer, die Daten in CSV- oder JSON-Format herunterladen. Natürlich wären auch Exporte in anderen Dateiformaten oder eine direkte Anbindung an im Unternehmen genutzte Drittsysteme denkbar.
Übertragbarkeit der Lösung auf andere Anwendungsfälle
Der vorgestellte Ansatz eignet sich nicht nur für Fahrzeugscheine, sondern kann auch auf andere Dokumente übertragen werden, sofern deren Aufbau ebenfalls einem festen, wiederkehrenden Muster entspricht. Denkbare Anwendungsfälle wären zum Beispiel Ausweisdokumente, Lieferscheine, Frachtbriefe und Rechnungen.
Der vorgestellte Algorithmus entfaltet seine Stärke durch das Einbringen von Vorwissen und das Training mithilfe künstlich generierter Daten. Dadurch konnten wir in unseren Experimenten und Testläufen mit diesem Ansatz deutlich bessere Ergebnisse erzielen, als mit generischen Tools wie Tesseract oder Mobile Vision von Google. Beide Tools sind theoretisch in der Lage, mehr oder weniger beliebige Dokumente einzulesen, konnten aber beim Fahrzeugschein mit den gelieferten schlechten Ergebnissen nicht überzeugen.