Mengekstrak Tabel Dari Gambar Dengan Python - CRUDPRO

Mengekstrak Tabel Dari Gambar Dengan Python

Mengekstrak Tabel Dari Gambar Dengan Python

Mengekstrak tabel dari gambar dapat menjadi tugas yang membosankan dan menghabiskan waktu, terutama jika Anda memiliki banyak gambar untuk diproses. Akan tetapi, dengan alat dan teknik yang tepat, Anda dapat mengotomatiskan proses ini dan mengekstrak tabel dari gambar dengan cepat dan mudah.

Pada artikel ini, kita akan membahas cara mengekstrak tabel dari gambar menggunakan Python. Kami akan membahas perpustakaan (img2table) yang dapat digunakan untuk mengidentifikasi dan mengekstrak tabel dari gambar, bersama dengan kode contoh dan penjelasan. Apakah Anda sedang bekerja dengan dokumen yang dipindai, foto, atau jenis gambar lainnya, artikel ini akan memberi Anda alat dan pengetahuan yang Anda butuhkan untuk mengekstrak tabel secara efisien dan akurat.

Apa itu img2table?

Img2Table adalah pustaka Python yang mudah digunakan dan mudah digunakan untuk ekstraksi dan identifikasi tabel yang didasarkan pada pemrosesan gambar OpenCV dan mendukung file PDF selain sebagian besar format file gambar populer.

Karena desainnya, ia menawarkan alternatif yang berguna dan tidak terlalu berat untuk solusi berdasarkan jaringan saraf, khususnya untuk penggunaan CPU.

Ini mendukung format file berikut:

  • File JPEG — .jpeg, .jpg, *.jpe
  • Grafik Jaringan Portabel — *.png
  • File JPEG 2000 — *.jp2
  • Bitmap Windows — .bmp, .dib
  • WebP — *.webp
  • Format gambar portabel — .pbm, .pgm, .ppm .pxm, *.pnm
  • File PFM — *.pfm
  • File Gambar OpenEXR — *.exr

Fitur img2table

  • Kotak pembatas tingkat sel tabel dan identifikasi tabel untuk gambar dan file PDF.
  • Berurusan dengan struktur tabel yang rumit, seperti sel yang digabungkan.
  • Ekstraksi judul tabel.
  • Mengekstrak konten tabel sambil mendukung alat dan layanan OCR.
  • Representasi Pandas DataFrame dan objek sederhana yang mewakili tabel yang
  • diekstraksi dikembalikan.
  • Pertahankan struktur asli tabel yang diekstraksi dengan mengekspornya ke file Excel.

package sederhana (dibandingkan dengan solusi deep learning) dan membutuhkan sedikit atau tanpa pelatihan. Masih ada beberapa keterbatasan karena identifikasi yang lebih rumit dari tabel tanpa batas belum didukung dan mungkin membutuhkan pendekatan berbasis CNN.

Penerapan

Instalasi

Sama seperti setiap package Python lainnya, img2table dapat diinstal melalui pip.

pip install img2table

Bekerja dengan Gambar

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

Kami membuat instance Image , di mana src adalah jalur ke gambar (diperlukan), dpi digunakan untuk mengadaptasi parameter algoritme OpenCV, opsional dengan tipe int (standarnya adalah 200), detect_rotation mendeteksi dan mengoreksi kemiringan atau rotasi gambar, itu adalah tipe boolean dan secara default False.

Mari kita punya contoh.

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

Bekerja dengan PDF

from img2table.document import PDF
pdf = PDF(src, dpi=200, pages=[0, 2])

Ini sama dengan cara kami bekerja dengan gambar, hanya saja kami memiliki halaman parameter baru, yang merupakan daftar indeks halaman PDF untuk diproses. Namun jika tidak ada indeks yang ditentukan dalam daftar halaman, semua halaman diproses.

Bekerja dengan OCR

Untuk mengurai konten tabel, img2table menawarkan sebuah antarmuka untuk berbagai alat dan layanan OCR.

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

Di mana n_threads adalah jumlah utas bersamaan yang digunakan untuk memanggil Tesseract dengan tipe int dan defaultnya adalah 1, lang digunakan dalam Tesseract untuk ekstraksi teks dan bersifat opsional, terakhir tessdata_dir adalah direktori yang berisi file data terlatih Tesseract.

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)

Mengekstrak Banyak Tabel

Metode extract_tables dari sebuah dokumen memungkinkan beberapa tabel untuk diekstrak secara bersamaan dari halaman PDF atau gambar.

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)

Sebagian besar parameter telah didiskusikan sebelumnya saat bekerja dengan gambar dan PDF, tetapi ada parameter baru. ocr adalah instance yang digunakan untuk mem-parsing teks dokumen, implicit_rows adalah tipe Boolean yang menunjukkan jika baris implisit harus diidentifikasi, borderless_tables menunjukkan jika tabel tanpa batas diekstrak, dan terakhir, min_confident adalah tingkat kepercayaan minimum dari OCR untuk memproses teks dari 0( terburuk) hingga 99 (terbaik).

Kesimpulan

Library OpenCV-python dan OpenCV keduanya digunakan untuk semua pemrosesan gambar. Transformasi Hough, yang mengenali garis pada gambar, berfungsi sebagai fondasi algoritme. Hal ini memungkinkan kita untuk mengenali garis horizontal dan vertikal gambar. Perpustakaan benar-benar tidak memiliki lebih dari itu karena niatnya adalah untuk membuatnya sesederhana mungkin untuk menghindari komplikasi potensial yang mungkin timbul dari penggunaan pendekatan lain.