Trích xuất bảng từ hình ảnh trong Python
Trích xuất bảng từ hình ảnh có thể là một công việc tẻ nhạt và tốn thời gian, đặc biệt nếu bạn có một số lượng lớn hình ảnh cần xử lý. Tuy nhiên, với các công cụ và kỹ thuật phù hợp, bạn có thể tự động hóa quy trình này và trích xuất các bảng từ hình ảnh một cách nhanh chóng và dễ dàng.
Trong bài viết này, chúng ta sẽ khám phá cách trích xuất bảng từ hình ảnh bằng Python. Chúng tôi sẽ đề cập đến một thư viện ( img2table ) có thể được sử dụng để xác định và trích xuất bảng từ hình ảnh, cùng với mã mẫu và giải thích. Cho dù bạn đang làm việc với các tài liệu được quét, ảnh hoặc các loại hình ảnh khác, bài viết này sẽ cung cấp cho bạn các công cụ và kiến thức cần thiết để trích xuất các bảng một cách hiệu quả và chính xác.
img2table là gì?
Img2Table là một thư viện Python đơn giản, thân thiện với người dùng để trích xuất và nhận dạng bảng dựa trên xử lý hình ảnh OpenCV và hỗ trợ các tệp PDF bên cạnh phần lớn các định dạng tệp hình ảnh phổ biến.
Do thiết kế của nó, nó cung cấp một giải pháp thay thế hữu ích và ít nặng nề hơn cho các giải pháp dựa trên mạng thần kinh, đặc biệt là đối với việc sử dụng CPU.
Nó hỗ trợ các định dạng tệp sau:
- Tệp JPEG — .jpeg, .jpg, *.jpe
- Đồ họa mạng di động — *.png
- Tệp JPEG 2000 — *.jp2
- Windows bitmap — .bmp, .dib
- WebP — *.webp
- Định dạng hình ảnh di động — .pbm, .pgm, .ppm .pxm, *.pnm
- Tệp PFM — *.pfm
- Tệp hình ảnh OpenEXR — *.exr
- Hộp giới hạn cấp độ ô của bảng và nhận dạng bảng cho hình ảnh và tệp PDF.
- Xử lý các cấu trúc bảng phức tạp, chẳng hạn như các ô được hợp nhất.
- Khai thác tiêu đề bảng.
- Trích xuất nội dung bảng trong khi hỗ trợ các công cụ và dịch vụ OCR.
- Một biểu diễn Khung dữ liệu Pandas và một đối tượng đơn giản biểu thị các bảng đã trích xuất được trả về.
- Giữ nguyên cấu trúc ban đầu của các bảng được trích xuất bằng cách xuất chúng sang tệp Excel.
Thực hiện
Cài đặt
Cũng giống như mọi gói Python khác, img2table có thể được cài đặt qua pip.
pip install img2table
from img2table.document import Image
image = Image(src,dpi=200, detect_rotation=False)
Hãy lấy một ví dụ.
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])
Làm việc với OCR
Để phân tích nội dung của bảng, img2tablecung cấp giao diện cho nhiều công cụ và dịch vụ OCR khác nhau.
from img2table.ocr import TesseractOCR
ocr = TesseractOCR(n_threads=1, lang="eng", tessdata_dir="...")
Lưu ý: Việc sử dụng Tesseract-OCR yêu cầu cài đặt trước.
Hãy xem xét một ví dụ.
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)
Phương extract_tablespháp của một tài liệu cho phép trích xuất đồng thời nhiều bảng từ một trang PDF hoặc một hình ảnh.
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)
Phần kết luận
Thư viện OpenCV-python và OpenCV đều được sử dụng cho tất cả quá trình xử lý ảnh. Hough Transform , nhận dạng các đường trong ảnh, đóng vai trò là nền tảng của thuật toán. Nó cho phép chúng ta nhận ra các đường ngang và dọc của hình ảnh. Thư viện thực sự không có nhiều thứ hơn vì mục đích là giữ cho nó đơn giản nhất có thể để tránh bất kỳ sự phức tạp tiềm ẩn nào có thể phát sinh khi sử dụng các phương pháp khác.
Xem tài liệu của dự án trên GitHub .
Hãy kết nối trên Twitter và trên LinkedIn . Bạn cũng có thể đăng ký kênh YouTube của tôi .
Mã hóa vui vẻ!

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































