Extrahieren Sie die Tabelle mit Python aus dem Bild

WBOY
Freigeben: 2023-11-17 22:15:07
nach vorne
1187 Leute haben es durchsucht

Vor etwa einem Jahr wurde mir die Aufgabe übertragen, Daten aus Dateien zu extrahieren und zu strukturieren, hauptsächlich in Tabellen enthaltene Daten. Ich hatte keine Vorkenntnisse in Computer Vision und hatte Schwierigkeiten, eine geeignete „Plug-and-Play“-Lösung zu finden. Die damals verfügbaren Optionen waren entweder Lösungen auf Basis der neuesten neuronalen Netze (NN), die groß und umständlich waren, oder einfachere Lösungen auf Basis von OpenCV, die nicht konsistent genug waren.

Inspiriert von vorhandenen OpenCV-Skripten habe ich eine einfache und konsistente Methode zum Extrahieren von Tabellen entwickelt und daraus eine Open-Source-Python-Bibliothek gemacht: img2table

Was neu geschrieben werden muss, ist: Link: https://github.com/ xavctn/img2table

Extrahieren Sie die Tabelle mit Python aus dem Bild

Was macht meine Bibliothek?

Im Vergleich zu Deep-Learning-Lösungen erfordert dieses leichte Paket keine Schulung und minimale Parametrisierung. Es bietet die folgenden Funktionen:

  • Identifiziert Tabellen in Bildern und PDF-Dateien, einschließlich Begrenzungsrahmen auf Tabellenzellenebene.
  • Extrahieren Sie Tabelleninhalte durch unterstützende OCR-Dienste/-Tools (Tesseract, PaddleOCR, AWS Textract, Google Vision und Azure OCR werden derzeit unterstützt).
  • Verarbeiten Sie komplexe Tabellenstrukturen wie zusammengeführte Zellen.
  • Implementieren Sie Methoden zur Korrektur der Neigung und Drehung von Bildern.
  • Die extrahierte Tabelle wird als einfaches Objekt zurückgegeben, einschließlich einer Pandas DataFrame-Darstellung.
  • Option zum Exportieren der extrahierten Tabelle in eine Excel-Datei unter Beibehaltung der ursprünglichen Struktur.

Wie benutzt man es?

Sie können diese Bibliothek mit pip installieren und nach Abschluss der Installation verwenden.

pip install img2table
Nach dem Login kopieren

Um die Tabelle im Dokument zu identifizieren, müssen Sie nur eine Funktion aufrufen:

从img2table.document导入Image类# 图像实例化
img = Image(src="myimage.jpg")# 表格识别
img_tables = img.extract_tables()# 表格识别结果
img_tables[ExtractedTable(title=None, bbox=(10, 8, 745, 314),shape=(6, 3)), ExtractedTable(title=None, bbox=(936, 9, 1129, 111),shape=(2, 2))]
Nach dem Login kopieren

Extrahieren Sie die Tabelle mit Python aus dem Bild

Der Inhalt, der neu geschrieben werden muss, ist: Das im obigen Beispiel verwendete Bild

Wenn wir den Inhalt der Tabelle extrahieren möchten, müssen wir ein OCR-Tool verwenden. Dies kann erreicht werden, indem Sie die folgenden Schritte ausführen:

from img2table.document import PDFfrom img2table.ocr import TesseractOCR# Instantiation of the pdfpdf = PDF(src="mypdf.pdf")# Instantiation of the OCR, Tesseract, which requires prior installationocr = TesseractOCR(lang="eng")# Table identification and extractionpdf_tables = pdf.extract_tables(ocr=ocr)# We can also create an excel file with the tablespdf.to_xlsx('tables.xlsx',ocr=ocr)
Nach dem Login kopieren

Extrahieren Sie die Tabelle mit Python aus dem Bild

Die Beispieltabelle ist ein aus einer PDF-Datei extrahiertes Beispiel

Abschließend können Sie in einem einfachen Fall „borderless_tables“ ausführen, indem Sie das ` festlegen borderless_tables` Parameter „Extrahierung des Formulars. Dies ermöglicht die Erkennung von Tabellen, bei denen die Zellen nicht vollständig von Rändern umgeben sein müssen.

Extrahieren Sie die Tabelle mit Python aus dem Bild

Die ursprüngliche Bedeutung muss nicht geändert werden. Was neu geschrieben werden muss, ist: Beispiel für eine „randlose“ Tabellenextraktion

Das ist alles! Tatsächlich ist das Repository nicht kompliziert, da unser Ziel darin besteht, es so weit wie möglich zu vereinfachen und die Einführung anderer Lösungen zu vermeiden, die Komplexität mit sich bringen könnten

Bitte besuchen Sie die GitHub-Seite des Projekts für detailliertere Dokumentation und Beispiele: https:// / github.com/xavctn/img2table

Zugrunde liegende Implementierung

Die gesamte Bildverarbeitung erfolgt mithilfe von OpenCV- und opencv-python-Bibliotheken. Dies ist jedoch immer noch ziemlich einfach.

Der Kern des Algorithmus ist die Hough-Transformation, die gerade Linien im Bild identifizieren kann, sodass wir horizontale und vertikale Linien im Bild erkennen können

需要重写的内容是:cv2.HoughLinesP(img, rho, theta, threshold, None, minLinLength, maxLineGap)
Nach dem Login kopieren

Danach müssen wir etwas verarbeiten auf den Linien, um sie aus Zellen heraus zu identifizieren und Tabellen aus Zellen weiter zu identifizieren

Extrahieren Sie die Tabelle mit Python aus dem Bild

Vereinfachte Implementierung der algorithmischen Darstellung

Die meisten Berechnungen werden für eine gute Leistung und Geschwindigkeit mit Polaren durchgeführt.

Das obige ist der detaillierte Inhalt vonExtrahieren Sie die Tabelle mit Python aus dem Bild. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:51cto.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage