Estrai tabelle da immagini in Python
L'estrazione di tabelle dalle immagini può essere un'attività noiosa e dispendiosa in termini di tempo, soprattutto se si dispone di un numero elevato di immagini da elaborare. Tuttavia, con gli strumenti e le tecniche giuste, puoi automatizzare questo processo ed estrarre le tabelle dalle immagini in modo rapido e semplice.
In questo articolo, esploreremo come estrarre tabelle dalle immagini usando Python. Tratteremo una libreria ( img2table ) che può essere utilizzata per identificare ed estrarre tabelle dalle immagini, insieme a codice di esempio e spiegazioni. Che tu stia lavorando con documenti scansionati, foto o altri tipi di immagini, questo articolo ti fornirà gli strumenti e le conoscenze necessarie per estrarre le tabelle in modo efficiente e preciso.
Cos'è img2table?
Img2Table è una libreria Python semplice e intuitiva per l'estrazione e l'identificazione di tabelle basata sull'elaborazione di immagini OpenCV e supporta file PDF oltre alla maggior parte dei formati di file immagine più diffusi.
Grazie al suo design, offre un'alternativa utile e meno pesante alle soluzioni basate su reti neurali, soprattutto per l'utilizzo della CPU.
Supporta i seguenti formati di file:
- File JPEG — .jpeg, .jpg, *.jpe
- Grafica di rete portatile — *.png
- File JPEG 2000 — *.jp2
- Bitmap di Windows: .bmp, .dib
- WebP — *.webp
- Formato immagine portatile: .pbm, .pgm, .ppm .pxm, *.pnm
- File PFM — *.pfm
- File immagine OpenEXR — *.exr
- Riquadri di delimitazione a livello di cella della tabella e identificazione della tabella per immagini e file PDF.
- Gestire strutture di tabelle complesse, come celle unite.
- Estrazione dei titoli delle tabelle.
- Estrazione del contenuto della tabella supportando strumenti e servizi OCR.
- Vengono restituiti una rappresentazione Pandas DataFrame e un oggetto semplice che rappresenta le tabelle estratte.
- Conserva la struttura originale delle tabelle estratte esportandole in un file Excel.
Implementazione
Installazione
Proprio come ogni altro pacchetto Python, img2table può essere installato tramite pip.
pip install img2table
from img2table.document import Image
image = Image(src,dpi=200, detect_rotation=False)
Facciamo un esempio.
from img2table.document import Image
# Instantiation of the image
img = Image(src="image.jpg")
# Table identification
imgage_tables = img.extract_tables()
# Result of table identification
imgage_tables
#output
[ExtractedTable(title=None, bbox=(10, 8, 745, 314),shape=(6, 3)),
ExtractedTable(title=None, bbox=(936, 9, 1129, 111),shape=(2, 2))]
from img2table.document import PDF
pdf = PDF(src, dpi=200, pages=[0, 2])
Lavorare con l'OCR
Per analizzare il contenuto delle tabelle, img2tableoffre un'interfaccia per vari strumenti e servizi OCR.
from img2table.ocr import TesseractOCR
ocr = TesseractOCR(n_threads=1, lang="eng", tessdata_dir="...")
Nota: l'utilizzo di Tesseract-OCR richiede l'installazione preliminare.
Diamo un'occhiata a un esempio.
from img2table.document import PDF
from img2table.ocr import TesseractOCR
# Instantiation of the pdf
pdf = PDF(src="tablesfile.pdf")
# Instantiation of the OCR, Tesseract, which requires prior installation
ocr = TesseractOCR(lang="eng")
# Table identification and extraction
pdf_tables = pdf.extract_tables(ocr=ocr)
# We can also create an excel file with the tables
pdf.to_xlsx('tables.xlsx', ocr=ocr)
Il extract_tablesmetodo di un documento consente di estrarre più tabelle contemporaneamente da una pagina PDF o da un'immagine.
from img2table.ocr import TesseractOCR
from img2table.document import Image
# Instantiation of OCR
ocr = TesseractOCR(n_threads=1, lang="eng")
# Instantiation of document, either an image or a PDF
doc = Image(src, dpi=200)
# Table extraction
extracted_tables = doc.extract_tables(ocr=ocr,
implicit_rows=True,
borderless_tables=False,
min_confidence=50)
Conclusione
La libreria OpenCV-python e OpenCV sono entrambe utilizzate per tutta l'elaborazione delle immagini. La trasformazione di Hough , che riconosce le linee in un'immagine, funge da fondamento dell'algoritmo. Ci permette di riconoscere le linee orizzontali e verticali dell'immagine. La libreria in realtà non ha molto di più perché l'intenzione era di mantenerla il più semplice possibile per evitare potenziali complicazioni che potrebbero derivare dall'utilizzo di altri approcci.
Visualizza la documentazione del progetto su GitHub .
Connettiamoci su Twitter e su LinkedIn . Puoi anche iscriverti al mio canale YouTube .
Buona codifica!

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































