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

Verbesserte Informationsextraktion mit Machine Learning

Verbesserte Informationsextraktion mit Machine Learning
Valentin Deyringer

Valentin Deyringer

Sep 10, 2018 • 

5,1 min read

Wie wir neue Deep-Learning-Modelle für die Informationsextraktion aus Dokumenten entwickeln

Bei Gini sind wir immer bestrebt, unsere Informationsextraktions-Engine zu verbessern. Wir haben uns auf eine Reise begeben, um unser System mit der Entwicklung von Algorithmen des maschinellen Lernens (ML), insbesondere Deep Learning (DL) zu verbessern. Die Techniken, die wir verwenden, basieren sowohl auf dem Stand der Technik als auch unserer eigenen Forschung.

Für die Menge und Vielfalt der Dokumente, die wir erhalten, ist dies ein geeigneter Ansatz und besser zu warten als ein regelbasiertes System.

Wenn es um Machine Learning geht, ist eine große Menge an Daten entscheidend, um gute Modelle zu trainieren. Wir sind in der guten Ausgangslage, dass wir von unseren Partnern viele Rechnungen erhalten, die für diese Aufgabe ausreichen. In Bereichen, in denen wir andere Arten von Dokumenten verarbeiten, erhalten wir kleinere Datenmengen. Außerdem sind alle Daten, mit denen wir zu tun haben, als sensibel eingestuft, und wir halten uns an strenge Datenschutzrichtlinien nach ISO 27001-Standard. Um diese Herausforderung zu meistern, haben wir ein System zur Datengenerierung entwickelt und sind in der Lage, künstliche Daten zu erzeugen, die von echten Dokumenten (fast) nicht zu unterscheiden sind.

Unser Hauptziel war es, eine Machine Learning-Lösung zu entwickeln die in der Lage ist, Informationen aus strukturiertem Text zu extrahieren, welche noch besser funktioniert als unser aktuelles System, welches auf manuellen Regeln, regulären Ausdrücken und CRF-Modellen basiert.

Wir begannen unsere Forschung im Rahmen der Personal Invoice Assistant Academy, die sich auf die Informationsextraktion aus Rechnungen konzentriert, und wollten die Extraktion der Zahlungsempfänger verbessern. Wir formulierten das Problem so, dass wir Wörter danach klassifizieren wollten, ob sie Teil dieser Information sind oder nicht. Nachdem wir die Daten untersucht hatten, wählten wir eine Reihe von Merkmalen aus, die diese Wörter aufweisen (z. B. ihre Position auf dem Dokument oder ob sie wiederholt auf dem Dokument erscheinen).

Die ersten Ansätze mit einem einfachen Feed-Forward-Netz funktionierten nicht besser als unser bereits vorhandenes System auf Basis von CRFs, Regeln und regulären Ausdrücken.

Dies veranlasste uns, komplexere Architekturen zu erforschen. Da es sich bei den Informationen auf den Dokumenten meist um sequenziellen Text handelt, schien es logisch, rekurrente neuronale Netze (RNNs) einzusetzen, die bekanntermaßen gut mit sequenziellen Informationen umgehen können. Unsere Experimente bestätigten diese Hypothese. Allerdings sind RNNs typischerweise langsamer zu trainieren, da sie sequenziell arbeiten und nicht parallelisiert werden können. Um dies in Zukunft zu überwinden, werden wir weiterhin mit anderen Architekturen experimentieren und die Forschung der Community aufmerksam verfolgen. In letzter Zeit mehren sich die Hinweise, dass andere DL-Methoden in der Lage sind, sequenzielle Daten gut zu verarbeiten. (Interessante Arbeiten zu diesem Thema findest Du hier oder in Bai, et al. 2018.)

Vorerst haben wir, basierend auf vielen Experimenten, eine Erweiterung des im Paper Neural Architectures for Named Entity Recognition vorgestellten State of the Art NER-Systems entwickelt. In einem ersten Schritt wandeln wir Wörter in Vektoren um, indem wir sie in einer Embedding-Tabelle nachschlagen. Wörter, die wir noch nicht gesehen haben und für die es keine Embeddings gibt, werden auf denselben Vektor abgebildet. Um mit solchen Fällen besser umgehen zu können, werden die Zeichensequenzen dieser Wörter von einem bidirektionalen LSTM (BiLSTM, eine populäre Instanz von RNNs, die Sequenzen in beide Richtungen – vorwärts und rückwärts – liest) gelesen, und so eine zusätzliche Repräsentation des Wortes aufgebaut. Bei deutschem Text ist das Modell z.B. in der Lage, Wörter, die auf „straße“, „weg“ oder „gasse“ enden, als Straßennamen zu klassifizieren, ohne das eigentliche Wort jemals zuvor gesehen zu haben. Dieser Schritt hilft auch beim Umgang mit OCR-Fehlern, da die endgültige Berechnung der Darstellung eines Wortes tolerant gegenüber Abweichungen von wenigen Zeichen ist. Zusätzlich zum reinen Text liefern wir Positionsinformationen zu jedem Wort, um die 2D-Struktur von Dokumenten zu modellieren. Nach Anwendung eines weiteren BiLSTM sagt ein abschließendes CRF-Layer die Klasse eines Wortes voraus, d. h. ob es Teil einer bestimmten gesuchten Information ist.

Architektur des für die Informationsextraktion verwendeten Modells

 

.        .        .

 

In der Application Handling Academy, die viel mit Gehaltsabrechnungen zu tun hat, konnten wir eine Verbesserung der Extraktionsgenauigkeit für mehrere Felder erreichen.

Bei einem Satz von 100 Gehaltsabrechnungen haben wir die folgenden Genauigkeitsraten bei der Extraktion erreicht. Beachte, dass einige der Informationen möglicherweise nicht auf allen Dokumenten vorhanden sind und leere Extraktionen für diese korrekt sind.

Der größte Leistungsanstieg ist bei arbeitgeberbezogenen Feldern zu beobachten. Wir führen dies auf die Stärke des Modells bei der Erkennung von feststehenden Begriffen wie Städten und Straßennamen zurück.

Wir sind von den bisherigen Ergebnissen begeistert und freuen uns auf die weitere Entwicklung und darauf, bald mehr unserer DL-Modelle in Produktion zu bringen.

Ein weiteres wichtiges Ergebnis unserer Forschung ist, dass die Einbeziehung von künstlich erzeugten Dokumenten für das Training unserer Modelle wirklich hilft. Im Durchschnitt führt eine Vergrößerung des Trainingsdatensatzes um 30 % mit künstlichen Daten zu einer Verbesserung der Extraktionsgenauigkeit um 7,9 Prozentpunkte im Vergleich zu dem Datensatz, der nur aus echten Dokumenten besteht. Bei einer Verdopplung der Größe des Trainingsdatensatzes mit generierten Dokumenten sehen wir eine Steigerung um durchschnittlich 9,3 Prozentpunkte. Die Erkenntnis, dass sich größere Trainingssätze positiv auf die Leistung auswirken, ist an sich nicht neu. Die gute Nachricht ist, dass die Beschaffung der notwendigen Daten für uns ein gelöstes Problem ist.

Dazu muss man beachten, dass wir für Bilddaten eine OCR-Engine verwenden, um maschinenlesbaren Text zu erhalten, was die Rechenkosten erhöht. Der OCR-Schritt ist jedoch nicht für alle Anwendungsfälle notwendig, und visuelle Informationen können ebenfalls zur Verbesserung der Extraktionsqualität beitragen. Aus diesem Grund forschen wir auch an End-to-End-Ansätzen, die Informationen direkt aus den Eingabebildern extrahieren und den OCR-Schritt überspringen. Mehr zu diesem Thema folgt in einem der nächsten Beiträge.

 

.        .        .

 

Wenn Du bis hierher gelesen hast, schau Dir unsere offenen Stellen an. Wir sind immer auf der Suche nach exzellenten Experten, die sich uns anschließen möchten!

Valentin Deyringer

Valentin Deyringer

interested in all aspects of NLP, fascinated by machine learning, Semantics Engineer @Gini

Weitere Posts

Wie wir bei Gini Binärbilder erzeugen

Wie wir bei Gini Binärbilder erzeugen

Sep, 26 2022
Wie wir OCR mit Deep Learning betreiben

Wie wir OCR mit Deep Learning betreiben

Jun, 22 2022
Wie wir das Vertrauen in unsere Datenextraktionen vorhersagen

Wie wir das Vertrauen in unsere Datenextraktionen vorhersagen

Mai, 29 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