Tabellarische Daten extrahieren

Quellknoten: 1190443

Extrahieren möchten Tabellendaten aus Rechnungen, Quittungen oder anderen Dokumenten? Kasse Nanonetze' KI-basierte OCR zum Extrahieren Tabellendaten.


Einleitung

Aufbauend auf ihrer Einfachheit war die Excel-Tabelle die vorherrschende Art, strukturierte Daten digital zu speichern. Die scheinbar einfachen Tabellenkalkulationen sind tatsächlich eng mit der täglichen Datenverarbeitung großer Unternehmen und Organisationen verknüpft. Mit wenigen Klicks können Unternehmen jetzt Aufgaben auf verschiedene Mitarbeiter verteilen, Budgets aus mehreren Cashflows verfolgen und sogar genaue Vorhersagen aus vergangenen Daten treffen.

Obwohl wir viele Aufgaben problemlos erledigen können, wenn alle Daten korrekt in Excel importiert werden, ist der Prozess des Extrahierens von Daten aus bereits vorhandenen Tabellen, Scans oder sogar Bildern überhaupt nicht einfach. Da die gemeinsame Darstellung in Tabellenkalkulationen nun viele Vorteile für die Datenverarbeitung und -visualisierung bringt, hat sich die Aufgabe, Daten durch Computer Vision, Bildverarbeitung und Deep-Learning-Ansätze zu extrahieren, zu einem der heißesten Themen in der heutigen Forschungsgemeinschaft entwickelt – Bereitstellung fehlerfreier Tabellen Datenextraktion scheint so nah und doch so schwer zu erreichen zu sein.

Dieser Artikel stellt die allgemeinen Schritte zur Bewältigung dieser Aufgabe vor, gefolgt von den neuesten Fortschritten bei Ansätzen zur Datenextraktion und Tutorials zur manuellen und automatischen Durchführung solcher Aufgaben, und schließlich begleitet von einem kurzen Highlight der aktuellen Lösungen auf dem Markt zur Erfüllung dieser Aufgaben.

Zerlegung des Problems

Die Aufgabe des Extrahierens von Tabellendaten kann in zwei Unterprobleme unterteilt werden: 1) Extrahieren von Tabellen aus Scans/Bildern/PDF-Dokumenten, deren Format von Maschinen nicht erkannt werden kann, und 2) Verstehen/Interpretieren der Wörter in Tabellenzellen, sodass dies der Fall sein könnte ordnungsgemäß in CSV-Dateien für Tabellenkalkulationen importiert werden.

Anwendungsfälle der tabellarischen Datenextraktion

Tabellarische Daten extrahieren - Anwendungsfälle
Tabellarische Daten extrahieren – Anwendungsfälle

Verfolgung des Geschäfts-Cashflows

Wenn die Einkaufs- und Verkaufsquellen Ihres Unternehmens aus derselben Quelle stammen, können Sie Quittungen zur einfachen Nachverfolgung schnell manuell vergleichen. Gerade bei großen Konzernen ist das aber oft nicht der Fall. Gelder können aus einer Vielzahl von Quellen in das Unternehmen ein- und ausfließen und haben oft unterschiedliche Quittungs- und Rechnungsformate. Investoren, Käufer und Verkäufer können alle unterschiedlich sein und aus verschiedenen Orten oder sogar Ländern stammen. Das Problem verschärft sich, wenn Zahlungen in anderen Sprachen getätigt werden.

Jahr für Jahr werden riesige Mengen an Ressourcen benötigt, um Mitarbeiter einzustellen, die diese scheinbar einfachen, aber fehleranfälligen Aufgaben erledigen. Eine automatisierte Methode zum Scannen und Extrahieren von Tabellendaten wird diesen Unternehmen erheblich dabei helfen, Geld, Zeit und Ressourcen zu sparen. Darüber hinaus könnte eine gut dokumentierte Tabellenkalkulation auch die Nachbearbeitung für Datenanalysen viel einfacher machen. Unternehmen könnten ganz einfach Budget- und Finanzprognosen durch maschinelle Lernalgorithmen erstellen, indem sie einfach die Daten aus mehreren organisierten Excel-Tabellen extrahieren.

Übertragung von unternehmensübergreifenden Aufzeichnungen

Tabellarische Datenextraktion – Anwendungsfall
Tabellarische Datenextraktion – Anwendungsfall

Bei einem Umzug in neue Standorte, Länder oder bei der Entscheidung für andere Dienste müssen Kunden identische Daten aus früheren Systemen an den neuen Dienstleister übertragen. Solche Daten können medizinische Daten, Kontoauszüge usw. umfassen, sind aber nicht darauf beschränkt.

Durch die Einbindung von Systemen zum Verstehen und Übersetzen der Daten von einem Dienst zum anderen können Unternehmen durch die Reduzierung der Kosten erheblich profitieren.


Extrahieren möchten Tabellendaten aus Rechnungen, Quittungen oder anderen Dokumenten? Kasse Nanonetze' KI-basierte OCR zum Extrahieren Tabellendaten.


Buchhaltungsunternehmen

Wirtschaftsprüfungsunternehmen haben ein doppeltes Problem: schwierige Cashflow-Abstimmung für jedes ihrer Kundenunternehmen und die unterschiedlichen Tabellen- und Datenspeicherformate zwischen Unternehmen aus mehreren Ländern. In geschäftigen Steuerberichtssaisons, in denen Zeit am wichtigsten ist, wird eine automatisierte Datenextraktionslösung mit minimaler Fehlerquote daher hilfreich sein, um die schwere manuelle Arbeit zu erleichtern.

Wie funktioniert es?

Tabellarische Daten für die Buchhaltung extrahieren
Tabellarische Daten für die Buchhaltung extrahieren

Während fast jeder weiß, dass maschinelles Lernen dabei helfen kann, diese Automatisierung zu erleichtern, kennen nur wenige die Konzepte dahinter.

Tatsächlich verwenden wir in diesem Fall ein Konzept namens Deep Learning, das ein Unterzweig des maschinellen Lernens ist: ein allgemeiner Zweig des Verstehens/Lernens des Zwischensystems/der Zwischenfunktion zwischen einer Reihe von Eingaben und Ausgaben, so dass wir dies können Verwenden Sie die Funktion, um zukünftige Vorhersagen zu treffen. Kurz gesagt, Deep Learning simuliert die Funktion über ein leistungsstarkes Werkzeug namens neuronale Netze, das eine Nachahmung biologischer neuronaler Netze ist. Wir lernen die richtigen Gewichte und Neuronen durch eine Minimierung der Differenz zwischen unserer Vorhersage und der tatsächlichen Grundwahrheit.

Es gibt viele Variationen, wie dieses Netzwerk aufgebaut werden kann. Im Folgenden beschreiben wir die notwendigen Varianten, die für die Extraktion tabellarischer Daten erforderlich sind

CNN

Convolutional Neural Networks (CNNs) bestehen aus Neuronen mit lernbaren Gewichtungen und Verzerrungen, ähnlich wie neuronale Netzwerke. Der Hauptunterschied besteht darin, dass wir davon ausgehen, dass die Eingaben Bilder für CNNs sind, was es uns ermöglicht, bestimmte Attribute in die Architektur namens Kernels einzubetten, bei der es sich um ein gleitendes Fenster handelt, das benachbarte Features als gewichtete Summe zusammenfasst, um sie in die nächste Schicht einzuspeisen. Als Ergebnis ist die Weiterleitungsfunktion effizienter zu implementieren und wird wesentlich verbessert. CNNs sind praktisch, wenn wir bestimmte Objekte in einem Bild finden möchten, und in diesem Fall in einer Tabelle.

RNN

Rekurrente neuronale Netze (RNNs) hingegen sind eine Klasse von Netzen, die es ermöglichen, frühere Ausgaben als Eingaben für die nächste Vorhersage zu verwenden. Dies ist besonders hilfreich, wenn die Vorhersage von Ergebnissen früherer Zeiten abhängig ist (z. B. hängt bei der Wettervorhersage die Frage, ob es heute regnen würde, stark davon ab, ob es am Vortag geregnet hat). Diese Art von Architektur ist hilfreich, wenn Sie versuchen, die Bedeutung eines Satzes zu verstehen, bei dem vorherige Wörter einen Einfluss darauf haben können, was das aktuelle Wort sein könnte/bedeutet.

Die Konzepte zusammenfügen

Durch das Training mit den richtigen Datensätzen können wir nun tabellarische Daten mit dem folgenden Verfahren extrahieren:

  1. Die Verwendung eines CNN zur Klassifizierung des Dokumenttyps erfolgt innerhalb eines Bildes. Dies ermöglicht uns eine spezifischere Auswahl unterschiedlich trainierter Tabellendetektoren, die möglicherweise in verschiedenen Szenarien besser funktionieren (z. B. einer für Rechnungen und einer für Kontoauszüge).
  2. Verwenden eines CNN, um die Tabellen, Zeilen und Spalten weiter zu erkennen.
  3. Kombinieren von CNNs und RNNs zur Durchführung einer optischen Zeichenerkennung, die es uns ermöglicht zu verstehen, was genau in jeder Tabelle, Zeile oder Spalte gespeichert ist. Das Verständnis der „Sprache“ kann es uns ermöglichen, unsere extrahierten Daten in bestimmte Formate (z. B. CSV oder JSON) zu bringen, die wir für statistische Analysen und Quervergleiche weiter verwenden können.

Extrahieren möchten Tabellendaten aus Rechnungen, Quittungen oder anderen Dokumenten? Kasse Nanonetze' KI-basierte OCR zum Extrahieren Tabellendaten.


Dein Thema

Konvertieren von PDF in Bilder

Das Extrahieren tabellarischer Daten mithilfe von Computer Vision bedeutet letztendlich, dass die Daten in Bildformate vorverarbeitet werden müssen, wenn dies nicht bereits der Fall ist. Der häufigste Dokumenttyp, der konvertiert werden muss, ist PDF, und daher besteht unser erster Schritt darin, PDF-Dateien zur weiteren Verarbeitung in Bilddateien zu konvertieren. Dazu benötigen wir die pdf2image-Bibliothek, die wie folgt gespeichert werden kann.

pip install pdf2image

Danach können wir Folgendes schreiben, um PDF-Dateien vorzuverarbeiten.

from pdf2image import convert_from_path, convert_from_bytes
from pdf2image.exceptions import ( PDFInfoNotInstalledError, PDFPageCountError, PDFSyntaxError
) images = convert_from_path('example.pdf')
images = convert_from_bytes(open('example.pdf','rb').read())

Der vorgestellte Code stellt sowohl from bytes als auch from path bereit. Wählen Sie die für Ihre Bedürfnisse geeignete aus.

Tabellen finden

Um Tabellen in einem Bild zu finden, besteht ein naiver Weg darin, Linien und Grenzen zu erkennen, die wie eine Tabelle aussehen. Der einfachste Weg wird sein, traditionelle Computer-Vision-Methoden über OpenCV zu verwenden (viele Tutorials finden Sie hier auf ihrer offiziellen Website). Um es zu verwenden, installieren Sie es einfach mit:

pip install opencv-python

Wenn Ihr Unternehmen jedoch über reichlich Daten darüber verfügt, wie die typischen Tabellen in Ihrer Dateidatenbank aussehen, können Sie auch Objekterkennungsmethoden verwenden, um Tabellen zu finden. Einige bemerkenswerte Methoden sind Faster RCNN und YOLO. Beachten Sie, dass Sie beim Trainieren Ihres eigenen Modells dafür jedoch Rechenressourcen wie GPUs während des Trainings benötigen würden, zusammen mit einer beträchtlichen Menge an Daten, die aus allen möglichen Szenarien stammen, in denen das Bild/gescannte PDF erfasst wird.

Inhaltsextraktion über Google Vision API

Nachdem der Begrenzungsrahmen der Tabellenzellen festgelegt ist, können wir nun zu OCR übergehen, wobei die Google Vision-API für den OCR-Abruf eine der besten Optionen zu sein scheint. Die Google Vision API wird aufgrund ihres großen Kundenstamms auf der Grundlage des massiven Crowdsourcing trainiert. Anstatt Ihre persönliche OCR zu trainieren, kann die Nutzung ihrer Dienste daher viel höhere Genauigkeiten aufweisen.

Die gesamte Google Vision API ist einfach einzurichten; man kann auf seine offizielle Anleitung verweisen https://cloud.google.com/vision/docs/quickstart-client-libraries für das detaillierte Einrichtungsverfahren.

Das Folgende ist der Code für den OCR-Abruf:

def detect_document(path): """Detects document features in an image.""" from google.cloud import vision import io client = vision.ImageAnnotatorClient() with io.open(path, 'rb') as image_file: content = image_file.read() image = vision.Image(content=content) response = client.document_text_detection(image=image) for page in response.full_text_annotation.pages: for block in page.blocks: print('nBlock confidence: {}n'.format(block.confidence)) for paragraph in block.paragraphs: print('Paragraph confidence: {}'.format( paragraph.confidence)) for word in paragraph.words: word_text = ''.join([ symbol.text for symbol in word.symbols ]) print('Word text: {} (confidence: {})'.format( word_text, word.confidence)) for symbol in word.symbols: print('tSymbol: {} (confidence: {})'.format( symbol.text, symbol.confidence)) if response.error.message: raise Exception( '{}nFor more info on error messages, check: ' 'https://cloud.google.com/apis/design/errors'.format( response.error.message))

Wenn Sie Remote-Images aus Google Clouds verwenden, können Sie stattdessen den folgenden Code verwenden:

def detect_text_uri(uri): """Detects text in the file located in Google Cloud Storage or on the Web. """    from google.cloud import vision client = vision.ImageAnnotatorClient() image = vision.Image() image.source.image_uri = uri response = client.text_detection(image=image) texts = response.text_annotations    print('Texts:') for text in texts: print('n"{}"'.format(text.description)) vertices = (['({},{})'.format(vertex.x, vertex.y)                  for vertex in text.bounding_poly.vertices])        print('bounds: {}'.format(','.join(vertices))) if response.error.message: raise Exception( '{}nFor more info on error messages, check: '            'https://cloud.google.com/apis/design/errors'.format(                response.error.message))

Die API von Google ist sehr flexibel in dem Sinne, dass ihr maschinelles Lernmodell sehr stark und robust gegenüber vielen herausfordernden Szenarien ist. Beachten Sie, dass die Funktion document_text_detection besonders geschult und auf sehr komprimierte Texte spezialisiert ist, die hauptsächlich in PDFs vorkommen. Während dies den Bedürfnissen vieler entspricht, ist es möglicherweise besser, die andere Texterkennungsfunktion zu verwenden, die sich mehr auf Bilder in freier Wildbahn konzentriert, wenn Ihre PDF-Datei etwas knappere Wörter enthält.

Weitere Codes zur Nutzung der Google API können hier abgerufen werden: https://cloud.google.com/vision; Sie können auch auf Codes in anderen Sprachen (z. B. Java oder Go) verweisen, wenn Sie damit besser vertraut sind.

Es gibt auch andere OCR-Dienste / APIs von Amazon und Microsoft, und Sie können immer die verwenden PyTesseract Bibliothek, um Ihr Modell für bestimmte Zwecke zu trainieren.


Extrahieren möchten Tabellendaten aus Rechnungen, Quittungen oder anderen Dokumenten? Kasse Nanonetze' KI-basierte OCR zum Extrahieren Tabellendaten.


Du kennst keine Codierung? Probieren Sie Nanonets aus!

Wenn Sie eine Person ohne Informatikhintergrund sind oder Ihr Unternehmen eine solche Fähigkeit benötigt, bietet Nanonets eine der besten Technologien zum Extrahieren von Tabellen, die weit über einen einzelnen Datentyp hinausgehen kann. Hier ist eine kurze Anleitung zur Verwendung:

Schritt 1.

Gehen Sie zu nanonets.com und registrieren/einloggen.

Tabellarische Daten extrahieren – Nanonetze

Schritt 2.

Gehen Sie nach der Registrierung in den Bereich "Choose to get started", in dem alle vorgefertigten Extraktoren erstellt werden, und klicken Sie auf die Registerkarte "Tabellen" für den Extraktor, der zum Extrahieren von Tabellendaten entwickelt wurde.

Schritt 3.

Nach einigen Sekunden wird die Seite zum Extrahieren von Daten angezeigt, die besagt, dass sie bereit ist. Laden Sie die Datei zum Extrahieren hoch.

Schritt 4.

Nach der Verarbeitung extrahiert Nanonets alle tabellarischen Informationen genau und überspringt sogar die Leerstellen! Die Daten können auch zum Herunterladen und für weitere Berechnungen in JSON abgelegt werden.

Zusammenfassung

Und da haben Sie es! Eine kurze Geschichte über den Fortschritt der Techniken beim Extrahieren von Tabellendaten und wie Sie sie einfach in Ihr Unternehmen integrieren können. Hoffentlich erspart Ihnen dies viel Arbeit, die Sie zuvor beim Eingeben und doppelten Überprüfen von Daten benötigt haben.

Zeitstempel:

Mehr von KI & Maschinelles Lernen