Извлечение таблицы изображений OCR в Excel с использованием Python: методы и примеры кода

Чтобы распознать таблицу изображений и извлечь данные в файл Excel с помощью Python, вы можете рассмотреть несколько методов. Ниже я предоставлю вам три популярные библиотеки, которые помогут вам решить эту задачу, а также примеры кода:

  1. Pytesseract с OpenCV:
    Pytesseract — это оболочка Python для механизма оптического распознавания символов Google Tesseract, а OpenCV — библиотека компьютерного зрения. Вместе их можно использовать для извлечения текста из изображения и преобразования его в файл Excel.
import cv2
import pytesseract
import pandas as pd
# Read the image using OpenCV
image = cv2.imread('table_image.png')
# Preprocess the image using OpenCV (optional, depending on the image quality)
# ...
# Perform OCR using Pytesseract
text = pytesseract.image_to_string(image)
# Process the extracted text into table data (assuming tabular structure)
# ...
# Convert the table data into a DataFrame
df = pd.DataFrame(table_data)
# Save the DataFrame to an Excel file
df.to_excel('table_data.xlsx', index=False)
  1. Tabula-py:
    Tabula-py — это библиотека Python для извлечения таблиц из PDF-файлов. Он также может работать с таблицами на основе изображений, предварительно преобразовав их в формат PDF.
import tabula
import pandas as pd
# Convert the image to PDF using an image-to-PDF conversion tool (e.g., img2pdf)
# Read the converted PDF using Tabula-py
df = tabula.read_pdf('table_image.pdf', pages='all')
# Save the DataFrame to an Excel file
df.to_excel('table_data.xlsx', index=False)
  1. OCROpus:
    OCROpus — это набор инструментов для анализа документов и инструментов оптического распознавания символов. Он предоставляет интерфейс командной строки и может быть интегрирован с Python для оптического распознавания символов таблиц изображений.
import subprocess
import pandas as pd
# Perform OCR using OCRopus command-line tool
subprocess.run(['ocropus-nlbin', 'table_image.png'])
subprocess.run(['ocropus-gpageseg', 'table_image.bin.png'])
subprocess.run(['ocropus-rpred', '-n', 'table_image.bin.png'])
# Process the extracted text using OCRopus tools (e.g., ocropus-hocr2df)
# Save the DataFrame to an Excel file
df.to_excel('table_data.xlsx', index=False)