Zum Inhalt springen
Gini Logo
  • Lösungen
    • Spacing column
    • Menu image 1
    • Banken
      • Bezahlen per Foto
      • Payment Initiierung
      • Mobile Wallet
    • Versicherungen
      • In-App Payment
      • Mobile Belegerfassung
      • Smarter Einreichungsordner
    • Spacing column
  • Produkte
    • Spacing column
    • Menu image 2
    • Extrahieren
      • Gini Smart
      • Gini Smart OCR+
      • Gini Smart Mobile Input
    • Bezahlen
      • Gini Pay Connect
      • Fotoüberweisung
      • Gini Request-to-pay
    • Spacing column
  • Über uns
    • Spacing column
    • Menu image 3
    • Spacing column
    • Über Gini
      • Jobs
      • Blog
      • Presse
    • Spacing column
  • Entwickler
  • Kontakt
  • DE
  • EN
  • Lösungen
    • Banken
      • Bezahlen per Foto
      • Payment Initiierung
      • Mobile Wallet
    • Versicherungen
      • Mobile Belegerfassung
      • In-App Payment
      • Smarter Einreichungsordner
  • Produkte
    • Extrahieren
      • Gini Smart
      • Gini Smart OCR+
      • Gini Smart Mobile Input
    • Bezahlen
      • Gini Pay Connect
      • Fotoüberweisung
      • Gini Request-to-pay
  • Über uns
    • Über Gini
    • Jobs
    • Blog
    • Presse
  • Entwickler
  • Kontakt
  • DE
  • EN

Wie wir OCR mit Deep Learning betreiben

Jue Wang

Jun 22, 2022 • 

4,8 min read

Von der Bilderkennung über die Texterkennung bis hin zur Nachbearbeitung haben wir unsere spezielle Hochleistungs-OCR entwickelt, um das Beste aus mobilen Bildern herauszuholen.

In der Vergangenheit haben wir in einem Blog darüber berichtet, wie wir die Informationsextraktion über eine multimodale Deep-Learning-Architektur durchführen. Wie wir beschrieben haben, ist die Informationsextraktion neben dem Bild auch stark auf den Text und die Koordinaten des Textes im zweidimensionalen Dokumentenlayout angewiesen.

In nativen PDF-Dateien können Text- und Layout-Informationen leicht aus der Datei ausgelesen werden. Der Großteil der eingehenden Dokumente, die unser Gini-System verarbeitet, sind jedoch Bilder. Genauer gesagt handelt es sich dabei um Fotos, die mit Smartphones aller Art aufgenommen wurden, oder um gescannte PDFs, die von verschiedenen Scannern erstellt wurden. Um Text- und Layoutdaten aus solchen Dateien für nachgelagerte Informationsextraktionsaufgaben abzurufen, wurde eine spezielle optische Zeichenerkennung (OCR) implementiert.

Abbildung 1. Ein Beispiel für eine Bildverarbeitungs- und OCR-Pipeline in Gini. Links: ein Beispiel für ein Eingangsbild. Mitte: ein ideal vorverarbeitetes Bild. Rechts: OCR-Ergebnisse im JSON-Format.

 

Bildverarbeitung

Die Leistung der OCR hängt stark von der eingehenden Bildqualität ab. Um die Qualität der Bilder zu verbessern, haben wir daher zunächst eine Reihe von Modellen auf der Grundlage von Convolutional Neural Networks implementiert, die die folgenden Datentransformationen durchführen:

  • Erkennung der Ausrichtung und Drehung.
  • Erkennung der Homographie, Zuschneiden und perspektivische Verzerrung.
  • Erkennung der Bereiche von Interesse, z. B. Tabellen, QR-Codes oder Überweisungsträger (ein in Deutschland und Österreich weit verbreitetes Banküberweisungsformular).
  • Binarisierung und Rauschunterdrückung bestimmter Regionen von Interesse (ROIs).

Die nach einer Reihe solcher Transformationen erhaltenen Bilder haben eine korrigierte Ausrichtung, eine wiederhergestellte Perspektive und eine verbesserte Gesamtqualität (Abbildung 1).

Texterkennung

Die verbesserten Bilder sind nun bereit für unsere OCR, und der erste Schritt ist die Texterkennung. Es ist wichtig zu wissen, dass moderne OCR nicht mehr auf Zeichenebene arbeitet, sondern die jüngsten Fortschritte in den Bereichen NLP und Computer Vision Deep Learning nutzt, um Vorhersagen auf Sequenzebene zu treffen (Abbildung 2). Anstelle von Zeichen extrahieren wir Wortfetzen oder sogar Phrasen aus Dokumentenbildern.

Abbildung 2. Ein Beispiel für ein gängiges Texterkennungsmodell (EAST, Zhou et al., https://arxiv.org/abs/1704.03155).

Nach der Texterkennung wird das vollständige Bild der Rechnung in eine Reihe von Schnipseln aufgeteilt, die jeweils aus einem oder mehreren horizontal eng verbundenen Wörtern bestehen (Abbildung 3). Dadurch kann der Texterkennungsschritt sie als eine sequenzielle Wortvorhersageaufgabe behandeln (eine gut untersuchte Problemstellung im NLP-Bereich).

Abbildung 3. Links: vorverarbeitetes Bild. Rechts: Erkannte Bildschnipsel.

Texterfassung

Sobald wir eine Reihe von Bildausschnitten mit einzeiligen Wörtern oder Sätzen aus dem Texterkennungsschritt vorliegen haben, ist es an der Zeit, sie in echten Text umzuwandeln (Abbildung 5).

Abbildung 4. Der Ablauf der 4-stufigen Erkennung von Szenentext (Baek et al., https://arxiv.org/abs/1904.01906).

Ein typisches modernes Texterkennungsmodell (Abbildung 4) besteht aus den folgenden Komponenten:

  • Transformation: Umwandlung eines unregelmäßig geformten Textbildes in ein normalisiertes, gerades, einzeiliges Snippet unter Verwendung eines bestimmten räumlichen Transformationsnetzwerks.
  • Merkmalsextraktion: Konvertierung der Eingabebilder in gefaltete Merkmalskarten unter Verwendung eines gängigen Convolutional Neural Network (z. B. VGG, ResNet, RCNN). Die Merkmalskarten enthalten wichtige visuelle Merkmale, die hervorgehoben werden, während irrelevante visuelle Merkmale unterdrückt werden.
  • Sequenzmodellierung: Erfassung von Kontextinformationen über ein rekurrentes neuronales Netz (z. B. BiLSTM).
  • Vorhersage: Vorhersage von Text anhand von Sequenzen von Merkmalsvektoren aus dem vorherigen Schritt.

Nach unserer Bildvorverarbeitung sollte der Rechnungstext ziemlich gut strukturiert, also weder gekrümmt noch verzerrt sein. Dadurch können wir den obigen Transformationsschritt überspringen und einige Rechenkosten einsparen. Mit anderen Worten, wir verwenden nur 3 von 4 Texterfassungsschritten.

Abbildung 5. Links: Bildschnipsel nach der Texterkennung. Rechts: Ergebnisse der Texterkennung.

Nachbearbeitung

Mit dem durch das oben beschriebene Modell vorhergesagten Text und den über die Koordinaten der Bildausschnitte berechneten Begrenzungsrahmen sind wir nur noch einen Schritt von der Informationsextraktion entfernt.

Um unseren Textextraktoren zu einer höheren Genauigkeit zu verhelfen, müssen wir einige Nachbearbeitungskorrekturen vornehmen.

  • Post-OCR-Textkorrektur: da der Texterkennungsprozess bereits ein Sequenzvorhersagemodell umfasst, sind keine großen Korrekturen erforderlich – das Modell lernt genug Informationen über die Sprache. Wir führen lediglich einige zusätzliche Korrekturen mit Hilfe von Wörterbüchern durch. Darüber hinaus planen wir, die Verwendung von vortrainierten Sprachmodellen zu prüfen, um die Vorhersagequalität weiter zu verbessern.
  • Korrektur der Lesereihenfolge: obwohl wir bei unseren nachgelagerten Extraktionsaufgaben Koordinaten verwenden, beeinflusst die Lesereihenfolge immer noch die Extraktionsgenauigkeit. Um dies abzumildern, implementieren wir einige Methoden zur Korrektur der Lesereihenfolge, die uns helfen, die beabsichtigte Reihenfolge so nah wie möglich am Original zu rekonstruieren. In Zukunft werden wir möglicherweise auch hier ein vortrainiertes Modell zur Erkennung der Reihenfolge implementieren.
  • Erstellung von JSON/XML-Ausgaben: schließlich werden die Ergebnisse in ein strukturiertes, de-serialisierbares Ausgabeformat für interne nachgelagerte Informationsextraktionsdienste und für die von unseren Kunden/Benutzern verwendete API übertragen. Wir unterstützen sowohl JSON- als auch XML-Formate.

Abbildung 6. Links: Ergebnisse der Texterkennung. Mitte: Text nach Korrektur der Lesereihenfolge. Rechts: endgültige OCR-Ausgabe im JSON-Format.

Am Ende wird das strukturierte Layout im XML-Format an nachgelagerte Aufgaben zur Informationsextraktion weitergegeben.

Zusammenfassung

Mit einer kompletten, selbst entwickelten Pipeline aus Deep-Learning-basierter Bildverarbeitung, OCR und Informationsextraktion bieten wir eine schnelle und exakte Lösung, die auf die mobile Fotos spezialisiert ist. Sie hilft unseren Kunden aus Banken und Versicherungen, die bestmögliche OCR Qualität aus Handyfotos in einer angemessenen Zeitspanne zu erfassen, um eine großartige User Experience und eine hohe Akzeptanz von Funktionen wie der Fotoüberweisung oder Pay Connect zu erreichen.

.        .        .

 

Wenn Du Spaß daran hast, Herausforderungen des Machine Learnings wie diese zu meistern, solltest Du Dir unsere offenen Stellen ansehen. Wir sind immer auf der Suche nach exzellenten Entwicklern, die sich uns anschließen möchten!

Jue Wang

Weitere Posts

Wie wir bei Gini Binärbilder erzeugen

Wie wir bei Gini Binärbilder erzeugen

Sep, 26 2022
Wie wir das Vertrauen in unsere Datenextraktionen vorhersagen

Wie wir das Vertrauen in unsere Datenextraktionen vorhersagen

Mai, 29 2020
Das nächste Level der Informationsextraktion aus Dokumenten

Das nächste Level der Informationsextraktion aus Dokumenten

Apr, 03 2020
Certificates

Footer list slide 1

Über 10 Jahre am Markt

Rechenzentrum in Deutschland

Footer list slide 2

Einbindung per SDK

ISO 27001 zertifiziert

Footer list slide 3

Datenextraktion in Echtzeit

Verschlüsselter Datentransport

Footer list mobile slide 1

Über 10 Jahre am Markt

Rechenzentrum in Deutschland

Einbindung per SDK

Footer list mobile slide 2

ISO 27001 zertifiziert

Datenextraktion in Echtzeit

Verschlüsselter Datentransport

Lösungen

  • Banken
  • Versicherungen

Ressourcen

  • Input Channel
  • Entwicklerressourcen
  • Status

Unternehmen

  • Übersicht
  • Jobs
  • Blog
  • Presse
  • Gini Handbook

Rechtliches

  • Impressum
  • Datenschutz
  • Blog
  • Twitter
  • Kununu
  • YouTube
  • Github
  • LinkedIn

Kontakt

Vielen Dank!

Wie dürfen wir Dich ansprechen?

Damit wir uns auf unser erstes Gespräch mit Dir am besten vorbereiten können, verrate uns doch noch ein paar Details über dein Projekt:

Danke für deine Nachricht. Es wurde gesendet.
Beim Senden Ihrer Nachricht ist ein Fehler aufgetreten. Bitte versuchen Sie es später noch einmal.

Kontakt

Hi – wie können wir helfen?

Wie dürfen wir Dich ansprechen?

Damit wir uns auf unser erstes Gespräch mit Dir am besten vorbereiten können, verrate uns doch noch ein paar Details über dein Unternehmen:

Vielen Dank – deine Nachricht wurde gesendet.
Beim Senden der Nachricht ist ein Fehler aufgetreten – bitte versuche es später noch einmal.

Supportanfrage

Support ticket

Wie dürfen wir Dich ansprechen?

Bitte beschreibe uns dein Problem inklusive deiner Umgebung und der verwendeten Versionen.

Vielen Dank – deine Nachricht wurde gesendet.
Beim Senden der Nachricht ist ein Fehler aufgetreten – bitte versuche es später noch einmal.
Page load link
Nach oben