Extrair tabelas de imagens em Python

Feb 28 2023
Extrair tabelas de imagens pode ser uma tarefa tediosa e demorada, especialmente se você tiver um grande número de imagens para processar. Porém, com as ferramentas e técnicas certas, é possível automatizar esse processo e extrair tabelas de imagens de forma rápida e fácil.
Extrair tabelas de imagens em imagem Python

Extrair tabelas de imagens pode ser uma tarefa tediosa e demorada, especialmente se você tiver um grande número de imagens para processar. Porém, com as ferramentas e técnicas certas, é possível automatizar esse processo e extrair tabelas de imagens de forma rápida e fácil.

Neste artigo, exploraremos como extrair tabelas de imagens usando Python. Abordaremos uma biblioteca ( img2table ) que pode ser usada para identificar e extrair tabelas de imagens, junto com exemplos de código e explicações. Esteja você trabalhando com documentos digitalizados, fotos ou outros tipos de imagens, este artigo fornecerá as ferramentas e o conhecimento de que você precisa para extrair tabelas com eficiência e precisão.

O que é img2table?

Img2Table é uma biblioteca Python simples e fácil de usar para extração e identificação de tabelas, baseada no processamento de imagens OpenCV e compatível com arquivos PDF, além da maioria dos formatos populares de arquivos de imagem.

Devido ao seu design, oferece uma alternativa útil e menos pesada para soluções baseadas em redes neurais, especialmente para uso de CPU.

Ele suporta os seguintes formatos de arquivo:

  • Arquivos JPEG — .jpeg, .jpg, *.jpe
  • Gráficos de rede portáteis — *.png
  • Arquivos JPEG 2000 — *.jp2
  • Bitmaps do Windows — .bmp, .dib
  • WebP — *.webp
  • Formato de imagem portátil — .pbm, .pgm, .ppm .pxm, *.pnm
  • Arquivos PFM — *.pfm
  • Arquivos de imagem OpenEXR — *.exr
  • Caixas delimitadoras em nível de célula de tabela e identificação de tabela para imagens e arquivos PDF.
  • Lidando com estruturas de tabelas intrincadas, como células mescladas.
  • Extração de títulos de tabelas.
  • Extraindo o conteúdo da tabela enquanto oferece suporte a ferramentas e serviços de OCR.
  • Uma representação Pandas DataFrame e um objeto simples representando as tabelas extraídas são retornados.
  • Preserve a estrutura original das tabelas extraídas exportando-as para um arquivo Excel.

Implementação

Instalação

Assim como qualquer outro pacote Python, o img2table pode ser instalado via pip.

pip install img2table

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

Vamos dar um exemplo.

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

Trabalhando com OCR

Para analisar o conteúdo das tabelas, img2tableoferece uma interface para várias ferramentas e serviços de OCR.

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

Observação: o uso do Tesseract-OCR requer instalação prévia.

Vamos dar uma olhada em um exemplo.

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)

O extract_tablesmétodo de um documento permite que várias tabelas sejam extraídas simultaneamente de uma página PDF ou de uma imagem.

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)

Conclusão

A biblioteca OpenCV-python e OpenCV são usadas para todo o processamento de imagem. A Hough Transform , que reconhece linhas em uma imagem, serve como base do algoritmo. Permite-nos reconhecer as linhas horizontais e verticais da imagem. A biblioteca realmente não tem muito mais do que isso porque a intenção era mantê-la o mais direta possível para evitar possíveis complicações que possam surgir do uso de outras abordagens.

Veja a documentação do projeto no GitHub .

Vamos nos conectar no Twitter e no LinkedIn . Você também pode se inscrever no meu canal do YouTube .

Codificação feliz!