Extraire des tableaux à partir d'images en Python

Feb 28 2023
L'extraction de tableaux à partir d'images peut être une tâche fastidieuse et chronophage, surtout si vous avez un grand nombre d'images à traiter. Cependant, avec les bons outils et techniques, vous pouvez automatiser ce processus et extraire rapidement et facilement des tableaux à partir d'images.
Extraire des tables à partir d'images dans Python Image

L'extraction de tableaux à partir d'images peut être une tâche fastidieuse et chronophage, surtout si vous avez un grand nombre d'images à traiter. Cependant, avec les bons outils et techniques, vous pouvez automatiser ce processus et extraire rapidement et facilement des tableaux à partir d'images.

Dans cet article, nous allons explorer comment extraire des tables à partir d'images à l'aide de Python. Nous couvrirons une bibliothèque ( img2table ) qui peut être utilisée pour identifier et extraire des tableaux à partir d'images, ainsi qu'un exemple de code et des explications. Que vous travailliez avec des documents numérisés, des photos ou d'autres types d'images, cet article vous fournira les outils et les connaissances dont vous avez besoin pour extraire des tableaux de manière efficace et précise.

Qu'est-ce qu'img2table ?

Img2Table est une bibliothèque Python simple et conviviale pour l'extraction et l'identification de tables basée sur le traitement d'image OpenCV et prenant en charge les fichiers PDF en plus de la majorité des formats de fichiers image populaires.

De par sa conception, il offre une alternative utile et moins lourde aux solutions basées sur les réseaux de neurones, notamment pour l'utilisation du CPU.

Il prend en charge les formats de fichiers suivants :

  • Fichiers JPEG — .jpeg, .jpg, *.jpe
  • Graphiques réseau portables — *.png
  • Fichiers JPEG 2000 — *.jp2
  • Bitmaps Windows — .bmp, .dib
  • WebP — *.webp
  • Format d'image portable — .pbm, .pgm, .ppm .pxm, *.pnm
  • Fichiers PFM — *.pfm
  • Fichiers image OpenEXR — *.exr
  • Cadres de délimitation au niveau des cellules de tableau et identification de tableau pour les images et les fichiers PDF.
  • Traiter des structures de table complexes, comme des cellules fusionnées.
  • Extraction des titres de table.
  • Extraction du contenu des tables tout en prenant en charge les outils et services OCR.
  • Une représentation Pandas DataFrame et un objet simple représentant les tables extraites sont retournés.
  • Préservez la structure d'origine des tableaux extraits en les exportant vers un fichier Excel.

Mise en œuvre

Installation

Comme tous les autres packages Python, img2table peut être installé via pip.

pip install img2table

from img2table.document import Image
image = Image(src,dpi=200, detect_rotation=False)

Prenons un exemple.

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])

Travailler avec la ROC

Pour analyser le contenu des tables, img2tableoffre une interface pour divers outils et services OCR.

from img2table.ocr import TesseractOCR
ocr = TesseractOCR(n_threads=1, lang="eng", tessdata_dir="...")

Remarque : L'utilisation de Tesseract-OCR nécessite une installation préalable.

Jetons un coup d'oeil à un exemple.

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)

La extract_tablesméthode d'un document permet d'extraire simultanément plusieurs tableaux d'une page PDF ou d'une image.

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)

Conclusion

La bibliothèque OpenCV-python et OpenCV sont toutes deux utilisées pour l'ensemble du traitement des images. La transformation de Hough , qui reconnaît les lignes dans une image, sert de base à l'algorithme. Il nous permet de reconnaître les lignes horizontales et verticales de l'image. La bibliothèque n'a vraiment pas grand-chose de plus, car l'intention était de la garder aussi simple que possible afin d'éviter toute complication potentielle pouvant résulter de l'utilisation d'autres approches.

Consultez la documentation du projet sur GitHub .

Connectons-nous sur Twitter et sur LinkedIn . Vous pouvez également vous abonner à ma chaîne YouTube .

Bon codage !