Tabellenerkennung und Informationsextraktion mit Deep Learning

Quellknoten: 1325422

Einführung in die Tabellenextraktion

Die Menge der gesammelten Daten nimmt mit der wachsenden Zahl von Anwendungen, Software und Online-Plattformen von Tag zu Tag drastisch zu.

Um diese riesigen Datenmengen produktiv zu handhaben bzw. darauf zuzugreifen, ist es notwendig, wertvolle Tools zum Extrahieren von Informationen zu entwickeln.

Einer der Teilbereiche, die im Bereich Informationsextraktion Aufmerksamkeit erfordern, ist die Extraktion von Tabellen aus Bildern oder die Erkennung von Tabellendaten aus Formularen, PDFs und Dokumenten.

Tabellenextraktion ist die Aufgabe, Tabelleninformationen in einem Dokument zu erkennen und zu zerlegen.

Tabellen-OCR – Nanonets extrahieren Tabellendaten aus einem Bild!
Tabellen-OCR – Nanonetze extrahieren Tabellendaten aus einem Bild!

Stellen Sie sich vor, Sie haben viele Dokumente mit tabellarischen Daten, die Sie für die weitere Verarbeitung extrahieren müssen. Herkömmlicherweise können Sie sie manuell kopieren (auf ein Papier) oder in Excel-Tabellen laden.

Mit der Tabellen-OCR-Software können Sie jedoch Tabellen automatisch erkennen und alle tabellarischen Daten auf einmal aus Dokumenten extrahieren. Das spart viel Zeit und Nacharbeit.

In diesem Artikel schauen wir uns zunächst an, wie Nanonets automatisch Tabellen aus Bildern oder Dokumenten extrahieren kann. Anschließend behandeln wir einige beliebte DL-Techniken zum Erkennen und Extrahieren von Tabellen in Dokumenten.


Möchten Sie tabellarische Daten aus Rechnungen, Quittungen oder anderen Dokumenttypen extrahieren? Schauen Sie sich Nanonets an PDF-Tabellenextraktor tabellarische Daten zu extrahieren. Planen Sie eine Demo um mehr über die Automatisierung zu erfahren Tabellenextraktion.


Inhaltsverzeichnis

Extrahieren Sie die Tabelle aus dem Bild mit Nanonets Table OCR

  • Verein registrieren für ein kostenloses Nanonets-Konto

    • Laden Sie Bilder/Dateien in das Nanonets Table OCR-Modell hoch
    • Nanonets erkennt und extrahiert automatisch alle Tabellendaten
    • Bearbeiten und überprüfen Sie die Daten (falls erforderlich)
    • Exportieren Sie die verarbeiteten Daten als Excel, CSV oder JSON

Tabelle aus Bild mit Nanonets extrahieren

Wollen Daten aus PDF kratzen Dokumente, PDF-Tabelle in Excel konvertieren or Tabellenextraktion automatisieren? Finden Sie heraus wie Nanonetze PDF-Schaber or PDF-Parser kann Ihr Unternehmen produktiver machen.


Nanonets-Tabellen-OCR-API

Tabellen-OCR mit Nanonets
Tabellen-OCR mit Nanonets

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 zum Trainieren einstellen und darauf warten, Vorhersagen über eine browserbasierte Benutzeroberfläche zu erhalten, ohne eine einzige Codezeile zu schreiben, sich um GPUs zu kümmern oder mithilfe von Deep-Learning-Modellen die richtigen Architekturen für Ihre Tabellenerkennung zu finden.

Sie können auch die JSON-Antworten jeder Vorhersage abrufen, um sie in Ihre eigenen Systeme zu integrieren und auf maschinellem Lernen basierende Apps zu erstellen, die auf modernsten Algorithmen und einer starken Infrastruktur basieren.

https://nanonets.com/documentation/


Beschäftigt sich Ihr Unternehmen mit Daten- oder Texterkennung in digitalen Dokumenten, PDFs oder Bildern? Haben Sie sich gefragt, wie man tabellarische Daten extrahiert, Extrahieren Sie Text aus Bildern , Daten aus PDF extrahieren or Text aus PDF extrahieren genau und effizient?


Für wen ist die Tabellenextraktion nützlich?

Wie im vorherigen Abschnitt besprochen, werden Tabellen häufig verwendet, um Daten in einem sauberen Format darzustellen. Wir können sie so oft in verschiedenen Bereichen sehen, von der Organisation unserer Arbeit durch die Strukturierung von Daten über Tabellen bis hin zur Speicherung riesiger Vermögenswerte von Unternehmen. Es gibt viele Organisationen, die sich täglich mit Millionen von Tabellen auseinandersetzen müssen. Um solche mühsamen Aufgaben zu erleichtern, alles manuell zu erledigen, müssen wir auf schnellere Techniken zurückgreifen. Lassen Sie uns einige Anwendungsfälle besprechen, in denen Tabellen extrahieren kann wesentlich sein:

Quelle: Patrik Thomas, Unsplash

Persönliche Anwendungsfälle

Das Tabellenextraktion Der Prozess kann auch für kleine persönliche Anwendungsfälle hilfreich sein. Manchmal erfassen wir Dokumente auf dem Mobiltelefon und kopieren sie später auf unsere Computer. Anstatt diesen Prozess zu verwenden, können wir die Dokumente direkt erfassen und als bearbeitbare Formate in unseren benutzerdefinierten Vorlagen speichern. Im Folgenden finden Sie einige Anwendungsfälle, wie wir die Tabellenextraktion in unsere persönliche Routine integrieren können –

Scannen von Dokumenten zum Telefon: Wir erfassen häufig Bilder wichtiger Tabellen auf dem Telefon und speichern sie. Mit der Tabellenextraktionstechnik können wir jedoch die Bilder der Tabellen erfassen und direkt in Tabellenform speichern, entweder in Excel- oder Google Sheets. Damit müssen wir nicht nach Bildern suchen oder den Tabelleninhalt in neue Dateien kopieren, sondern können die importierten Tabellen direkt verwenden und mit der Arbeit an den extrahierten Informationen beginnen.

Dokumente zu HTML: Auf Webseiten finden wir viele Informationen, die anhand von Tabellen dargestellt werden. Sie helfen uns beim Vergleich mit den Daten und geben uns auf organisierte Weise einen kurzen Hinweis auf die Zahlen. Mithilfe des Tabellenextraktionsprozesses können wir PDF-Dokumente oder JPG / PNG-Bilder scannen und die Informationen direkt in ein benutzerdefiniertes, selbst entworfenes Tabellenformat laden. Wir können weiterhin Skripte schreiben, um zusätzliche Tabellen basierend auf den vorhandenen Tabellen hinzuzufügen und dadurch die Informationen zu digitalisieren. Dies hilft uns bei der Bearbeitung des Inhalts und beschleunigt den Speicherprozess.


Industrielle Anwendungsfälle

Es gibt weltweit mehrere Branchen, in denen Papierkram und Dokumentation sehr wichtig sind, insbesondere im Banken- und Versicherungssektor. Von der Speicherung von Kundendaten bis zur Pflege der Kundenbedürfnisse werden häufig Tabellen verwendet. Diese Informationen werden erneut als Dokument (in gedruckter Form) zur Genehmigung an verschiedene Zweigstellen übergeben, wobei manchmal eine Fehlkommunikation zu Fehlern beim Abrufen von Informationen aus Tabellen führen kann. Stattdessen erleichtert die Verwendung von Automatisierung unser Leben erheblich. Sobald die anfänglichen Daten erfasst und genehmigt wurden, können wir diese Dokumente direkt in Tabellen scannen und die digitalisierten Daten weiter bearbeiten. Ganz zu schweigen von der Reduzierung des Zeitaufwands und der Fehler. Wir können die Kunden über die Zeit und den Ort informieren, an dem die Informationen verarbeitet werden. Dies stellt daher die Zuverlässigkeit der Daten sicher und vereinfacht unsere Vorgehensweise. Schauen wir uns nun die anderen möglichen Anwendungsfälle an:

Qualitätskontrolle: Qualitätskontrolle ist eine der Kerndienstleistungen der Top-Branchen. Dies erfolgt in der Regel intern und für die Stakeholder. Als Teil davon gibt es viele Feedback-Formulare, die von Verbrauchern gesammelt werden, um Feedback zu dem angebotenen Service zu extrahieren. In der Industrie verwenden sie Tabellen, um tägliche Checklisten und Notizen aufzuschreiben, um zu sehen, wie die Produktionslinien funktionieren. All dies kann mithilfe der Tabellenextraktion problemlos an einem einzigen Ort dokumentiert werden.

Spur von Vermögenswerten: In der Fertigungsindustrie verwenden Menschen fest codierte Tabellen, um die hergestellten Einheiten wie Stahl, Eisen, Kunststoff usw. zu verfolgen. Jeder hergestellte Artikel ist mit einer eindeutigen Nummer gekennzeichnet, wobei sie Tabellen verwenden, um die täglich hergestellten und gelieferten Artikel zu verfolgen. Durch die Automatisierung können Sie viel Zeit und Ressourcen in Bezug auf Fehlplatzierungen oder Dateninkonsistenzen sparen.


Geschäftsanwendungsfälle

Es gibt mehrere Branchen, die auf Excel-Tabellen und Offline-Formularen ausgeführt werden. Zu einem bestimmten Zeitpunkt ist es jedoch schwierig, diese Blätter und Formulare zu durchsuchen. Wenn wir diese Tabellen manuell eingeben, ist dies zeitaufwändig und die Wahrscheinlichkeit, dass Daten falsch eingegeben werden, ist hoch. Daher ist die Tabellenextraktion eine bessere Alternative zur Lösung von Geschäftsanwendungsfällen, da es im Folgenden nur wenige gibt.

Rechnung Automation: Es gibt viele kleine und große Industrien, deren Rechnungen werden weiterhin in tabellarischer Form generiert. Diese bieten keine ordnungsgemäß gesicherten Steuerauszüge. Um solche Hürden zu überwinden, können wir die Tabellenextraktion verwenden, um alle zu konvertieren Rechnungen in ein bearbeitbares Format konvertieren und dadurch auf eine neuere Version aktualisieren.

Formularautomatisierung: Online-Formulare stören diese bewährte Methode, indem sie Unternehmen dabei unterstützen, die benötigten Informationen zu sammeln und sie gleichzeitig mit anderen Softwareplattformen zu verbinden, die in ihren Workflow integriert sind. Neben der Reduzierung der Notwendigkeit der manuellen Dateneingabe (mit automatisierte Dateneingabe) und Follow-up-E-Mails kann die Tabellenextraktion die Kosten für das Drucken, Versenden, Lagern, Organisieren und Vernichten der herkömmlichen Papieralternativen eliminieren.


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!


Deep Learning in Aktion

Deep Learning ist Teil der breiteren Familie maschineller Lernmethoden, die auf künstlichen neuronalen Netzen basieren.

Das neuronale Netzwerk ist ein Framework, das die zugrunde liegenden Beziehungen in den angegebenen Daten durch einen Prozess erkennt, der die Funktionsweise des menschlichen Gehirns nachahmt. Sie haben verschiedene künstliche Schichten, durch die die Daten geleitet werden, wo sie etwas über Funktionen lernen. Es gibt verschiedene Architekturen wie Convolution NNs, Recurrent NNs, Autoencoder und Generative Adversarial NNs, um verschiedene Arten von Daten zu verarbeiten. Diese sind komplex und zeigen dennoch eine hohe Leistung, um Probleme in Echtzeit anzugehen. Lassen Sie uns nun einen Blick auf die Forschung werfen, die im Bereich der Tabellenextraktion mit neuronalen Netzen durchgeführt wurde, und sie kurz betrachten.


Tischnetz

Papier: TableNet: Deep Learning-Modell für die End-to-End-Tabellenerkennung und Tabellendatenextraktion aus gescannten Dokumentbildern

Einführung: TableNet ist eine moderne Deep-Learning-Architektur, die von einem Team aus dem TCS-Forschungsjahr 2019 vorgeschlagen wurde. Die Hauptmotivation bestand darin, Informationen aus gescannten Tabellen über Mobiltelefone oder Kameras zu extrahieren.

Sie schlugen eine Lösung vor, die die genaue Erkennung des Tabellenbereichs innerhalb eines Bildes und die anschließende Erkennung und Extraktion von Informationen aus den Zeilen und Spalten der erkannten Tabelle umfasst.

Datensatz: Der verwendete Datensatz war Murmeltier. Es hat 2000 Seiten im PDF-Format, die mit den entsprechenden Grundwahrheiten gesammelt wurden. Dies schließt auch chinesische Seiten ein. Verknüpfung - http://www.icst.pku.edu.cn/cpdp/sjzy/index.htm

Die Architektur: Die Architektur basiert auf Long et al., einem Encoder-Decoder-Modell zur semantischen Segmentierung. Dasselbe Encoder/Decoder-Netzwerk wird wie die FCN-Architektur für die Tabellenextraktion verwendet. Die Bilder werden mit dem vorverarbeitet und modifiziert Tesserakt OCR.

Das Modell wird in zwei Phasen abgeleitet, indem der Input Deep-Learning-Techniken unterzogen wird. In der ersten Phase haben sie die Gewichte eines vorab trainierten VGG-19-Netzwerks verwendet. Sie haben die vollständig verbundenen Schichten des verwendeten VGG-Netzwerks durch 1 × 1-Faltungsschichten ersetzt. Auf alle Faltungsschichten folgt die ReLU-Aktivierung und eine Dropout-Schicht mit einer Wahrscheinlichkeit von 0.8. Sie nennen die zweite Phase das decodierte Netzwerk, das aus zwei Zweigen besteht. Dies entspricht der Intuition, dass der Spaltenbereich eine Teilmenge des Tabellenbereichs ist. Somit kann das Einzelcodierungsnetzwerk die aktiven Regionen mit besserer Genauigkeit herausfiltern, indem Merkmale sowohl von Tabellen- als auch von Spaltenregionen verwendet werden. Die Ausgabe des ersten Netzwerks wird auf die beiden Zweige verteilt. Im ersten Zweig werden zwei Faltungsoperationen angewendet und die endgültige Merkmalskarte wird hochskaliert, um die ursprünglichen Bildabmessungen zu erfüllen. In dem anderen Zweig zum Erkennen von Spalten gibt es eine zusätzliche Faltungsschicht mit einer ReLU-Aktivierungsfunktion und eine Ausfallschicht mit der gleichen Ausfallwahrscheinlichkeit wie zuvor erwähnt. Die Merkmalskarten werden unter Verwendung von gebrochenen Windungen nach einer (1 × 1) Faltungsschicht hochgetastet. Unten ist ein Bild der Architektur:

Die Architektur von TableNet

Ausgänge: Nachdem die Dokumente mit dem Modell verarbeitet wurden, werden die Masken von Tabellen und Spalten generiert. Diese Masken werden verwendet, um die Tabelle und ihre Spaltenbereiche aus dem Bild herauszufiltern. Mit der Tesseract OCR werden die Informationen nun aus den segmentierten Regionen extrahiert. Unten sehen Sie ein Bild mit den Masken, die generiert und später aus den Tabellen extrahiert werden:

Sie schlugen auch dasselbe Modell vor, das mit ICDAR verfeinert wurde und eine bessere Leistung als das ursprüngliche Modell erbrachte. Der Rückruf, die Präzision und der F1-Score des fein abgestimmten Modells betragen 0.9628, 0.9697 bzw. 0.9662. Das ursprüngliche Modell hat die aufgezeichneten Metriken von 0.9621, 0.9547, 0.9583 in derselben Reihenfolge. Lassen Sie uns nun in eine weitere Architektur eintauchen.


DeepDeSRT

Papier: DeepDeSRT: Deep Learning zur Erkennung und Strukturerkennung von Tabellen in Dokumentbildern

Einführung: DeepDeSRT ist ein neuronales Netzwerk-Framework, mit dem die Tabellen in den Dokumenten oder Bildern erkannt und verstanden werden. Es gibt zwei Lösungen, wie im Titel erwähnt:

  1. Es bietet eine tiefgreifende lernbasierte Lösung für die Tabellenerkennung in Dokumentbildern.
  2. Es wird ein neuartiger Deep-Learning-basierter Ansatz zur Erkennung von Tabellenstrukturen vorgeschlagen, dh das Identifizieren von Zeilen, Spalten und Zellenpositionen in den erkannten Tabellen.

Das vorgeschlagene Modell ist vollständig datenbasiert und erfordert keine Heuristiken oder Metadaten der Dokumente oder Bilder. Ein Hauptvorteil in Bezug auf das Training besteht darin, dass sie keine großen Trainingsdatensätze verwendeten, sondern das Konzept des Transferlernens und der Domänenanpassung sowohl für die Tabellenerkennung als auch für die Tabellenstrukturerkennung verwendeten.

Datensatz: Der verwendete Datensatz ist ein ICDAR 2013-Tabellenwettbewerbsdatensatz mit 67 Dokumenten mit insgesamt 238 Seiten.

Die Architektur:

  • Tabellenerkennung Das vorgeschlagene Modell verwendete Fast RCNN als Grundgerüst für die Erkennung der Tabellen. Die Architektur ist in zwei Teile gegliedert. Im ersten Teil generierten sie Regionsvorschläge basierend auf dem Eingabebild eines sogenannten Regionsvorschlagsnetzwerks (RPN). Im zweiten Teil klassifizierten sie die Regionen mit Fast-RCNN. Um diese Architektur zu unterstützen, verwendeten sie ZFNet und die Gewichte von VGG-16.
  • Strukturerkennung Nachdem eine Tabelle erfolgreich erkannt wurde und ihre Position dem System bekannt ist, besteht die nächste Herausforderung beim Verständnis ihres Inhalts darin, die Zeilen und Spalten zu erkennen und zu lokalisieren, aus denen die physische Struktur der Tabelle besteht. Daher haben sie ein vollständig verbundenes Netzwerk mit den Gewichten von VGG-16 verwendet, das Informationen aus den Zeilen und Spalten extrahiert. Unten sind die Ausgaben von DeepDeSRT aufgeführt:

Ausgänge:

Ausgaben der Tabellenerkennung
Ergebnisse der Strukturerkennung [6]

Die Bewertungsergebnisse zeigen, dass DeepDeSRT die neuesten Methoden zur Tabellenerkennung und Strukturerkennung übertrifft und bis 1 F96.77-Messwerte von 91.44% bzw. 2015% für die Tabellenerkennung und Strukturerkennung erreicht.


Graph Neuronale Netze

Papier: Überdenken der Tabellenerkennung mithilfe grafischer neuronaler Netze

Einführung: In dieser Studie schlugen die Autoren des Deep Learning Laboratory des Nationalen Zentrums für Künstliche Intelligenz (NCAI) Graph Neural Networks vor, um Informationen aus Tabellen zu extrahieren. Sie argumentierten, dass Graphennetzwerke eine natürlichere Wahl für diese Probleme sind, und untersuchten weiter zwei gradientenbasierte grafische neuronale Netzwerke.

Dieses vorgeschlagene Modell kombiniert die Vorteile sowohl von Faltungs-Neuronalen Netzen für die visuelle Merkmalsextraktion als auch von Graphen-Netzen für die Behandlung der Problemstruktur.

Datensatz: Die Autoren schlugen einen neuen großen synthetisch generierten Datensatz mit 0.5 Millionen Tabellen vor, der in vier Kategorien unterteilt ist.

  1. Bilder sind einfache Bilder ohne Zusammenführung und mit Linien
  2. Bilder haben unterschiedliche Randtypen, einschließlich des gelegentlichen Fehlens von Linien
  3. Führt das Zusammenführen von Zellen und Spalten ein
  4. Die Kamera hat Bilder mit der linearen perspektivischen Transformation aufgenommen

Die Architektur: Sie verwendeten ein flaches Faltungsnetzwerk, das die jeweiligen Faltungsmerkmale erzeugt. Wenn die räumlichen Abmessungen der Ausgabemerkmale nicht mit denen des Eingabebilds übereinstimmen, erfassen sie Positionen, die abhängig vom Verhältnis zwischen den Eingabe- und Ausgabedimensionen linear verkleinert werden, und senden sie an ein Interaktionsnetzwerk mit zwei als DGCNN bezeichneten Diagrammnetzwerken und GravNet. Die Parameter des Graphennetzwerks sind dieselben wie beim ursprünglichen CNN. Am Ende haben sie eine Laufzeitpaar-Stichprobe verwendet, um den extrahierten Inhalt zu klassifizieren, der intern den Monte-Carlo-basierten Algorithmus verwendet. Unten sind die Ausgaben:

Ausgänge:

Von Graph Neural Networks erzeugte Ausgaben

Nachfolgend finden Sie die tabellarischen Genauigkeitszahlen, die von den Netzwerken für vier Kategorien des Netzwerks generiert werden Datensatz Abschnitt:


CGANs und genetische Algorithmen

Papier: Extrahieren von Tabellen aus Dokumenten unter Verwendung von bedingten generativen kontradiktorischen Netzwerken und genetischen Algorithmen

Einführung: In dieser Studie verwendeten die Autoren einen Top-Down-Ansatz anstelle eines Bottom-Up-Ansatzes (Integration von Linien in Zellen, Zeilen oder Spalten).

Bei dieser Methode haben sie unter Verwendung eines generativen gegnerischen Netzwerks das Tabellenbild in eine standardisierte "Skelett" -Tabellenform abgebildet. Diese Skeletttabelle gibt die ungefähren Zeilen- und Spaltenränder ohne den Tabelleninhalt an. Als nächstes passen sie die Renderings der latenten Tabellenstrukturkandidaten unter Verwendung eines durch einen genetischen Algorithmus optimierten Abstandsmaßes an die Skelettstruktur an.

Datensatz: Die Autoren verwendeten ihren eigenen Datensatz mit 4000 Tabellen.

Die Architektur: Das vorgeschlagene Modell besteht aus zwei Teilen. Im ersten Teil werden die Eingabebilder unter Verwendung eines bedingten generativen kontradiktorischen neuronalen Netzwerks in Skeletttabellen abstrahiert. Ein GAN hat wieder zwei Netzwerke, den Generator, der Zufallsstichproben erzeugt, und den Diskriminator, der anzeigt, ob die erzeugten Bilder gefälscht oder original sind. Der Generator G ist ein Codierer-Decodierer-Netzwerk, in dem ein Eingabebild durch eine Reihe von progressiven Downsampling-Schichten bis zu einer Engpassschicht geleitet wird, in der der Prozess umgekehrt wird. Um ausreichende Informationen an die Decodierungsschichten weiterzugeben, wird eine U-Net-Architektur mit Sprungverbindungen verwendet und eine Sprungverbindung zwischen den Schichten i und n - i über Verkettung hinzugefügt, wobei n die Gesamtzahl der Schichten und i die Schichtnummer ist im Encoder. Für den Diskriminator D wird eine PatchGAN-Architektur verwendet. Dadurch wird die Ausgabebildstruktur im Patch-Maßstab benachteiligt. Diese erzeugen die Ausgabe als Skeletttabelle.

Im zweiten Teil optimieren sie die Anpassung der latenten Datenstrukturen von Kandidaten an das erzeugte Skelettbild unter Verwendung eines Maßes für den Abstand zwischen jedem Kandidaten und dem Skelett. Auf diese Weise wird der Text in den Bildern extrahiert. Unten sehen Sie ein Bild der Architektur:

Allgemeines Schema des Ansatzes

Output: Die geschätzten Tabellenstrukturen werden durch Vergleichen von - bewertet Zeilen- und Spaltennummer, Position der oberen linken Ecke, Zeilenhöhen und Spaltenbreiten

Der genetische Algorithmus ergab eine zeilenweise Genauigkeit von 95.5% und eine spaltenweise Genauigkeit von 96.7%, während Informationen aus den Tabellen extrahiert wurden.


Dokumente digitalisieren müssen, Einkünfte or Rechnungen aber zu faul zum coden? Geh 'rüber zu Nanonetze und bauen Sie OCR-Modelle kostenlos!


[Code] Traditionelle Ansätze

In diesem Abschnitt erfahren Sie, wie Sie mit Deep Learning und OpenCV Informationen aus Tabellen extrahieren. Sie können sich diese Erklärung als Einführung vorstellen. Das Erstellen von Modellen auf dem neuesten Stand der Technik erfordert jedoch viel Erfahrung und Übung. Dies wird Ihnen helfen, die Grundlagen zu verstehen, wie wir Computer mit verschiedenen möglichen Ansätzen und Algorithmen trainieren können.

Um das Problem genauer zu verstehen, definieren wir einige grundlegende Begriffe, die im gesamten Artikel verwendet werden:

  • Text: enthält eine Zeichenfolge und fünf Attribute (oben, links, Breite, Höhe, Schriftart)
  • Line: enthält Textobjekte, von denen angenommen wird, dass sie sich in der Originaldatei in derselben Zeile befinden
  • Einzelne Zeile: Linienobjekt mit nur einem Textobjekt.
  • Mehrzeilig: Linienobjekt mit mehr als einem Textobjekt.
  • Mehrzeilig Blockieren: eine Reihe von fortlaufenden mehrzeiligen Objekten.
  • Reihe: Horizontale Blöcke in der Tabelle
  • Kolonne: Vertikale Blöcke in der Tabelle
  • Zelle: der Schnittpunkt einer Zeile und einer Spalte
  • Zellpolsterung: die interne Polsterung oder der Raum innerhalb der Zelle.

Tabellenerkennung mit OpenCV

Wir werden traditionelle Computer-Vision-Techniken verwenden, um Informationen aus den gescannten Tabellen zu extrahieren. Hier ist unsere Pipeline; Wir erfassen die Daten (die Tabellen, aus denen wir die Informationen extrahieren müssen) zunächst mit normalen Kameras und versuchen dann mithilfe von Computer Vision, die Ränder, Kanten und Zellen zu finden. Wir werden verschiedene Filter und Konturen verwenden und die Kernmerkmale der Tabellen hervorheben.

Wir brauchen ein Bild von einem Tisch. Wir können dies auf einem Telefon erfassen oder ein vorhandenes Bild verwenden. Unten ist das Code-Snippet,

file = r’table.png’
table_image_contour = cv2.imread(file, 0)
table_image = cv2.imread(file)

Hier haben wir das gleiche Bild geladen, zwei Variablen, da wir das verwenden werden table_image_contour beim Zeichnen unserer erkannten Konturen auf das geladene Bild. Unten sehen Sie das Bild der Tabelle, die wir in unserem Programm verwenden:

Bild der Tabelle

Wir werden eine Technik anwenden, die genannt wird Inverse Bildschwelle Dies verbessert die im gegebenen Bild vorhandenen Daten.

ret, thresh_value = cv2.threshold( table_image_contour, 180, 255, cv2.THRESH_BINARY_INV)

Ein weiterer wichtiger Vorverarbeitungsschritt ist Bilddilatation. Die Dilatation ist eine einfache mathematische Operation, die auf Binärbilder (Schwarzweiß) angewendet wird und die Grenzen von Regionen mit Vordergrundpixeln allmählich vergrößert (dh normalerweise weiße Pixel).

kernel = np.ones((5,5),np.uint8)
dilated_value = cv2.dilate(thresh_value,kernel,iterations = 1)

In OpenCV verwenden wir die Methode: Konturen finden um die Konturen im vorliegenden Bild zu erhalten. Diese Methode verwendet drei Argumente: Das erste ist das erweiterte Bild (das Bild, das zum Generieren des erweiterten Bilds verwendet wird, ist table_image_contour - die findContours-Methode unterstützt nur Binärbilder), das zweite ist das cv2.RETR_TREE Dies sagt uns, dass wir den Konturabrufmodus verwenden sollen. Der dritte ist der  cv2.CHAIN_APPROX_SIMPLE Dies ist der Konturnäherungsmodus. Das Konturen finden entpackt zwei Werte, daher fügen wir eine weitere Variable mit dem Namen hinzu Hierarchie. Wenn die Bilder verschachtelt sind, strahlen Konturen gegenseitige Abhängigkeit aus. Um solche Beziehungen darzustellen, wird eine Hierarchie verwendet.

contours, hierarchy = cv2.findContours( dilated_value, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

Die Konturen markieren, wo genau die Daten im Bild vorhanden sind. Jetzt durchlaufen wir die Konturliste, die wir im vorherigen Schritt berechnet haben, und berechnen die Koordinaten der rechteckigen Kästchen, wie sie im Originalbild beobachtet wurden, mit der Methode.  cv2.boundingRect. In der letzten Iteration haben wir diese Felder mit der Methode auf das Originalbild table_image gesetzt. cv2.rectangle ().

for cnt in contours: x, y, w, h = cv2.boundingRect(cnt) # bounding the images if y < 50: table_image = cv2.rectangle(table_image, (x, y), (x + w, y + h), (0, 0, 255), 1) 

Dies ist unser letzter Schritt. Hier verwenden wir die Methode NamedWindow um unsere Tabelle mit dem extrahierten Inhalt und den darin eingebetteten Konturen zu rendern. Unten ist das Code-Snippet:

plt.imshow(table_image)
plt.show()
cv2.namedWindow('detecttable', cv2.WINDOW_NORMAL)

Ausgänge

Ändern Sie den Wert von y im obigen Code-Snippet auf 300. Dies ist Ihre Ausgabe:

Sobald Sie die Tabellen extrahiert haben, können Sie jede Konturbeschneidung über die Tesseract OCR-Engine ausführen, deren Lernprogramm zu finden ist hier. Sobald wir Kästchen für jeden Text haben, können wir sie basierend auf ihren x- und y-Koordinaten gruppieren, um abzuleiten, zu welcher entsprechenden Zeile und Spalte sie gehören.

Darüber hinaus besteht die Möglichkeit, PDFMiner zu verwenden, um Ihre PDF-Dokumente in HTML-Dateien umzuwandeln, die wir mit regulären Ausdrücken analysieren können, um schließlich unsere Tabellen zu erhalten. Hier erfahren Sie, wie Sie es tun können.


PDFMiner- und Regex-Analyse

Um Informationen aus kleineren Dokumenten zu extrahieren, ist es zeitaufwändig, Deep-Learning-Modelle zu konfigurieren oder Computer-Vision-Algorithmen zu schreiben. Stattdessen können wir reguläre Ausdrücke in Python verwenden Text extrahieren aus den PDF-Dokumenten. Denken Sie auch daran, dass diese Technik nicht für Bilder funktioniert. Wir können dies nur verwenden, um Informationen aus HTML-Dateien oder PDF-Dokumenten zu extrahieren. Dies liegt daran, dass Sie bei Verwendung eines regulären Ausdrucks den Inhalt mit der Quelle abgleichen und Informationen extrahieren müssen. Bei Bildern können Sie den Text nicht abgleichen, und die regulären Ausdrücke schlagen fehl. Lassen Sie uns nun mit einem einfachen PDF-Dokument arbeiten und Informationen aus den darin enthaltenen Tabellen extrahieren. Unten ist das Bild:

Im ersten Schritt laden wir das PDF in unser Programm. Sobald dies erledigt ist, konvertieren wir das PDF in HTML, so dass wir direkt reguläre Ausdrücke verwenden und dadurch Inhalte aus den Tabellen extrahieren können. Dafür verwenden wir das Modul pdfminer. Dies hilft, Inhalte aus PDF zu lesen und in eine HTML-Datei zu konvertieren.

Unten ist das Code-Snippet:

from pdfminer.pdfinterp import PDFResourceManager from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.converter import HTMLConverter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from cStringIO import StringIO
import re def convert_pdf_to_html(path): rsrcmgr = PDFResourceManager() retstr = StringIO() codec = 'utf-8' laparams = LAParams() device = HTMLConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) fp = file(path, 'rb') interpreter = PDFPageInterpreter(rsrcmgr, device) password = "" maxpages = 0 #is for all caching = True pagenos=set() for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages,password=password,caching=caching, check_extractable=True): interpreter.process_page(page) fp.close() device.close() str = retstr.getvalue() retstr.close() return str

Code-Credits: Zevross

Wir haben viele Module importiert, einschließlich regulärer Ausdrücke und PDF-Bibliotheken. In der Methode konvertieren_pdf_to_html, Wir senden den Pfad der PDF-Datei, die in eine HTML-Datei konvertiert werden muss. Die Ausgabe der Methode ist eine HTML-Zeichenfolge wie unten gezeigt:

'<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">Changing Echoesn<br>7632 Pool Station Roadn<br>Angels Camp, CA 95222n<br>(209) 785-3667n<br>Intake: (800) 633-7066n<br>SA </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> TX DT BU </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> RS RL OP PH </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> CO CJ n<br></span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> SF PI </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> AH SPn<br></span></div>' 

Regulärer Ausdruck ist eine der schwierigsten und coolsten Programmiertechniken, die für den Mustervergleich verwendet werden. Diese werden häufig in verschiedenen Anwendungen verwendet, beispielsweise für Code-Formatierungs-, Web-Scraping- und Validierungszwecke. Bevor wir mit dem Extrahieren von Inhalten aus unseren HTML-Tabellen beginnen, lernen wir kurz einige Dinge über reguläre Ausdrücke.

Diese Bibliothek bietet verschiedene integrierte Methoden zum Abgleichen und Suchen nach Mustern. Nachfolgend einige:

import re # Match the pattern in the string
re.match(pattern, string) # Search for a pattern in a string
re.search(pattern, string) # Finds all the pattern in a string
re.findall(pattern, string) # Splits string based on the occurrence of pattern
re.split(pattern, string, [maxsplit=0] # Search for the pattern and replace it with the given string
re.sub(pattern, replace, string)

Zu den Zeichen / Ausdrücken, die Sie normalerweise in regulären Ausdrücken sehen, gehören:

  • [AZ] – jeder Großbuchstabe
  • d - Ziffer
  • w – Wortzeichen (Buchstaben, Ziffern und Unterstriche)
  • s – Leerzeichen (Leerzeichen, Tabulatoren und Leerzeichen)

Um nun ein bestimmtes Muster in HTML herauszufinden, verwenden wir reguläre Ausdrücke und schreiben dann Muster entsprechend. Wir teilen die Daten zunächst so auf, dass die Adressblöcke entsprechend dem Programmnamen (ANGELS CAMP, APPLE VALLEY usw.) in separate Blöcke aufgeteilt werden:

pattern = '(?<=<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">)(.*?)(?=<br></span></div>)' for programinfo in re.finditer(pattern, biginputstring, re.DOTALL): do looping stuff…

Später finden wir den Programmnamen, die Stadt, das Bundesland und die Postleitzahl, die immer dem gleichen Muster folgen (Text, Komma, zweistellige Großbuchstaben, 5 Zahlen (oder 5 Zahlen mit Bindestrich, vier Zahlen) - diese sind in der PDF-Datei enthalten wir betrachteten als Eingabe). Überprüfen Sie das folgende Codefragment:

# To identify the program name
programname = re.search('^(?!<br>).*(?=\n)', programinfo.group(0))
# since some programs have odd characters in the name we need to escape
programname = re.escape(programname) citystatezip =re.search('(?<=>)([a-zA-Zs]+, [a-zA-Zs]{2} d{5,10})(?=\n)', programinfo.group(0))
mainphone =re.search('(?<=<br>)(d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)', programinfo.group(0))
altphones = re.findall('(?<=<br>)[a-zA-Zs]+: (d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)(?=\n)', programinfo.group(0)) 

Dies ist ein einfaches Beispiel, das erklärt, wie wir Informationen aus PDF-Dateien mit einem regulären Ausdruck extrahieren. Nachdem wir alle erforderlichen Informationen extrahiert haben, laden wir diese Daten in eine CSV-Datei.

def createDirectory(instring, outpath, split_program_pattern): i = 1 with open(outpath, 'wb') as csvfile: filewriter = csv.writer(csvfile, delimiter=',' , quotechar='"', quoting=csv.QUOTE_MINIMAL) # write the header row filewriter.writerow(['programname', 'address', 'addressxtra1', 'addressxtra2', 'city', 'state', 'zip', 'phone', 'altphone', 'codes']) # cycle through the programs for programinfo in re.finditer(split_program_pattern, instring, re.DOTALL): print i i=i+1 # pull out the pieces programname = getresult(re.search('^(?!<br>).*(?=\n)', programinfo.group(0))) programname = re.escape(programname) # some facilities have odd characters in the name

Dies ist also ein einfaches Beispiel, das erklärt, wie Sie Ihren extrahierten HTML-Code in eine CSV-Datei verschieben können. Zuerst erstellen wir eine CSV-Datei, finden alle unsere Attribute und verschieben sie einzeln in ihre jeweiligen Spalten. Unten ist ein Screenshot:

Screenshot der Elemente, die mit regulären Ausdrücken aus Tabellen extrahiert wurden

Manchmal scheinen die oben diskutierten Techniken kompliziert zu sein und stellen die Programmierer vor Herausforderungen, wenn alle Tabellen verschachtelt und komplex sind. Hier spart die Auswahl eines Lebenslaufs oder eines Deep-Learning-Modells viel Zeit. Mal sehen, welche Nachteile und Herausforderungen die Verwendung dieser traditionellen Methoden behindern.


Herausforderungen mit traditionellen Methoden

In diesem Abschnitt erfahren Sie ausführlich, wo die Tabellenextraktionsprozesse möglicherweise fehlschlagen, und erfahren, wie Sie diese Hindernisse mithilfe moderner Methoden aus Deep Learning überwinden können. Dieser Prozess ist jedoch kein Kinderspiel. Der Grund dafür ist, dass Tabellen normalerweise nicht durchgehend konstant bleiben. Sie haben unterschiedliche Strukturen zur Darstellung der Daten, und die Daten in Tabellen können mehrsprachig mit verschiedenen Formatierungsstilen (Schriftstil, Farbe, Schriftgröße und Höhe) sein. Um ein robustes Modell zu erstellen, sollte man sich all dieser Herausforderungen bewusst sein. Normalerweise umfasst dieser Prozess drei Schritte: Tabellenerkennung, Extraktion und Konvertierung. Lassen Sie uns die Probleme in allen Phasen einzeln identifizieren:


Tabellenerkennung

In dieser Phase identifizieren wir, wo genau die Tabellen in der gegebenen Eingabe vorhanden sind. Die Eingabe kann ein beliebiges Format haben, z. B. Bilder, PDF / Word-Dokumente und manchmal Videos. Wir verwenden verschiedene Techniken und Algorithmen, um die Tabellen entweder durch Linien oder durch Koordinaten zu erkennen. In einigen Fällen können Tabellen ohne Rahmen auftreten, in denen wir uns für verschiedene Methoden entscheiden müssen. Daneben gibt es noch einige andere Herausforderungen:

  • Bildtransformation: Die Bildtransformation ist ein Hauptschritt beim Erkennen von Etiketten. Dies umfasst die Verbesserung der in der Tabelle enthaltenen Daten und Rahmen. Wir müssen geeignete Vorverarbeitungsalgorithmen basierend auf den in der Tabelle dargestellten Daten auswählen. Wenn wir beispielsweise mit Bildern arbeiten, müssen wir Schwellenwert- und Kantendetektoren anwenden. Dieser Transformationsschritt hilft uns, den Inhalt genauer zu finden. In einigen Fällen können die Konturen schief gehen und die Algorithmen können das Bild nicht verbessern. Daher ist die Auswahl der richtigen Bildtransformationsschritte und der Vorverarbeitung von entscheidender Bedeutung.
  • Bildqualität: Wenn wir Tabellen zur Informationsextraktion scannen, müssen wir sicherstellen, dass diese Dokumente in helleren Umgebungen gescannt werden, um eine gute Bildqualität zu gewährleisten. Bei schlechten Lichtverhältnissen können CV- und DL-Algorithmen möglicherweise keine Tabellen in den angegebenen Eingaben erkennen. Wenn wir Deep Learning verwenden, müssen wir sicherstellen, dass der Datensatz konsistent ist und einen guten Satz von Standardbildern enthält. Wenn wir diese Modelle auf Tabellen verwenden, die in alten zerknitterten Papieren vorhanden sind, müssen wir zuerst das Rauschen in diesen Bildern vorverarbeiten und beseitigen.
  • Vielzahl von Strukturlayouts und Vorlagen: Alle Tabellen sind nicht eindeutig. Eine Zelle kann sich über mehrere Zellen erstrecken, entweder vertikal oder horizontal, und Kombinationen von überspannenden Zellen können eine große Anzahl struktureller Variationen erzeugen. Einige betonen auch Textmerkmale, und Tabellenzeilen können sich auf das Verständnis der Tabellenstruktur auswirken. Beispielsweise können horizontale Linien oder fetter Text mehrere Überschriften der Tabelle hervorheben. Die Struktur der Tabelle definiert visuell die Beziehungen zwischen Zellen. Visuelle Beziehungen in Tabellen machen es schwierig, die zugehörigen Zellen rechnerisch zu finden und Informationen daraus zu extrahieren. Daher ist es wichtig, Algorithmen zu erstellen, die robust im Umgang mit unterschiedlichen Tabellenstrukturen sind.
  • Zellauffüllung, Ränder, Grenzen: Dies sind die Grundvoraussetzungen für jeden Tisch - Auffüllungen, Ränder und Ränder sind nicht immer gleich. Einige Tabellen sind in Zellen stark aufgefüllt, andere nicht. Durch die Verwendung von Bildern guter Qualität und Vorverarbeitungsschritten läuft der Tabellenextraktionsprozess reibungslos ab.

Tabellenextraktion

Dies ist die Phase, in der die Informationen extrahiert werden, nachdem die Tabellen identifiziert wurden. Es gibt viele Faktoren, wie der Inhalt strukturiert ist und welcher Inhalt in der Tabelle vorhanden ist. Daher ist es wichtig, alle Herausforderungen zu verstehen, bevor ein Algorithmus erstellt wird.

  • Dichter Inhalt: Der Inhalt der Zellen kann entweder numerisch oder textuell sein. Der Textinhalt ist jedoch normalerweise dicht und enthält mehrdeutige kurze Textblöcke unter Verwendung von Akronymen und Abkürzungen. Um Tabellen zu verstehen, muss der Text eindeutig sein und Abkürzungen und Akronyme müssen erweitert werden.
  • Verschiedene Schriftarten und Formate: Schriftarten haben normalerweise unterschiedliche Stile, Farben und Höhen. Wir müssen sicherstellen, dass diese generisch und leicht zu identifizieren sind. Nur wenige Schriftfamilien, insbesondere solche, die unter Kursivschrift oder Handschrift fallen, sind etwas schwer zu extrahieren. Daher hilft die Verwendung einer guten Schriftart und einer korrekten Formatierung dem Algorithmus, die Informationen genauer zu identifizieren.
  • Mehrseitige PDFs und Seitenumbrüche: Die Textzeile in Tabellen reagiert empfindlich auf einen vordefinierten Schwellenwert. Auch wenn sich Zellen über mehrere Seiten erstrecken, wird es schwierig, die Tabellen zu identifizieren. Auf einer Seite mit mehreren Tabellen ist es schwierig, verschiedene Tabellen voneinander zu unterscheiden. Es ist schwierig, mit spärlichen und unregelmäßigen Tischen zu arbeiten. Daher sollten grafische Linien und das Inhaltslayout zusammen als wichtige Quellen für das Erkennen von Tabellenbereichen verwendet werden.

Tabellenkonvertierung

Die letzte Phase umfasst das Konvertieren der extrahierten Informationen aus Tabellen in das Kompilieren als bearbeitbares Dokument, entweder in Excel oder unter Verwendung einer anderen Software. Lernen wir einige Herausforderungen kennen.

  • Layouts festlegen: Wenn verschiedene Formate von Tabellen aus gescannten Dokumenten extrahiert werden, benötigen wir ein geeignetes Tabellenlayout, um den Inhalt einzuschieben. Manchmal kann der Algorithmus keine Informationen aus den Zellen extrahieren. Daher ist es auch wichtig, ein korrektes Layout zu entwerfen.
  • Vielzahl von Wertpräsentationsmustern: Werte in Zellen können mithilfe verschiedener syntaktischer Darstellungsmuster dargestellt werden. Betrachten Sie den Text in der Tabelle als 6 ± 2. Der Algorithmus kann diese bestimmten Informationen möglicherweise nicht konvertieren. Die Extraktion numerischer Werte erfordert daher die Kenntnis möglicher Präsentationsmuster.
  • Darstellung zur Visualisierung: Die meisten Darstellungsformate für Tabellen, z. B. Auszeichnungssprachen, in denen Tabellen beschrieben werden können, dienen der Visualisierung. Daher ist es schwierig, Tabellen automatisch zu verarbeiten.

Dies sind die Herausforderungen, denen wir uns beim Extrahieren von Tabellen mit traditionellen Techniken stellen müssen. Lassen Sie uns nun sehen, wie Sie diese mithilfe von Deep Learning überwinden können. Es wird in verschiedenen Bereichen umfassend erforscht.



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


Zusammenfassung

In diesem Artikel haben wir uns ausführlich mit der Informationsextraktion aus Tabellen befasst. Wir haben gesehen, wie moderne Technologien wie Deep Learning und Computer Vision alltägliche Aufgaben automatisieren können, indem sie robuste Algorithmen zur Ausgabe genauer Ergebnisse entwickeln. In den ersten Abschnitten haben wir die Rolle der Tabellenextraktion bei der Erleichterung der Aufgaben von Einzelpersonen, Branchen und Geschäftsbereichen kennengelernt und auch Anwendungsfälle besprochen, in denen das Extrahieren von Tabellen aus PDFs/HTML, Formularautomatisierung, in rechnung stellen Automatisierung usw. Wir haben einen Algorithmus mit Computer Vision codiert, um die Position von Informationen in den Tabellen mithilfe von Schwellenwert-, Dilatations- und Konturerkennungstechniken zu finden. Wir haben die Herausforderungen besprochen, denen wir bei der Tabellenerkennung, -extraktion und -konvertierung bei der Verwendung herkömmlicher Techniken begegnen könnten, und erklärt, wie Deep Learning uns bei der Überwindung dieser Probleme helfen kann. Schließlich haben wir einige neuronale Netzwerkarchitekturen überprüft und ihre Möglichkeiten verstanden, eine Tabellenextraktion basierend auf den gegebenen Trainingsdaten zu erreichen.



Update:
‌ Weiteres Lesematerial zu verschiedenen Ansätzen bei der Tabellenerkennung und Informationsextraktion mithilfe von Deep Learning hinzugefügt.

Zeitstempel:

Mehr von KI & Maschinelles Lernen