In einem früheren Beitrag haben wir einige Einblicke gegeben, wie wir die Informationsextraktion aus Dokumenten mit Deep-Learning-Techniken angehen. Unser Informationsextraktionssystem ermöglicht beispielsweise mehrere großartige automatisierte Buchhaltungslösungen, die Menschen von mühsamen Arbeiten, wie der manuellen Überprüfung von Dokumenten und dem Eintippen von Daten, befreien. Die Ansätze, die wir bisher verwendet haben, werden typischerweise in der NLP-Domäne eingesetzt und behandeln Dokumente als Sequenzen von Text. Obwohl dieser Ansatz gut funktioniert, spiegelt er die Realität nicht angemessen wider. Zunächst einmal sind Dokumente zweidimensionale Daten. Der Text kann nicht nur von links nach rechts von oben nach unten fließen, sondern es gibt separate Textbereiche.

Eine Beispielrechnung mit Empfänger- und Absenderinformationen oben, Auftragsdetails in der Mitte und weiteren Informationen unten
Oft wird Text erst in Bezug auf anderen Text über oder unter ihm sinnvoll und es gibt mehr Informationen als nur Text. Zum Beispiel können auf dem Dokument gezeichnete Linien sinnvolle Trennzeichen sein, die Strukturen wie Tabellen bilden. Dies legt nahe, dass auch Graphen eine geeignete Darstellung von Wörtern in einem Dokument sein können. Wir haben uns bereits mit der Verwendung von graph convolutional networks beschäftigt, die einen vielversprechenden Ansatz darstellen, aber das werden wir in einem späteren Beitrag genauer besprechen.
. . .
Wir waren motiviert, unsere Herangehensweise zu überdenken und die Struktur der Dokumente besser zu berücksichtigen. An der grundlegenden Problemstellung haben wir nichts geändert. Gegeben ein Wort in einem Dokument, wollen wir ihm ein Label für den Informationstyp zuweisen, zu dem es gehört – ein typisches Mehrklassen-Klassifikationsproblem.
Ein Wort oder eine Wortbox umfasst in diesem Fall den Text, aber auch das ihn umgebende Rechteck und die Koordinaten, die seine Position im Dokument definieren. Der Einfachheit halber blenden wir hier das Problem der Auswahl und Zusammenführung der richtigen Wortboxen aus, das uns in einem späteren Schritt die endgültigen Extraktionswerte liefert.
Wir erweiterten unser System so, dass es in der Lage ist, zusammengesetzte Extraktionen zu erkennen, die aus mehreren Feldern bestehen. Solche Informationen sind oft in Tabellen oder ähnlichen Strukturen zu finden. Ein Beispiel für diese Art von Extraktion sind die auf einer Rechnung aufgelisteten gekauften Artikel, die oft als line items bezeichnet werden.
Diese Aufgabe hat nicht nur Ähnlichkeiten mit typischen NLP-Problemen, sondern es gibt auch Überschneidungen mit Computer-Vision-Aufgaben wie der Objekterkennung. Unser Ziel ist es, beides zu kombinieren, indem wir die State-of-the-Art-Lösungen beider Bereiche verbinden. Eine gängige Netzwerkarchitektur, die in der Computer Vision verwendet wird, ist der so genannte Encoder-Decoder. Eine Erläuterung dieser neuronalen Netzwerkarchitektur findest Du in diesem Paper.
Wir haben festgestellt, dass eine angepasste Netzwerkarchitektur im Stil des U-Nets die besten Ergebnisse liefert. Auf dieses Encoder-Decoder-Backbone setzen wir verschiedene Heads, die die generierte Feature Map weiterverarbeiten.
Eine der Aufgaben ist die zuvor beschriebene Klassifizierung von Wortboxen. Mit ROI-Pooling wählen wir die Features für jede Box aus der Feature-Map aus. Diese Features werden zu einer Sequenz verkettet (entspricht in etwa einer Lesereihenfolge von links nach rechts, von oben nach unten). Mit Self-Attention (wie in Attention is all you need vorgestellt) können wir modellieren, wie die Wörter in dieser Sequenz zueinander in Beziehung stehen und die Features mit weiteren Kontextinformationen verfeinern. Um die Position des Wortes in dieser Phase explizit zu berücksichtigen, fügen wir positional Encodings (ebenfalls in Attention is all you need beschrieben) hinzu, die die x- und y-Koordinate der Wortbox repräsentieren. Anschließend wird ein Klassifikator angewandt, der eine Wahrscheinlichkeitsverteilung über alle Klassen, die wir finden wollen, erzeugt.
Zur Erkennung von komplexeren Boxen (wie z. B. Line Items) verwenden wir einen ähnlichen Ansatz wie der Stand der Technik, z. B. Faster-RCNN und YOLO. Wir verwenden vordefinierte Ankerboxen für die unser Box Regression Head entsprechende Offsets für die gesuchten Boxen errechnet. Da Objekterkennungsansätzen typischerweise überlappende Boxen vorhersagen, verwenden wir non-maximum-suppression, um die optimale Lösung zu finden.
Als zusätzliche Hilfsaufgabe führen wir semantic segmentation ein, um das Dokument in sinnvolle Regionen zu unterteilen. Für die Vorhersage der Segmentierung verwenden wir ein einfaches convolutional network.

Schematische Darstellung unseres Informationsextraktionsmodells
Für die Aufgaben Box-Klassifikation und semantische Segmentierung verwenden wir den Cross-Entropie-Loss mit gewichteten Klassen, die an den jeweiligen Trainingsdatensatz angepasst sind. Für die Aufgabe der Box-Regression definieren wir den Loss ähnlich dem, der in den RCNN-Papieren verwendet wird. Alle drei Aufgaben werden simultan mit SGD trainiert. Tatsächlich haben wir festgestellt, dass die gemeinsame Nutzung der zugrunde liegenden Encoder-Decoder-Struktur durch die Aufgaben sehr gut funktioniert. Dies hat sogar den Vorteil, dass sich die Aufgaben gegenseitig unterstützen, die Modellgröße verringert und die Laufzeit verkürzt wird.
Mit diesem Modell haben wir ein starkes Informationsextraktionssystem aufgebaut, das wir ständig weiter verbessern. Es erlaubt uns nicht nur, zusammengesetzte Extraktionen wie Line Items zu liefern, sondern es verbessert auch unsere Extraktionsqualität. Bleib dran für weitere Updates!
. . .
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!