Automatisierung der Belegdigitalisierung mit OCR und Deep Learning PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Möchten Sie die Datenextraktion aus Belegen automatisieren? Schauen Sie sich die vortrainierten von Nanonets an Quittungs-OCR or Bau dein eigenes benutzerdefinierte Quittungs-OCR. Du kannst auch planen eine Demo um mehr über unsere AP-Anwendungsfälle zu erfahren!


Quittungs-OCR oder Quittungsdigitalisierung befasst sich mit der Herausforderung, automatisch Informationen aus einer Quittung zu extrahieren. In diesem Artikel gehe ich auf die Theorie hinter der Belegdigitalisierung ein und implementiere eine End-to-End-Pipeline mit OpenCV und Tesseract. Ich überprüfe auch einige wichtige Artikel, die die Belegdigitalisierung mit Deep Learning durchführen.

Was ist Belegdigitalisierung?

Quittungen enthalten die Informationen, die für den Handel zwischen Unternehmen erforderlich sind, und ein Großteil davon befindet sich auf Papier oder in halbstrukturierten Formaten wie PDFs und Bildern von Papier / Ausdrucken. Um diese Informationen effektiv zu verwalten, extrahieren und speichern Unternehmen die in diesen Dokumenten enthaltenen relevanten Informationen. Traditionell wurde dies erreicht, indem die relevanten Informationen manuell extrahiert und in eine Datenbank eingegeben wurden, was ein arbeitsintensiver und teurer Prozess ist.

Die Digitalisierung von Belegen befasst sich mit der Herausforderung, Informationen automatisch aus einem Beleg zu extrahieren.

Das Extrahieren von Schlüsselinformationen aus Belegen und deren Konvertierung in strukturierte Dokumente kann vielen Anwendungen und Diensten dienen, z. B. effizienter Archivierung, schneller Indizierung und Dokumentenanalyse. Sie spielen eine entscheidende Rolle bei der Rationalisierung dokumentenintensiver Prozesse und der Büroautomatisierung in vielen Bereichen der Finanz-, Buchhaltungs- und Steuerbranche.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Brauchen Sie einen robusten Quittungs-OCR or Quittungsscanner Daten aus Quittungen extrahieren? Schauen Sie sich Nanonets an Quittungs-OCR-API!


Wer findet die Digitalisierung von Quittungen hilfreich?

Hier sind einige Bereiche, in denen die Digitalisierung von Belegen einen großen Einfluss haben kann:

Automatisierung von Kreditorenbuchhaltung und Debitorenbuchhaltung

Die manuelle Berechnung von Kreditorenbuchhaltung (AP) und Debitorenbuchhaltung (ARs) ist kostspielig, zeitaufwändig und kann zu Verwechslungen zwischen Managern, Kunden und Lieferanten führen. Mit der Digitalisierung können Unternehmen diese Nachteile beseitigen und weitere Vorteile erzielen - erhöhte Transparenz, Datenanalyse, verbessertes Betriebskapital und einfachere Nachverfolgung.

Optimierung der Lieferkette

Lieferketten sind das Rückgrat vieler Unternehmen. Die Verwaltung von Aufgaben, Informationsflüssen und Produktflüssen ist der Schlüssel zur vollständigen Kontrolle von Lieferung und Produktion. Dies ist wichtig, wenn Unternehmen Lieferzeiten einhalten und die Produktionskosten kontrollieren möchten.

Die Unternehmen, die heutzutage wirklich erfolgreich sind, haben etwas gemeinsam: eine digitalisierte Lieferkette. 89% der Unternehmen mit digitalen Lieferketten perfekte Bestellungen von internationalen Lieferanten erhalten und eine pünktliche Lieferung sicherstellen. Eines der Schlüsselelemente bei der Realisierung der digitalen Lieferkette 4.0 der nächsten Generation ist die Automatisierung der Datenerfassung und -verwaltung, und viele dieser Daten liegen in Form von Quittungen vor Rechnungen. Die manuelle Eingabe von Belegen stellt einen Engpass in der gesamten Lieferkette dar und führt zu unnötigen Verzögerungen. Wird diese Belegbearbeitung digitalisiert, kann dies zu erheblichen Zeit- und Effizienzgewinnen führen.


Haben Sie ein OCR-Problem im Sinn? digitalisieren möchten Rechnungen, PDFs oder Nummernschilder? Geh 'rüber zu Nanonetze und bauen Sie OCR-Modelle kostenlos!


Warum ist es ein schwieriges Problem?

Die Digitalisierung von Belegen ist schwierig, da Belege viele Variationen aufweisen und manchmal von geringer Qualität sind. Durch das Scannen von Belegen werden auch einige Artefakte in unsere digitale Kopie eingefügt. Diese Artefakte stellen viele Herausforderungen an die Lesbarkeit.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Hier ist eine Liste der Dinge, die es schwierig machen, ein Problem zu lösen

  • Handgeschriebener Text
  • Kleine Schriftarten
  • Verrauschte Bilder
  • Verblasste Bilder
  • Kamerabewegung und Verwackeln
  • Wasserzeichen
  • Falten
  • Verblassener Text

Eine traditionelle Pipeline zur Belegdigitalisierung

Eine typische Pipeline für diese Art von End-to-End-Ansatz umfasst:

  • Anarbeitung
  • Optical Character Recognition
  • Informationsextraktion
  • Datenmüll
Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Lassen Sie uns tiefer in jeden Teil der Pipeline eintauchen. Der erste Schritt des Prozesses ist die Vorverarbeitung.

Anarbeitung

Die meisten gescannten Belege sind verrauscht und weisen Artefakte auf. Damit die OCR- und Informationsextraktionssysteme gut funktionieren, müssen die Belege vorverarbeitet werden. Zu den gängigen Vorverarbeitungsmethoden gehören: Graustufen, Schwellenwertbildung (Binarisierung) und Rauschunterdrückung.

Bei der Graustufenkonvertierung wird einfach ein RGB-Bild in ein Graustufenbild konvertiert.

Bei der Rauschentfernung werden normalerweise Salz- und Pfeffergeräusche oder Gaußsche Geräusche entfernt.

Die meisten OCR-Engines funktionieren gut mit Schwarzweißbildern. Dies kann durch Schwellenwertbildung erreicht werden, dh durch Zuweisung von Pixelwerten in Bezug auf den bereitgestellten Schwellenwert. Jeder Pixelwert wird mit dem Schwellenwert verglichen. Wenn der Pixelwert kleiner als der Schwellenwert ist, wird er auf 0 gesetzt, andernfalls wird er auf einen Maximalwert gesetzt (im Allgemeinen 255).

OpenCV bietet verschiedene Schwellwertoptionen – Einfaches Schwellwerthalten, Adaptives Schwellwerthalten

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Optical Character Recognition

Der nächste Schritt in der Pipeline ist OCR. Es wird verwendet, um Text aus Bildern wie einem gescannten Dokument oder einem Bild zu lesen. Mit dieser Technologie werden praktisch alle Arten von Bildern, die geschriebenen Text (getippt, handgeschrieben oder gedruckt) enthalten, in maschinenlesbare Textdaten konvertiert. OCR umfasst zwei Schritte - Texterkennung und Texterkennung.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Es gibt eine Reihe von Ansätzen für OCR. Der konventionelle Computer Vision Ansatz ist zu

  • Verwenden von Filtern, um die Zeichen vom Hintergrund zu trennen
  • Wenden Sie die Konturerkennung an, um die gefilterten Zeichen zu erkennen
  • Verwenden Sie die Magierklassifikation, um die Charaktere zu identifizieren

Das Anwenden von Filtern und Bildklassifizierungen ist ziemlich einfach (denken Sie an die MNIST-Klassifizierung mit SVN), aber die Konturanpassung ist ein sehr schwieriges Problem, erfordert viel manuellen Aufwand und ist nicht verallgemeinerbar.

Als nächstes kommen die Deep Learning-Ansätze. Deep Learning verallgemeinert sich sehr gut. Einer der beliebtesten Ansätze zur Texterkennung ist EAST. EAST (Efficient Accurate Scene Text Detector) ist ein einfacher und dennoch leistungsstarker Ansatz zur Texterkennung. Das EAST-Netzwerk ist eigentlich eine Version des bekannten U-Net, mit dem sich Funktionen unterschiedlicher Größe erkennen lassen.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

CRNN und STN-OCR (Spatial Transformer Networks) sind andere beliebte Artikel, die OCR durchführen.

Informationsextraktion

Der gebräuchlichste Ansatz für das Problem der Informationsextraktion ist regelbasiert, wobei Regeln nach der OCR geschrieben werden, um die erforderlichen Informationen zu extrahieren. Dies ist ein leistungsstarker und genauer Ansatz, für den Sie jedoch neue Regeln oder Vorlagen für einen neuen Dokumenttyp schreiben müssen.

Mehrere regelbasiert in rechnung stellen Analysesysteme sind in der Literatur vorhanden.

  • Intellix von DocuWare erfordert eine Vorlage, die mit relevanten Feldern versehen ist.
  • SmartFix verwendet speziell entwickelte Konfigurationsregeln für jede Vorlage

Die regelbasierten Methoden stützen sich stark auf die vordefinierten Vorlagenregeln, um Informationen aus bestimmten Rechnungslayouts zu extrahieren

Ein in den letzten Jahren weit verbreiteter Ansatz ist die Verwendung eines Standard-Objekterkennungsframeworks wie YOLO, Faster R-CNN, um Felder zu erkennen. Anstelle der reinen Texterkennung werden also die Felderkennung und die Texterkennung gleichzeitig durchgeführt. Dadurch wird die Pipeline kleiner (Texterkennung → Erkennung → Extraktion zur Erkennung → Erkennung). Es ist nicht erforderlich, Regeln zu schreiben, da der Objektdetektor lernt, diese Felder zu erkennen.

Datenmüll

Sobald Sie Ihre Informationen extrahiert haben, kann der Daten-Dump gemäß unserem Anwendungsfall durchgeführt werden. Oft ist ein JSON-Format zum Speichern der Feldinformationen praktisch. Diese JSON-Dateien können problemlos in XML-Dateien, Excel-Tabellen, CSV-Dateien oder Klartextdateien konvertiert werden, je nachdem, wer wie mit den Daten arbeiten möchte.

Quittungsdigitalisierung mit Tesseract

Nachdem wir eine Vorstellung von der Pipeline haben, implementieren wir sie auf einer Beispielquittung. Dies ist die Quittung, mit der wir arbeiten werden. Unser Ziel am Ende ist es, den Namen des Restaurants, die gekauften Artikel mit ihrer Menge und ihren Kosten, das Kaufdatum und die Gesamtsumme zu extrahieren.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Anarbeitung

Da unsere Quittung bereits in Graustufen vorliegt und nicht viel Rauschen auftritt, werde ich nur einen Schwellenwert von 210 festlegen. Sie können den Wert anpassen, um die richtige Ausgabe zu erhalten. Zu wenig und Sie werden viel verpassen. Zu nahe an 255 wird alles schwarz.

Wir müssen zuerst OpenCV installieren.

pip install opencv-python

Hier ist der Code für die Schwellenwertbildung.

import cv2
import numpy as np
from matplotlib import pyplot as plt # Read the image
img = cv2.imread('receipt.jpg',0)
# Simple thresholding
ret,thresh1 = cv2.threshold(img,210,255,cv2.THRESH_BINARY)
cv2.imshow(thresh1,’gray’)

So sieht die Ausgabe aus.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Texterkennung

Für die Texterkennung werde ich eine Open-Source-Bibliothek namens verwenden Tesseract. Es ist die endgültige OCR-Bibliothek und wird seit 2006 von Google entwickelt. Die neueste Version von Tesseract (v4) unterstützt Deep Learning-basierte OCR, die wesentlich genauer ist. Die zugrunde liegende OCR-Engine selbst verwendet ein LSTM-Netzwerk (Long Short-Term Memory).

Lassen Sie uns zuerst die neueste Version von Tesseract installieren.

Für Ubuntu

sudo apt install tesseract-ocr

Für macOS

brew install tesseract --HEAD

Für Windows können Sie die Binärdateien hier herunterladen Seite

Überprüfen Sie Ihre Tesseract-Version.

tesseract -v

Ausgabe -

tesseract 4.0.0-beta.3
leptonica-1.76.0
libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11
Found AVX512BW
Found AVX512F
Found AVX2
Found AVX
Found SSE

Installieren Sie Ihre Tesseract + Python-Bindungen

Nachdem wir die Tesseract-Binärdatei installiert haben, müssen wir jetzt die Tesseract + Python-Bindungen installieren, damit unsere Python-Skripte mit Tesseract kommunizieren können. Wir müssen auch das deutsche Sprachpaket installieren, da die Quittung auf Deutsch ist.

pip install pytesseract
sudo apt-get install tesseract-ocr-deu

Nachdem wir Tesseract installiert haben, beginnen wir mit der Erkennung der Textfelder.Tesseract hat eingebaute Funktionen zum Erkennen von Textfeldern.

import pytesseract
from pytesseract import Output
import cv2 img = cv2.imread('receipt.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
n_boxes = len(d['level'])
for i in range(n_boxes): (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.imshow(img,'img')

Hier ist die Ausgabe des Texterkennungscodes.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Texterkennung

Wir werden Tesseract durchführen, um OCR durchzuführen. Tesseract 4 verwendet einen Deep-Learning-Ansatz, der deutlich besser abschneidet als die meisten anderen Open-Source-Implementierungen.

Hier ist der Code der Texterkennung. Obwohl es ein sehr einfacher Einzeiler ist, geht viel unter die Haube.

extracted_text = pytesseract.image_to_string(img, lang = 'deu')

Hier ist die Rohausgabe.

'BerghotelnGrosse Scheideggn3818 GrindelwaldnFamilie R.MüllernnRech.Nr. 4572 30.07.2007/13:29: 17nBar Tisch 7/01n2xLatte Macchiato &ä 4.50 CHF 9,00n1xGloki a 5.00 CH 5.00n1xSchweinschnitzel ä 22.00 CHF 22.00nIxChässpätz 1 a 18.50 CHF 18.50nnTotal: CHF 54.50nnIncl. 7.6% MwSt 54.50 CHF: 3.85nnEntspricht in Euro 36.33 EURnEs bediente Sie: UrsulannMwSt Nr. : 430 234nTel.: 033 853 67 16nFax.: 033 853 67 19nE-mail: grossescheidegs@b luewin. ch'

Hier ist die formatierte Ausgabe

Berghotel
Grosse Scheidegg
3818 Grindelwald
Familie R.Müller Rech.Nr. 4572 30.07.2007/13:29: 17
Bar Tisch 7/01
2xLatte Macchiato &ä 4.50 CHF 9,00
1xGloki a 5.00 CH 5.00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50 Total: CHF 54.50 Incl. 7.6% MwSt 54.50 CHF: 3.85 Entspricht in Euro 36.33 EUR
Es bediente Sie: Ursula MwSt Nr. : 430 234
Tel.: 033 853 67 16
Fax.: 033 853 67 19
E-mail: grossescheidegs@b luewin. ch

Sie müssen Dokumente, Quittungen o.ä. digitalisieren Rechnungen aber zu faul zum coden? Geh 'rüber zu Nanonetze und bauen Sie OCR-Modelle kostenlos!


Informationsextraktion

Wie ich bereits erwähnt habe, ist die häufigste Methode zum Extrahieren von Informationen ein regelbasierter Ansatz.

Alle Quittungen von diesem Hotel folgen einer festen Struktur und die Informationen erscheinen in verschiedenen Zeilen. Dies spiegelt sich in der OCR-Ausgabe wider, in der Zeilenumbrüche durch 'n' dargestellt werden. Mit diesen schreiben wir eine Reihe von Regeln, um Informationen zu extrahieren. Dieses Regelwerk kann auf jede Quittung dieses Hotels angewendet werden, da sie dasselbe Format haben.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Ich werde den Namen des Restaurants, das Datum der Transaktion, die gekauften Artikel, ihre Menge, die Gesamtkosten pro Artikel und den Gesamtbetrag mithilfe einfacher Python-Befehle und regulärer Ausdrücke extrahieren.

Dies ist ein Wörterbuch, in dem ich die extrahierten Informationen speichern werde.

receipt _ocr = {}

Der erste Schritt besteht darin, den Namen des Restaurants zu extrahieren. Die Position des Restaurantnamens wird in allen Belegen konstant sein, und das ist in den ersten beiden Zeilen. Verwenden wir dies, um eine Regel zu erstellen.

splits = extracted_text.splitlines()
restaurant_name = splits[0] + '' + splits[1]

Als nächstes extrahieren wir das Datum der Transaktion. Datumsregex ist ziemlich einfach.


import re
# regex for date. The pattern in the receipt is in 30.07.2007 in DD:MM:YYYY date_pattern = r'(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)dd'
date = re.search(date_pattern, extracted_text).group()
receipt_ocr['date'] = date
print(date)

Ausgabe -

‘30.10.2007’

Als nächstes extrahieren wir alle Informationen in Bezug auf die Artikel und Kosten.

Die Artikel enthalten einen CHF, der dem Schweizer Franken entspricht. Lassen Sie uns alle Vorkommen von CHF erkennen. Jetzt können wir Zeilen erkennen, indem wir die Zeichen zwischen 2 n und einem CHF erkennen. Ich ermittle hier auch die Summe.

# get lines with chf
lines_with_chf = []
for line in splits: if re.search(r'CHF',line): lines_with_chf.append(line) print(lines_with_chf)

Ausgabe -

2xLatte Macchiato &ä 4.50 CHF 9,00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50
Total: CHF 54.50
Incl. 7.6% MwSt 54.50 CHF: 3.85

Wenn Sie bemerken, hat Tesseract einen Artikel verpasst, weil CH anstelle von CHF erkannt wurde. Ich werde im nächsten Abschnitt auf Herausforderungen in traditionellen OCR-Systemen eingehen.

# get items, total, ignore Incl
items = []
for line in lines_with_chf: print(line) if re.search(r'Incl',line): continue if re.search(r'Total', line): total = line else: items.append(line) # Get Name, quantity and cost all_items = {}
for item in items: details = item.split() quantity_name = details[0] quantity = quantity_name.split('x')[0] name = quantity_name.split('x')[1] cost = details[-1] all_items[name] = {'quantity':quantity, 'cost':cost} total = total.split('CHF')[-1] # Store the results in the dict
receipt_ocr['items'] = all_items
receipt_ocr[‘total’] = total import json receipt_json = json.dumps(receipt_ocr)
print(receipt_json)

Drucken unserer JSON-Ausgabe -

{'date': '30.07.2007', 'items': {'Chässpätz': {'cost': '18.50', 'quantity': 'I'}, 'Latte': {'cost': '9,00', 'quantity': '2'}, 'Schweinschnitzel': {'cost': '22.00', 'quantity': '1'}}, 'total': ' 54.50'}

Alle wichtigen Informationen wurden extrahiert und in Receipt_Json gespeichert.

Probleme mit dem herkömmlichen Ansatz

Obwohl wir die Informationen extrahiert haben, fehlen in der obigen Pipeline einige Dinge und sie sind nicht optimal. Für jede neue Quittung müssen wir ein neues Regelwerk schreiben und sind daher nicht skalierbar.

Es kann viele Variationen bei Layouts, Schriftarten und Schriftgrößen, handgeschriebenen Dokumenten usw. geben. Unterschiede in den Layouts wirken sich auf regelbasierte Ansätze aus, und diese müssen berücksichtigt werden, was sehr mühsam wird. Unterschiede in Schriftart und Schriftgröße erschweren das Erkennen und Extrahieren von Informationen.

Warum ist eine End-to-End-Deep-Learning-Pipeline besser?

Eines der größten Probleme beim Standardansatz ist die fehlende Verallgemeinerung. Regelbasierte Ansätze können nicht verallgemeinert werden, und für jede neue Vorlage müssen neue Regeln geschrieben werden. Auch Änderungen oder Variationen in einer vorhandenen Vorlage müssen berücksichtigt werden.

Ein Deep-Learning-Ansatz kann diese Regeln lernen und sich problemlos auf verschiedene Layouts verallgemeinern lassen, sofern wir sie in unserem Trainingsdatensatz haben.

Deep Learning und Informationsextraktion

Hier überprüfe ich einige Artikel, die End-to-End-Deep-Learning-Ansätze verwenden.

SÜSSE

CUTIE: Lernen, Dokumente mit Convolutional Universal Text Information Extractor zu verstehen

Dieses Papier schlägt vor eine lernbasierte Methode zur Extraktion von Schlüsselinformationen mit begrenztem Personalbedarf. Es kombiniert die Informationen sowohl aus der semantischen Bedeutung als auch aus der räumlichen Verteilung von Texten in Dokumenten. Ihr vorgeschlagenes Modell, Convolutional Universal Text Information Extractor (CUTIE), wendet Faltungs-Neuronale Netze auf gerasterte Texte an, in denen Texte als Merkmale mit semantischen Konnotationen eingebettet sind.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Das vorgeschlagene Modell, packt das Problem der Extraktion von Schlüsselinformationen an

  • Erstellen Sie zunächst Rastertexte mit dem vorgeschlagenen Methode zur Zuordnung der Gitterposition. Um die Gitterdaten für das Faltungs-Neuronale Netz zu erzeugen, wird das gescannte Dokumentbild von einer OCR-Engine verarbeitet, um die Texte und ihre absoluten / relativen Positionen zu erfassen. Die Texte werden vom ursprünglich gescannten Dokumentbild auf das Zielraster abgebildet, so dass das zugeordnete Raster die ursprüngliche räumliche Beziehung zwischen Texten beibehält und dennoch besser als Eingabe für das Faltungs-Neuronale Netzwerk geeignet ist.
  • Anschließend wird das CUTIE-Modell auf die gerasterten Texte angewendet. Die reichhaltige semantische Information wird aus den gerasterten Texten in der Anfangsphase des Faltungsnetzwerks mit einer Worteinbettungsschicht codiert.

Das CUTIE ermöglicht die gleichzeitige Betrachtung von semantischen Informationen und räumlichen Informationen der Texte im gescannten Dokumentbild und kann ein neues Ergebnis auf dem neuesten Stand der Technik für die Extraktion von Schlüsselinformationen erzielen.

CUTIE-Modell

Sie haben 2 Modelle CUTIE-A und CUTIE-B. Das vorgeschlagene CUTIE-A ist ein Faltungs-Neuronales Netzwerk mit hoher Kapazität, das Merkmale mit mehreren Auflösungen zusammenführt, ohne hochauflösende Merkmale zu verlieren. CUTIE-B ist ein Faltungsnetzwerk mit atrous Faltung zur Vergrößerung des Sichtfelds und dem ASPP-Modul (Atrous Spatial Pyramid Pooling) zur Erfassung von Kontexten mit mehreren Maßstäben. Sowohl CUTIE-A als auch CUITE-B führen in der Anfangsphase einen semantischen Bedeutungscodierungsprozess mit einer Worteinbettungsschicht durch.

Die Aufgabe von CUTIE ähnelt der Aufgabe der semantischen Segmentierung. Das zugeordnete Raster enthält im Gegensatz zu den mit Pixeln verteilten Bildern gestreute Datenpunkte (Text-Token). Die in der Rasterposition zugeordneten Schlüsseltexte sind aufgrund unterschiedlicher Arten von Dokumentlayouts entweder nahe beieinander oder voneinander entfernt. Das Einbeziehen von Kontextverarbeitungsfunktionen mit mehreren Maßstäben kommt daher dem Netzwerk zugute.

Datensatz

Die vorgeschlagene Methode wird auf der ICDAR 2019-Herausforderung für robustes Lesen im SROIE-Datensatz bewertet und befindet sich auch in einem selbst erstellten Datensatz mit drei Arten von gescannten Dokumentbildern.

Das ICDAR 2019 SROIE-Datensatz wird verwendet, die 1000 ganze gescannte Belegbilder enthält. Jedes Quittungsbild enthält ungefähr vier wichtige Textfelder, wie z. B. Warenname, Stückpreis, Datum und Gesamtkosten. Der im Datensatz kommentierte Text besteht hauptsächlich aus Ziffern und englischen Zeichen.

Der selbst erstellte Datensatz enthält 4 484 mit Anmerkungen versehene gescannte spanische Belegdokumente, einschließlich Taxibelegen, Belegen für Mahlzeitenunterhaltung (ME) und Hotelbelegen mit 9 verschiedenen Schlüsselinformationsklassen.

Die Ergebnisse

Die Gesamtleistung wird unter Verwendung der durchschnittlichen Genauigkeit (AP - und gemessen als Genauigkeit pro Klasse über die 9 Klassen) und der weichen durchschnittlichen Genauigkeit (softAP) bewertet, wobei die Vorhersage einer Schlüsselinformationsklasse als korrekt bestimmt wird, wenn positive Grundwahrheiten vorliegen werden korrekt vorhergesagt, auch wenn einige falsch positive Ergebnisse in der endgültigen Vorhersage enthalten sind. Die gemeinsame Analyse von AP und softAP bietet ein besseres Verständnis der Modellleistung.

Sie können die Ergebnisse in der folgenden Tabelle sehen.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

GCNs für VRDs

Diagrammfaltung für die multimodale Informationsextraktion aus visuell umfangreichen Dokumenten

In diesem Artikel wird ein auf Graphfaltung basierendes Modell vorgestellt, mit dem Text- und visuelle Informationen kombiniert werden können, die in visuell reichhaltigen Dokumenten (VRDs) dargestellt werden. Diagrammeinbettungen werden trainiert, um den Kontext eines Textsegments im Dokument zusammenzufassen, und weiter mit Texteinbettungen für die Entitätsextraktion kombiniert.

In diesem Artikel wird ein Dokument als VRD bezeichnet, und ich bleibe dabei.

Jedes Dokument wird als Diagramm von Textsegmenten modelliert, wobei jedes Textsegment aus der Position des Segments und dem darin enthaltenen Text besteht. Das Diagramm besteht aus Knoten, die Textsegmente darstellen, und Kanten, die visuelle Abhängigkeiten wie relative Formen und Abstände zwischen zwei Knoten darstellen.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Die durch Graphfaltung erzeugten Grapheneinbettungen fassen den Kontext eines Textsegments im Dokument zusammen, die weiter mit Texteinbettungen zur Entitätsextraktion unter Verwendung eines Standard-BiLSTM-CRF-Modells kombiniert werden.

Modell

Das Modell codiert zunächst jedes Textsegment im Dokument in die Diagrammeinbettung unter Verwendung mehrerer Ebenen der Diagrammfaltung. Die Einbettung repräsentiert die Informationen im Textsegment aufgrund ihres visuellen und textuellen Kontexts. Der visuelle Kontext ist das Layout des Dokuments und die relativen Positionen des einzelnen Segments zu anderen Segmenten. Der Textkontext ist die Gesamtheit der Textinformationen im gesamten Dokument. Das Modell lernt, Texten aus Nachbarsegmenten höhere Gewichte zuzuweisen. Anschließend kombiniert das Papier die Grafikeinbettungen mit Texteinbettungen und wendet ein Standard-BiLSTM-CRF-Modell für die Entitätsextraktion an.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Datensatz

Es werden zwei reale Datensätze verwendet. Dies sind ValueAdded Tax Invoices (VATI) und International Purchase Receipts (IPR). VATI besteht aus 3000 vom Benutzer hochgeladenen Bildern und hat 16 Entitäten, um genau zu sein. Beispielentitäten sind die Namen von Käufer / Verkäufer, Datum und Steuerbetrag. Die Rechnungen sind in Chinesisch und haben eine feste Vorlage, da es sich um eine nationale Standardrechnung handelt.

IPR ist ein Datensatz von 1500 gescannten Belegdokumenten in englischer Sprache, der 4 Entitäten enthält (Rechnungsnummer, Lieferantenname, Zahlername und Gesamtbetrag). Es gibt 146 Vorlagen für die Belege.

Die Ergebnisse

Der F1-Score wird verwendet, um die Leistung des Modells in allen Experimenten zu bewerten. Die folgende Tabelle enthält die Ergebnisse für die beiden Datensätze.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Basislinie I wendet BiLSTM-CRF auf jedes Textsegment an, wobei jedes Textsegment ein einzelner Satz ist.

Baseline II wendet das Tagging-Modell auf die verketteten Textsegmente an.

Schneller-RCNN + AED

Deep Learning-Ansatz für die Quittungserkennung

In diesem Artikel wird ein Deep-Learning-Ansatz zum Erkennen gescannter Belege vorgestellt. Das Erkennungssystem besteht aus zwei Hauptmodulen: Texterkennung basierend auf Connectionist Text Proposal Network und Texterkennung basierend auf Attention-based Encoder-Decoder. Das System erreichte 71.9% der F1-Punktzahl für die Erkennungs- und Erkennungsaufgabe.

Texterkennung

Die CTPN-Struktur ähnelt Faster R-CNN mit der Zugabe der LSTM-Schicht. Das Netzwerkmodell besteht hauptsächlich aus drei Teilen: Merkmalsextraktion durch VGG16, bidirektionales LSTM und Bounding-Box-Regression

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Texterkennung

Der AED wird zum Erkennen von Textzeilen verwendet. Der AED verfügt über zwei Hauptmodule: DenseNet zum Extrahieren von Features aus einem Textbild und ein LSTM in Kombination mit einem Aufmerksamkeitsmodell zur Vorhersage des Ausgabetextes.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Datensatz

Der Datensatz von SROIE 2019 wird verwendet. Sie teilten die Trainingsdaten in Training, Validierung und Test auf und wählten zufällig 80% der Belege für das Training, 10% der Belege für die Validierung und den Rest für das Testen aus. Das Ergebnis sind 500 Belege für Schulungen, 63 Belege für die Validierung und 63 für Tests.

Die Ergebnisse

Für die Texterkennung verwendet das Papier TIoU (Tightness Aware Intersection-over-Union). Für die Texterkennung wurden auf dem Papier F1, Precision und Recall verwendet.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Tabelle I zeigt das Ergebnis von CTPN unter drei Bedingungen: CTPN auf Originalbildern; Vorverarbeitung + CTPN, Vorverarbeitung + CTPN + OCR-Überprüfung. Tabelle 2 zeigt die Ergebnisse des AED-Netzwerks.

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Es gibt natürlich einen einfacheren, intuitiveren Weg, dies zu tun.


Brauchen Sie einen robusten Quittungs-OCR Daten aus Quittungen extrahieren? Schauen Sie sich Nanonets an Quittungs-OCR-API!


OCR mit Nanonets

Update Nr. 1: Wir haben gerade unsere veröffentlicht Quittungs-OCR vortrainiertes Modell. Gehen Sie zu https://app.nanonets.com und beginnen Sie mit dem Testen!

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Das Nanonets OCR-API Mit dieser Funktion können Sie problemlos OCR-Modelle erstellen. Sie müssen sich nicht um die Vorverarbeitung Ihrer Bilder oder um die Übereinstimmung von Vorlagen oder das Erstellen regelbasierter Engines kümmern, um die Genauigkeit Ihres OCR-Modells zu erhöhen.

Sie können Ihre Daten hochladen, mit Anmerkungen versehen, das Modell auf Training einstellen und warten, bis Vorhersagen über eine browserbasierte Benutzeroberfläche abgerufen werden, ohne eine einzige Codezeile zu schreiben, sich um GPUs zu kümmern oder die richtigen Architekturen für Ihre Deep-Learning-Modelle zu finden. Sie können auch die JSON-Antworten jeder Vorhersage abrufen, um sie in Ihre eigenen Systeme zu integrieren und maschinell lernfähige Apps zu erstellen, die auf modernsten Algorithmen und einer starken Infrastruktur basieren.

Verwenden der GUI: https://app.nanonets.com/

Sie können die Nanonets-OCR-API auch verwenden, indem Sie die folgenden Schritte ausführen:

Schritt 1: Klonen Sie das Repo, installieren Sie Abhängigkeiten

git clone https://github.com/NanoNets/nanonets-ocr-sample-python.git
cd nanonets-ocr-sample-python
sudo pip install requests tqdm

Schritt 2: Holen Sie sich Ihren kostenlosen API-Schlüssel
Holen Sie sich Ihren kostenlosen API-Schlüssel von http://app.nanonets.com/#/keys

Automatisierung der Belegdigitalisierung mit OCR und Deep Learning

Schritt 3: Legen Sie den API-Schlüssel als Umgebungsvariable fest

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Schritt 4: Erstellen Sie ein neues Modell

python ./code/create-model.py

Hinweis: Dadurch wird eine MODEL_ID generiert, die Sie für den nächsten Schritt benötigen

Schritt 5: Modell-ID als Umgebungsvariable hinzufügen

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Hinweis: Sie erhalten YOUR_MODEL_ID aus dem vorherigen Schritt

Schritt 6: Laden Sie die Trainingsdaten hoch
Die Trainingsdaten finden Sie in images (Bilddateien) und annotations (Anmerkungen zu den Bilddateien)

python ./code/upload-training.py

Schritt 7: Zugmodell
Beginnen Sie nach dem Hochladen der Bilder mit dem Training des Modells

python ./code/train-model.py

Schritt 8: Modellstatus abrufen
Das Modell benötigt ca. 2 Stunden zum Trainieren. Sie erhalten eine E-Mail, sobald das Modell trainiert ist. In der Zwischenzeit überprüfen Sie den Zustand des Modells

python ./code/model-state.py

Schritt 9: Vorhersage machen
Sobald das Modell trainiert ist. Mit dem Modell können Sie Vorhersagen treffen

python ./code/prediction.py ./images/151.jpg

Weiterführende Literatur

Update:
‌ Weiteres Lesematerial über die neuesten Fortschritte bei der Automatisierung der Belegdigitalisierung mit OCR und Deep Learning hinzugefügt.

Zeitstempel:

Mehr von KI & Maschinelles Lernen