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
Im Vergleich zu Deep-Learning-Lösungen erfordert dieses leichte Paket keine Schulung und minimale Parametrisierung. Es bietet die folgenden Funktionen:
Sie können diese Bibliothek mit pip installieren und nach Abschluss der Installation verwenden.
pip install img2table
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))]
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)
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.
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
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)
Danach müssen wir etwas verarbeiten auf den Linien, um sie aus Zellen heraus zu identifizieren und Tabellen aus Zellen weiter zu identifizieren
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!