Extrair tabelas de imagens em 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!





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)