Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning


Pengantar Ekstraksi Tabel

Jumlah data yang dikumpulkan meningkat secara drastis dari hari ke hari dengan meningkatnya jumlah aplikasi, perangkat lunak, dan platform online.

Untuk menangani/mengakses data yang sangat besar ini secara produktif, perlu untuk mengembangkan alat ekstraksi informasi yang berharga.

Salah satu sub-area yang menuntut perhatian di bidang Ekstraksi Informasi adalah ekstraksi tabel dari gambar atau deteksi data tabular dari formulir, PDF & dokumen.

Ekstraksi Tabel adalah tugas mendeteksi dan menguraikan informasi tabel dalam sebuah dokumen.

Tabel OCR - Nanonet mengekstrak data tabel dari gambar!
Tabel OCR – Nanonet mengekstrak data tabel dari gambar!

Bayangkan Anda memiliki banyak dokumen dengan data tabular yang perlu Anda ekstrak untuk diproses lebih lanjut. Secara konvensional, Anda dapat menyalinnya secara manual (ke atas kertas) atau memuatnya ke dalam lembar excel.

Namun, dengan perangkat lunak OCR tabel, Anda dapat secara otomatis mendeteksi tabel & mengekstrak semua data tabel dari dokumen sekaligus. Ini menghemat banyak waktu dan pengerjaan ulang.

Pada artikel ini, pertama-tama kita akan melihat bagaimana Nanonets dapat secara otomatis mengekstrak tabel dari gambar atau dokumen. Kami kemudian akan membahas beberapa teknik DL populer untuk mendeteksi dan mengekstrak tabel dalam dokumen.


Ingin mengekstrak data tabular dari faktur, kuitansi, atau jenis dokumen lainnya? Jelajahi Nanonet ekstraktor tabel PDF untuk mengekstrak data tabel. Jadwalkan demo untuk mempelajari lebih lanjut tentang mengotomatisasi ekstraksi tabel.


Daftar Isi

Ekstrak Tabel dari Gambar dengan Nanonets Table OCR

  • Mendaftarlah untuk mendapatkan akun Nanonets gratis

    • Unggah gambar/file ke model OCR Tabel Nanonets
    • Nanonets secara otomatis mendeteksi & mengekstrak semua data tabular
    • Edit & tinjau data (jika diperlukan)
    • Ekspor data yang diproses sebagai Excel, csv atau JSON

Ekstrak Tabel dari Gambar dengan Nanonets

Ingin mengikis data dari PDF dokumen, mengonversi tabel PDF ke Excel or mengotomatiskan ekstraksi tabel? Temukan bagaimana Nanonet? Pengikis PDF or Pengurai PDF dapat mendorong bisnis Anda menjadi lebih produktif.


Tabel Nanonet OCR API

Tabel OCR dengan Nanonets
Tabel OCR dengan Nanonets

Grafik Nanonet OCR API memungkinkan Anda membangun model OCR dengan mudah. Anda tidak perlu khawatir tentang pra-pemrosesan gambar Anda atau khawatir tentang template yang cocok atau membangun mesin berbasis aturan untuk meningkatkan akurasi model OCR Anda.

Anda dapat mengunggah data, membuat anotasi, menyetel model untuk dilatih, dan menunggu prediksi melalui UI berbasis browser tanpa menulis satu baris kode, mengkhawatirkan GPU, atau menemukan arsitektur yang tepat untuk deteksi tabel Anda menggunakan model pembelajaran mendalam.

Anda juga dapat memperoleh respons JSON dari setiap prediksi untuk mengintegrasikannya dengan sistem Anda sendiri dan membangun aplikasi yang didukung pembelajaran mesin yang dibangun di atas algoritme canggih dan infrastruktur yang kuat.

https://nanonets.com/documentation/


Apakah bisnis Anda berurusan dengan pengenalan data atau teks dalam dokumen digital, PDF, atau gambar? Pernahkah Anda bertanya-tanya bagaimana cara mengekstrak data tabular, ekstrak teks dari gambar , ekstrak data dari PDF or ekstrak teks dari PDF akurat & efisien?


Siapa yang akan menganggap Ekstraksi Tabel Berguna

Seperti yang dibahas di bagian sebelumnya, tabel sering digunakan untuk mewakili data dalam format yang bersih. Kita dapat melihatnya begitu sering di beberapa area, mulai dari mengatur pekerjaan kita dengan menyusun data di seluruh tabel hingga menyimpan aset perusahaan yang sangat besar. Ada banyak organisasi yang harus berurusan dengan jutaan tabel setiap hari. Untuk memfasilitasi tugas yang melelahkan seperti melakukan semuanya secara manual, kita perlu menggunakan teknik yang lebih cepat. Mari kita bahas beberapa kasus penggunaan di mana mengekstrak tabel dapat menjadi penting:

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.
Sumber: patrick tomasso, Hapus percikan

Kasus penggunaan pribadi

Grafik ekstraksi tabel proses dapat membantu untuk kasus penggunaan pribadi kecil juga. Terkadang kami mengambil dokumen di ponsel dan kemudian menyalinnya ke komputer kami. Alih-alih menggunakan proses ini, kami dapat langsung menangkap dokumen dan menyimpannya sebagai format yang dapat diedit di templat khusus kami. Di bawah ini adalah beberapa kasus penggunaan tentang bagaimana kita dapat memasukkan ekstraksi tabel ke dalam rutinitas pribadi kita –

Memindai Dokumen ke Telepon: Kita sering mengambil gambar tabel penting di ponsel dan menyimpannya, tetapi dengan teknik ekstraksi tabel, kita dapat menangkap gambar tabel dan menyimpannya langsung dalam format tabel, baik ke excel atau google sheets. Dengan ini, kita tidak perlu mencari gambar atau menyalin konten tabel ke file baru, sebagai gantinya, kita dapat langsung menggunakan tabel yang diimpor dan mulai mengerjakan informasi yang diekstrak.

Dokumen ke HTML: Di halaman web, kami menemukan banyak informasi yang disajikan menggunakan tabel. Mereka membantu kami dalam perbandingan dengan data dan memberi kami catatan singkat tentang angka-angka secara terorganisir. Dengan menggunakan proses ekstraksi tabel, kita dapat memindai dokumen PDF atau gambar JPG / PNG, dan memuat informasi langsung ke dalam format tabel yang dirancang sendiri. Kami selanjutnya dapat menulis skrip untuk menambahkan tabel tambahan berdasarkan tabel yang ada, dan dengan demikian mendigitalkan informasi. Ini membantu kami dalam mengedit konten dan mempercepat proses penyimpanan.


Kasus penggunaan industri

Ada beberapa industri di seluruh dunia yang menjalankan banyak dokumen dan dokumentasi, terutama di sektor Perbankan dan Asuransi. Dari menyimpan detail pelanggan hingga memenuhi kebutuhan pelanggan, tabel banyak digunakan. Informasi ini lagi-lagi diteruskan sebagai dokumen (hard copy) ke cabang yang berbeda untuk persetujuan, di mana terkadang, miskomunikasi dapat menyebabkan kesalahan saat mengambil informasi dari tabel. Sebaliknya, menggunakan otomatisasi di sini, membuat hidup kita jauh lebih mudah. Setelah data awal ditangkap dan disetujui, kami dapat langsung memindai dokumen tersebut ke dalam tabel dan selanjutnya mengerjakan data digital. Jangankan pengurangan konsumsi waktu dan kesalahan, kami dapat memberi tahu pelanggan tentang waktu dan lokasi di mana informasi tersebut diproses. Oleh karena itu, ini memastikan keandalan data, dan menyederhanakan cara kami menangani operasi. Sekarang mari kita lihat kasus penggunaan lain yang mungkin:

Quality Control: Kontrol kualitas adalah salah satu layanan inti yang disediakan oleh industri teratas. Biasanya dilakukan di rumah dan untuk pemangku kepentingan. Sebagai bagian dari ini, ada banyak formulir umpan balik yang dikumpulkan dari konsumen untuk mengekstrak umpan balik tentang layanan yang disediakan. Di sektor industri, mereka menggunakan tabel untuk mencatat daftar periksa harian dan catatan untuk melihat bagaimana jalur produksi bekerja. Semua ini dapat didokumentasikan di satu tempat menggunakan ekstraksi tabel dengan mudah.

Lacak Aset: Dalam industri Manufaktur, orang menggunakan tabel hardcode untuk melacak entitas manufaktur seperti Baja, Besi, Plastik, dll. Setiap item yang diproduksi diberi label dengan nomor unik di mana mereka menggunakan tabel untuk melacak item yang diproduksi dan dikirim setiap hari. Otomatisasi dapat membantu menghemat banyak waktu dan aset dalam hal kesalahan penempatan atau ketidakkonsistenan data.


Kasus penggunaan bisnis

Ada beberapa industri bisnis yang berjalan di excel sheets dan offline form. Tetapi pada satu titik waktu, sulit untuk mencari melalui lembaran dan formulir ini. Jika kita memasukkan tabel ini secara manual, itu memakan waktu dan kemungkinan data yang dimasukkan salah akan tinggi. Oleh karena itu ekstraksi tabel adalah alternatif yang lebih baik untuk menyelesaikan kasus penggunaan bisnis seperti di bawah ini beberapa.

Faktur Otomasi: Ada banyak industri skala kecil dan besar yang faktur masih dihasilkan dalam format tabel. Ini tidak memberikan laporan pajak yang diamankan dengan benar. Untuk mengatasi rintangan seperti itu, kita dapat menggunakan ekstraksi tabel untuk mengonversi semua faktur ke dalam format yang dapat diedit dan dengan demikian, tingkatkan ke versi yang lebih baru.

Otomatisasi Formulir: Formulir online mengganggu metode yang telah dicoba dan benar ini dengan membantu bisnis mengumpulkan informasi yang mereka butuhkan dan secara bersamaan menghubungkannya ke platform perangkat lunak lain yang dibangun ke dalam alur kerja mereka. Selain mengurangi kebutuhan entri data manual (dengan entri data otomatis) dan email tindak lanjut, ekstraksi tabel dapat menghilangkan biaya pencetakan, pengiriman surat, penyimpanan, pengaturan, dan penghancuran alternatif kertas tradisional.


Punya masalah OCR dalam pikiran? Ingin mendigitalkan faktur, PDF atau plat nomor? Pergi ke Nanonet dan bangun model OCR gratis!


Pembelajaran Mendalam dalam Tindakan

Pembelajaran mendalam adalah bagian dari keluarga metode pembelajaran mesin yang lebih luas berdasarkan jaringan saraf tiruan.

Neural Network adalah kerangka kerja yang mengenali hubungan mendasar dalam data yang diberikan melalui proses yang meniru cara kerja otak manusia. Mereka memiliki lapisan buatan berbeda yang dilewati data, tempat mereka mempelajari fitur. Ada arsitektur yang berbeda seperti Convolution NNs, Recurrent NNs, Autoencoders, Generative Adversarial NN untuk memproses berbagai jenis data. Ini rumit namun menggambarkan kinerja tinggi untuk mengatasi masalah secara real-time. Sekarang mari kita lihat penelitian yang telah dilakukan di bidang ekstraksi tabel menggunakan Jaringan Neural dan juga, mari kita tinjau secara singkat.


TabelNet

Kertas: TableNet: Model Pembelajaran Mendalam untuk deteksi Tabel ujung-ke-ujung dan ekstraksi data Tabular dari Gambar Dokumen yang Dipindai

Perkenalkan: TableNet adalah arsitektur pembelajaran mendalam modern yang diusulkan oleh tim dari TCS Research tahun di tahun 2019. Motivasi utamanya adalah untuk mengekstrak informasi dari tabel yang dipindai melalui ponsel atau kamera.

Mereka mengusulkan solusi yang mencakup deteksi akurat dari wilayah tabel dalam gambar dan kemudian mendeteksi dan mengekstrak informasi dari baris dan kolom tabel yang terdeteksi.

Himpunan data: Dataset yang digunakan adalah Marmot. Ini memiliki 2000 halaman dalam format PDF yang dikumpulkan dengan kebenaran dasar yang sesuai. Ini termasuk halaman berbahasa Mandarin juga. Tautan - http://www.icst.pku.edu.cn/cpdp/sjzy/index.htm

Arsitektur: Arsitektur didasarkan pada Long et al., model encoder-decoder untuk segmentasi semantik. Jaringan encoder/decoder yang sama digunakan sebagai arsitektur FCN untuk ekstraksi tabel. Gambar diproses dan dimodifikasi menggunakan Tesseract OCR.

Model diturunkan dalam dua tahap dengan memberikan masukan pada teknik pembelajaran mendalam. Pada fase pertama, mereka telah menggunakan bobot Jaringan VGG-19 yang telah dilatih sebelumnya. Mereka telah mengganti lapisan terhubung sepenuhnya dari jaringan VGG bekas dengan lapisan Konvolusional 1 × 1. Semua lapisan konvolusional diikuti oleh aktivasi ULT dan lapisan putus sekolah probabilitas 0.8. Mereka menyebut fase kedua sebagai jaringan yang diterjemahkan yang terdiri dari dua cabang. Hal ini sesuai dengan intuisi bahwa region kolom adalah bagian dari region tabel. Dengan demikian, jaringan pengkodean tunggal dapat menyaring wilayah aktif dengan lebih akurat menggunakan fitur wilayah tabel dan kolom. Output dari jaringan pertama didistribusikan ke dua cabang. Di cabang pertama, dua operasi konvolusi diterapkan dan peta fitur akhir ditingkatkan untuk memenuhi dimensi gambar asli. Di cabang lain untuk mendeteksi kolom, ada lapisan konvolusi tambahan dengan fungsi aktivasi ULT dan lapisan putus sekolah dengan probabilitas putus sekolah yang sama seperti yang disebutkan sebelumnya. Peta fitur diambil sampelnya menggunakan konvolusi yang digerakkan secara fraksional setelah lapisan konvolusi (1 × 1). Di bawah ini adalah gambar arsitekturnya:

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.
Arsitektur TableNet

Output: Setelah dokumen diolah menggunakan model, maka dibuat mask tabel dan kolom. Masker ini digunakan untuk memfilter tabel dan wilayah kolomnya dari gambar. Sekarang menggunakan Tesseract OCR, informasi diambil dari wilayah tersegmentasi. Di bawah ini adalah gambar yang menunjukkan topeng yang dihasilkan dan kemudian diekstraksi dari tabel:

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Mereka juga mengusulkan model yang sama dengan ICDAR yang berkinerja lebih baik daripada model aslinya. Recall, Precision, dan F1-Score dari model fine-tuned adalah masing-masing 0.9628, 0.9697, 0.9662. Model asli memiliki metrik yang direkam 0.9621, 0.9547, 0.9583 dalam urutan yang sama. Sekarang mari selami satu arsitektur lagi.


DeepDeSRT

Kertas: DeepDeSRT: Pembelajaran Mendalam untuk Deteksi dan Pengenalan Struktur Tabel dalam Gambar Dokumen

Perkenalkan: DeepDeSRT adalah framework Jaringan Neural yang digunakan untuk mendeteksi dan memahami tabel dalam dokumen atau gambar. Ini memiliki dua solusi seperti yang disebutkan dalam judul:

  1. Ini menyajikan solusi berbasis pembelajaran yang mendalam untuk deteksi tabel dalam gambar dokumen.
  2. Ini mengusulkan pendekatan baru berbasis pembelajaran mendalam untuk pengenalan struktur tabel, yaitu mengidentifikasi baris, kolom, dan posisi sel dalam tabel yang terdeteksi.

Model yang diusulkan sepenuhnya berbasis data, tidak memerlukan heuristik atau metadata dari dokumen atau gambar. Satu keuntungan utama sehubungan dengan pelatihan adalah mereka tidak menggunakan kumpulan data pelatihan yang besar, melainkan mereka menggunakan konsep pembelajaran transfer dan adaptasi domain untuk deteksi tabel dan pengenalan struktur tabel.

Himpunan data: Dataset yang digunakan adalah set data kompetisi tabel ICDAR 2013 yang berisi 67 dokumen dengan keseluruhan 238 halaman.

Arsitektur:

  • Deteksi Tabel Model yang diusulkan menggunakan Fast RCNN sebagai kerangka dasar untuk mendeteksi tabel. Arsitekturnya dipecah menjadi dua bagian berbeda. Pada bagian pertama, mereka menghasilkan proposal wilayah berdasarkan citra masukan yang disebut jaringan proposal wilayah (RPN). Pada bagian kedua, mereka mengklasifikasikan wilayah menggunakan Fast-RCNN. Untuk mendukung arsitektur ini, mereka menggunakan ZFNet dan bobot VGG-16.
  • Pengakuan Struktur Setelah tabel berhasil dideteksi dan lokasinya diketahui sistem, tantangan selanjutnya dalam memahami isinya adalah mengenali dan menempatkan baris dan kolom yang menyusun struktur fisik tabel. Karenanya mereka telah menggunakan jaringan yang sepenuhnya terhubung dengan bobot VGG-16 yang mengekstrak informasi dari baris dan kolom. Di bawah ini adalah output dari DeepDeSRT:

Output:

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.
Hasil Deteksi Tabel
Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.
Hasil Pengakuan Struktur [6]

Hasil evaluasi mengungkapkan bahwa DeepDeSRT mengungguli metode mutakhir untuk deteksi tabel dan pengenalan struktur dan mencapai ukuran F1 masing-masing 96.77% dan 91.44% untuk deteksi tabel dan pengenalan struktur hingga 2015.


Grafik Jaringan Neural

Kertas: Rethinking Table Recognition menggunakan Graph Neural Networks

Perkenalkan: Dalam penelitian ini, penulis dari Deep Learning Laboratory, National Center of Artificial Intelligence (NCAI) mengusulkan Graph Neural Networks untuk mengekstraksi informasi dari tabel. Mereka berpendapat bahwa jaringan grafik adalah pilihan yang lebih alami untuk masalah ini dan selanjutnya mengeksplorasi dua jaringan saraf grafik berbasis gradien.

Model yang diusulkan ini menggabungkan manfaat dari keduanya, jaringan saraf konvolusional untuk ekstraksi fitur visual dan jaringan grafik untuk menangani struktur masalah.

Himpunan data: Para penulis mengusulkan kumpulan data besar baru yang dihasilkan secara sintetis dari 0.5 Juta tabel yang dibagi menjadi empat kategori.

  1. Gambar adalah gambar polos tanpa penggabungan dan dengan garis penggaris
  2. Gambar memiliki jenis perbatasan yang berbeda termasuk sesekali tidak ada garis yang berkuasa
  3. Memperkenalkan penggabungan sel dan kolom
  4. Kamera menangkap gambar dengan transformasi perspektif linier

Arsitektur: Mereka menggunakan jaringan konvolusional dangkal yang menghasilkan fitur konvolusional masing-masing. Jika dimensi spasial fitur keluaran tidak sama dengan gambar masukan, fitur ini mengumpulkan posisi yang diperkecil secara linier tergantung pada rasio antara dimensi masukan dan keluaran dan mengirimkannya ke jaringan interaksi yang memiliki dua jaringan grafik yang dikenal sebagai DGCNN dan GravNet. Parameter jaringan grafik sama dengan CNN asli. Pada akhirnya, mereka telah menggunakan pengambilan sampel pasangan waktu proses untuk mengklasifikasikan konten yang diekstraksi yang secara internal menggunakan algoritme berbasis Monte Carlo. Berikut adalah keluarannya:

Output:

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.
Output yang dihasilkan oleh Graph Neural Networks

Di bawah ini adalah nomor akurasi dalam tabel yang dihasilkan oleh jaringan untuk empat kategori jaringan seperti yang disajikan pada Dataset bagian:

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

CGAN dan Algoritma Genetika

Kertas: Mengekstrak Tabel dari Dokumen menggunakan Jaringan Adversarial Generatif Bersyarat dan Algoritma Genetik

Perkenalkan: Dalam penelitian ini, penulis menggunakan pendekatan top-down daripada pendekatan bottom-up (mengintegrasikan garis ke dalam sel, baris atau kolom).

Dalam metode ini, dengan menggunakan jaringan adversarial generatif, mereka memetakan gambar tabel ke dalam bentuk tabel 'kerangka' standar. Tabel kerangka ini menunjukkan perkiraan batas baris dan kolom tanpa konten tabel. Selanjutnya, mereka menyesuaikan rendering struktur tabel laten kandidat ke struktur kerangka menggunakan ukuran jarak yang dioptimalkan oleh algoritme genetik.

Himpunan data: Penulis menggunakan dataset mereka sendiri yang memiliki 4000 tabel.

Arsitektur: Model yang diusulkan terdiri dari dua bagian. Pada bagian pertama, gambar input disarikan ke dalam tabel kerangka menggunakan jaringan neural adversarial generatif bersyarat. Sebuah GAN memiliki dua jaringan lagi, generator yang menghasilkan sampel acak dan diskriminator yang memberi tahu apakah gambar yang dihasilkan palsu atau asli. Generator G adalah jaringan encoder-decoder di mana gambar input dilewatkan melalui serangkaian lapisan downsampling secara progresif hingga lapisan bottleneck tempat proses dibalik. Untuk meneruskan informasi yang cukup ke lapisan decoding, arsitektur U-Net dengan koneksi lewati digunakan dan koneksi lewati ditambahkan antara lapisan i dan n - i melalui penggabungan, di mana n adalah jumlah total lapisan, dan i adalah nomor lapisan di encoder. Arsitektur PatchGAN digunakan untuk diskriminator D. Ini menghukum struktur gambar keluaran pada skala tambalan. Ini menghasilkan keluaran sebagai tabel kerangka.

Pada bagian kedua, mereka mengoptimalkan kesesuaian struktur data laten kandidat ke citra kerangka yang dihasilkan menggunakan ukuran jarak antara setiap kandidat dan kerangka. Beginilah cara teks di dalam gambar diekstraksi. Di bawah ini adalah gambar yang menggambarkan arsitektur:

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.
Skema umum dari pendekatan tersebut

Keluaran: Struktur tabel yang diperkirakan dievaluasi dengan membandingkan - Nomor baris dan kolom, posisi pojok kiri atas, tinggi baris dan lebar kolom

Algoritma genetika memberikan akurasi 95.5% berdasarkan baris dan 96.7% akurasi kolom saat mengekstraksi informasi dari tabel.

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Perlu mendigitalkan dokumen, penerimaan or faktur tapi terlalu malas untuk membuat kode? Pergi ke Nanonet dan bangun model OCR gratis!


[Kode] Pendekatan Tradisional

Di bagian ini, kita akan mempelajari proses cara mengekstrak informasi dari tabel menggunakan Deep Learning dan OpenCV. Anda dapat menganggap penjelasan ini sebagai pengantar, namun, membangun model canggih akan membutuhkan banyak pengalaman dan latihan. Ini akan membantu Anda memahami dasar-dasar cara kami melatih komputer dengan berbagai kemungkinan pendekatan dan algoritme.

Untuk memahami masalah dengan lebih tepat, kami mendefinisikan beberapa istilah dasar, yang akan digunakan di seluruh artikel:

  • Teks: berisi string dan lima atribut (atas, kiri, lebar, tinggi, font)
  • baris: berisi objek teks yang diasumsikan berada pada baris yang sama pada file aslinya
  • Garis tunggal: objek garis dengan hanya satu objek teks.
  • Multi-baris: objek garis dengan lebih dari satu objek teks.
  • Multi-baris Memblokir: satu set objek multi-garis kontinu.
  • Baris: Blok horizontal di tabel
  • Kolom: Blok Vertikal di tabel
  • Sel: perpotongan baris dan kolom
  • Sel - Padding: bantalan internal atau ruang di dalam sel.

Deteksi Tabel dengan OpenCV

Kami akan menggunakan teknik visi komputer tradisional untuk mengekstrak informasi dari tabel yang dipindai. Berikut jalur pipa kami; kami awalnya menangkap data (tabel tempat kami perlu mengekstrak informasi) menggunakan kamera normal, lalu menggunakan computer vision, kami akan mencoba menemukan batas, tepi, dan sel. Kami akan menggunakan filter dan kontur yang berbeda, dan kami akan menyoroti fitur inti dari tabel.

Kita membutuhkan gambar tabel. Kami dapat menangkap ini di telepon atau menggunakan gambar apa pun yang ada. Di bawah ini adalah potongan kodenya,

file = r’table.png’
table_image_contour = cv2.imread(file, 0)
table_image = cv2.imread(file)

Di sini, kami telah memuat gambar dua variabel yang sama karena kami akan menggunakan tabel_gambar_kontur saat menggambar kontur yang terdeteksi ke gambar yang dimuat. Di bawah ini adalah gambar tabel yang kami gunakan dalam program kami:

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.
Gambar tabel

Kami akan menggunakan teknik yang disebut Thresholding Gambar Terbalik yang meningkatkan data yang ada pada gambar yang diberikan.

ret, thresh_value = cv2.threshold( table_image_contour, 180, 255, cv2.THRESH_BINARY_INV)

Langkah preprocessing penting lainnya adalah pelebaran gambar. Dilasi adalah operasi matematika sederhana yang diterapkan pada gambar biner (Hitam Putih) yang secara bertahap memperbesar batas wilayah piksel latar depan (yaitu piksel putih, biasanya).

kernel = np.ones((5,5),np.uint8)
dilated_value = cv2.dilate(thresh_value,kernel,iterations = 1)

Di OpenCV, kami menggunakan metode, temukanKontur untuk mendapatkan kontur pada gambar ini. Metode ini mengambil tiga argumen, pertama adalah gambar dilatasi (gambar yang digunakan untuk menghasilkan gambar dilatasi adalah table_image_contour - metode findContours hanya mendukung gambar biner), yang kedua adalah cv2.RETR_TREE yang memberitahu kita untuk menggunakan mode pengambilan kontur, yang ketiga adalah  cv2.CHAIN_APPROX_SIMPLE yang merupakan mode perkiraan kontur. Itu temukanKontur membongkar dua nilai, maka kita akan menambahkan satu lagi variabel bernama hirarki. Saat gambar disarangkan, kontur memancarkan saling ketergantungan. Untuk merepresentasikan hubungan seperti itu, hierarki digunakan.

contours, hierarchy = cv2.findContours( dilated_value, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

Tanda kontur di mana persisnya data hadir dalam gambar. Sekarang, kami mengulangi daftar kontur yang kami hitung pada langkah sebelumnya dan menghitung koordinat kotak persegi panjang seperti yang diamati pada gambar asli menggunakan metode,  cv2.boundingRect. Pada iterasi terakhir, kami meletakkan kotak-kotak itu ke gambar asli table_image menggunakan metode, cv2.rectangle ().

for cnt in contours: x, y, w, h = cv2.boundingRect(cnt) # bounding the images if y < 50: table_image = cv2.rectangle(table_image, (x, y), (x + w, y + h), (0, 0, 255), 1) 

Ini langkah terakhir kita. Di sini kami menggunakan metode tersebut bernamaWindow untuk merender tabel kami dengan konten yang diekstrak dan kontur yang disematkan di atasnya. Di bawah ini adalah potongan kodenya:

plt.imshow(table_image)
plt.show()
cv2.namedWindow('detecttable', cv2.WINDOW_NORMAL)

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.
Output

Ubah nilai y menjadi 300 pada potongan kode di atas, ini akan menjadi output Anda:

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Setelah tabel diekstraksi, Anda dapat menjalankan setiap crop kontur melalui mesin OCR tesseract, tutorialnya dapat ditemukan di sini. Setelah kita memiliki kotak dari setiap teks, kita dapat mengelompokkannya berdasarkan koordinat x dan y untuk mendapatkan baris dan kolom yang sesuai.

Selain itu, ada opsi untuk menggunakan PDFMiner untuk mengubah dokumen pdf Anda menjadi file HTML yang dapat kami parse menggunakan ekspresi reguler untuk akhirnya mendapatkan tabel kami. Inilah cara Anda melakukannya.


Penguraian PDFMiner dan Regex

Untuk mengekstrak informasi dari dokumen yang lebih kecil, perlu waktu untuk mengonfigurasi model pembelajaran mendalam atau menulis algoritme visi komputer. Sebagai gantinya, kita dapat menggunakan ekspresi reguler di Python untuk ekstrak teks dari dokumen PDF. Juga, ingat bahwa teknik ini tidak bekerja untuk gambar. Kami hanya dapat menggunakan ini untuk mengekstrak informasi dari file HTML atau dokumen PDF. Ini karena, saat Anda menggunakan ekspresi reguler, Anda harus mencocokkan konten dengan sumber dan mengekstrak informasi. Dengan gambar, Anda tidak akan dapat mencocokkan teks, dan ekspresi reguler akan gagal. Sekarang mari kita bekerja dengan dokumen PDF sederhana dan mengekstrak informasi dari tabel di dalamnya. Di bawah ini adalah gambar:

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Pada langkah pertama, kami memuat PDF ke dalam program kami. Setelah selesai, kami mengonversi PDF ke HTML sehingga kami dapat langsung menggunakan ekspresi reguler dan dengan demikian, mengekstrak konten dari tabel. Untuk ini, modul yang kami gunakan adalah penambang pdf. Ini membantu membaca konten dari PDF dan mengubahnya menjadi file HTML.

Di bawah ini adalah potongan kodenya:

from pdfminer.pdfinterp import PDFResourceManager from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.converter import HTMLConverter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from cStringIO import StringIO
import re def convert_pdf_to_html(path): rsrcmgr = PDFResourceManager() retstr = StringIO() codec = 'utf-8' laparams = LAParams() device = HTMLConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) fp = file(path, 'rb') interpreter = PDFPageInterpreter(rsrcmgr, device) password = "" maxpages = 0 #is for all caching = True pagenos=set() for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages,password=password,caching=caching, check_extractable=True): interpreter.process_page(page) fp.close() device.close() str = retstr.getvalue() retstr.close() return str

Kredit Kode: semangat

Kami mengimpor banyak modul termasuk Regular Expression dan perpustakaan terkait PDF. Dalam metode konversi_pdf_to_html, kami mengirimkan jalur file PDF yang perlu dikonversi ke file HTML. Output dari metode ini akan menjadi string HTML seperti yang ditunjukkan di bawah ini:

'<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">Changing Echoesn<br>7632 Pool Station Roadn<br>Angels Camp, CA 95222n<br>(209) 785-3667n<br>Intake: (800) 633-7066n<br>SA </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> TX DT BU </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> RS RL OP PH </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> CO CJ n<br></span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> SF PI </span><span style="font-family: GDBVNW+Wingdings-Regular; font-size:11px">s</span><span style="font-family: UQGGBU+GaramondPremrPro-LtDisp; font-size:12px"> AH SPn<br></span></div>' 

Ekspresi reguler adalah salah satu teknik pemrograman paling rumit dan paling keren yang digunakan untuk pencocokan pola. Ini banyak digunakan di beberapa aplikasi, katakanlah, untuk pemformatan kode, web scraping, dan tujuan validasi. Sebelum kita mulai mengekstrak konten dari tabel HTML kita, mari kita pelajari beberapa hal tentang ekspresi reguler dengan cepat.

Pustaka ini menyediakan berbagai metode bawaan untuk mencocokkan dan mencari pola. Berikut ini beberapa di antaranya:

import re # Match the pattern in the string
re.match(pattern, string) # Search for a pattern in a string
re.search(pattern, string) # Finds all the pattern in a string
re.findall(pattern, string) # Splits string based on the occurrence of pattern
re.split(pattern, string, [maxsplit=0] # Search for the pattern and replace it with the given string
re.sub(pattern, replace, string)

Karakter / Ekspresi yang biasanya Anda lihat dalam ekspresi reguler meliputi:

  • [AZ] - huruf kapital apa saja
  • d - angka
  • w - karakter kata (huruf, angka, dan garis bawah)
  • s - spasi putih (spasi, tab, dan spasi putih)

Sekarang untuk mengetahui pola tertentu dalam HTML, kami menggunakan ekspresi reguler dan kemudian menulis pola yang sesuai. Pertama-tama kami membagi data sedemikian rupa sehingga potongan alamat dipisahkan menjadi blok terpisah sesuai dengan nama program (ANGELS CAMP, APPLE VALLEY, dll.):

pattern = '(?<=<span style="font-family: XZVLBD+GaramondPremrPro-LtDisp; font-size:12px">)(.*?)(?=<br></span></div>)' for programinfo in re.finditer(pattern, biginputstring, re.DOTALL): do looping stuff…

Kemudian, kami menemukan nama program, kota, negara bagian, dan kode pos yang selalu mengikuti pola yang sama (teks, koma, huruf kapital dua digit, 5 angka (atau 5 angka tanda hubung empat angka) - ini ada di file PDF yang kami anggap sebagai masukan). Periksa cuplikan kode berikut:

# To identify the program name
programname = re.search('^(?!<br>).*(?=\n)', programinfo.group(0))
# since some programs have odd characters in the name we need to escape
programname = re.escape(programname) citystatezip =re.search('(?<=>)([a-zA-Zs]+, [a-zA-Zs]{2} d{5,10})(?=\n)', programinfo.group(0))
mainphone =re.search('(?<=<br>)(d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)', programinfo.group(0))
altphones = re.findall('(?<=<br>)[a-zA-Zs]+: (d{3}) d{3}-d{4}x{0,1}d{0,}(?=\n)(?=\n)', programinfo.group(0)) 

Ini adalah contoh sederhana yang menjelaskan cara kami mengekstrak informasi dari file PDF menggunakan ekspresi reguler. Setelah mengekstrak semua informasi yang diperlukan, kami memuat data ini ke dalam file CSV.

def createDirectory(instring, outpath, split_program_pattern): i = 1 with open(outpath, 'wb') as csvfile: filewriter = csv.writer(csvfile, delimiter=',' , quotechar='"', quoting=csv.QUOTE_MINIMAL) # write the header row filewriter.writerow(['programname', 'address', 'addressxtra1', 'addressxtra2', 'city', 'state', 'zip', 'phone', 'altphone', 'codes']) # cycle through the programs for programinfo in re.finditer(split_program_pattern, instring, re.DOTALL): print i i=i+1 # pull out the pieces programname = getresult(re.search('^(?!<br>).*(?=\n)', programinfo.group(0))) programname = re.escape(programname) # some facilities have odd characters in the name

Jadi ini adalah contoh sederhana yang menjelaskan bagaimana Anda dapat memasukkan HTML yang telah diekstrak ke dalam file CSV. Pertama kami membuat file CSV, menemukan semua atribut kami, dan mendorong satu per satu ke kolomnya masing-masing. Berikut tangkapan layarnya:

Deteksi Tabel & Ekstraksi Informasi menggunakan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.
Tangkapan layar dari Item yang diekstrak dari tabel menggunakan Ekspresi Reguler

Kadang-kadang, teknik yang dibahas di atas tampak rumit dan menimbulkan tantangan bagi programmer jika semua tabel bersarang dan kompleks. Di sini, memilih model CV atau Deep learning menghemat banyak waktu. Mari kita lihat kekurangan dan tantangan apa yang menghalangi penggunaan metode tradisional ini.


Tantangan dengan Metode Tradisional

Di bagian ini, kita akan belajar secara mendalam mengenai di mana proses ekstraksi tabel mungkin gagal, dan lebih jauh memahami cara-cara untuk mengatasi hambatan ini menggunakan metode modern yang lahir dari Deep Learning. Proses ini bukanlah proses yang mudah. Alasannya karena tabel biasanya tidak selalu konstan. Mereka memiliki struktur yang berbeda untuk merepresentasikan data, dan data di dalam tabel bisa multi-bahasa dengan berbagai gaya pemformatan (gaya font, warna, ukuran font, dan tinggi). Karenanya untuk membangun model yang kuat, seseorang harus menyadari semua tantangan ini. Biasanya, proses ini mencakup tiga langkah: deteksi tabel, ekstraksi, dan konversi. Mari kita identifikasi masalah di semua fase, satu per satu:


Deteksi Tabel

Dalam fase ini, kami mengidentifikasi di mana tepatnya tabel ada dalam input yang diberikan. Input dapat dalam format apa pun, seperti Gambar, dokumen PDF / Word, dan terkadang video. Kami menggunakan teknik dan algoritma yang berbeda untuk mendeteksi tabel, baik dengan garis atau koordinat. Dalam beberapa kasus, kami mungkin menemukan tabel tanpa batas sama sekali, di mana kami perlu memilih metode yang berbeda. Selain itu, berikut beberapa tantangan lainnya:

  • Transformasi Gambar: Transformasi gambar adalah langkah utama dalam mendeteksi label. Ini termasuk meningkatkan data dan batas yang ada di tabel. Kita perlu memilih algoritma preprocessing yang tepat berdasarkan data yang disajikan dalam tabel. Misalnya, ketika kita bekerja dengan gambar, kita perlu menerapkan detektor thresholding dan edge. Langkah transformasi ini membantu kami menemukan konten dengan lebih tepat. Dalam beberapa kasus, kontur mungkin salah dan algoritme gagal menyempurnakan gambar. Oleh karena itu, memilih langkah transformasi gambar yang tepat dan preprocessing sangat penting.
  • Kualitas gambar: Saat kami memindai tabel untuk ekstraksi informasi, kami perlu memastikan bahwa dokumen-dokumen ini dipindai di lingkungan yang lebih cerah yang memastikan gambar berkualitas baik. Ketika kondisi pencahayaan buruk, algoritma CV dan DL mungkin gagal mendeteksi tabel dalam masukan yang diberikan. Jika kita menggunakan pembelajaran mendalam, kita perlu memastikan set data konsisten dan memiliki kumpulan gambar standar yang baik. Jika kita menggunakan model ini pada tabel yang ada di kertas bekas kusut, maka pertama-tama kita perlu memproses terlebih dahulu dan menghilangkan noise pada gambar tersebut.
  • Variasi Tata Letak dan Template Struktural: Semua tabel tidak unik. Satu sel dapat menjangkau beberapa sel, baik secara vertikal maupun horizontal, dan kombinasi sel rentang dapat membuat banyak variasi struktural. Selain itu, beberapa fitur teks ditekankan, dan garis tabel dapat memengaruhi cara struktur tabel dipahami. Misalnya, garis horizontal atau teks tebal mungkin menekankan beberapa header tabel. Struktur tabel secara visual mendefinisikan hubungan antar sel. Hubungan visual dalam tabel menyulitkan untuk menemukan sel terkait secara komputasi dan mengekstrak informasi darinya. Oleh karena itu, penting untuk membangun algoritme yang kuat dalam menangani struktur tabel yang berbeda.
  • Padding Sel, Margin, Batas: Ini adalah hal penting dari setiap tabel - paddings, margin, dan border tidak akan selalu sama. Beberapa tabel memiliki banyak bantalan di dalam sel, dan beberapa tidak. Menggunakan gambar berkualitas baik dan langkah-langkah preprocessing akan membantu proses ekstraksi tabel berjalan dengan lancar.

Ekstraksi Tabel

Ini adalah fase di mana informasi diekstraksi setelah tabel diidentifikasi. Ada banyak faktor terkait bagaimana konten disusun dan konten apa yang ada di tabel. Oleh karena itu, penting untuk memahami semua tantangan sebelum membuat algoritme.

  • Konten Padat: Isi sel dapat berupa numerik atau tekstual. Namun, konten tekstualnya biasanya padat, berisi potongan teks pendek yang ambigu dengan penggunaan akronim dan singkatan. Untuk memahami tabel, teks perlu disederhanakan, dan singkatan serta akronim perlu diperluas.
  • Font dan Format yang Berbeda: Font biasanya memiliki gaya, warna, dan tinggi yang berbeda. Kami perlu memastikan bahwa ini generik dan mudah diidentifikasi. Beberapa jenis font, terutama yang termasuk dalam kursif atau tulisan tangan, agak sulit untuk diekstrak. Karenanya, menggunakan font yang baik dan format yang tepat membantu algoritme untuk mengidentifikasi informasi dengan lebih akurat.
  • Beberapa Halaman PDF dan Hentian Halaman: Baris teks dalam tabel sensitif terhadap ambang batas yang telah ditentukan sebelumnya. Juga dengan merentang sel di beberapa halaman, menjadi sulit untuk mengidentifikasi tabel. Pada halaman multi-tabel, sulit untuk membedakan tabel yang berbeda satu sama lain. Tabel yang jarang dan tidak teratur sulit untuk dikerjakan. Oleh karena itu, garis aturan grafis dan tata letak konten harus digunakan bersama sebagai sumber penting untuk melihat wilayah tabel.

Tabel Konversi

Tahap terakhir termasuk mengubah informasi yang diekstrak dari tabel menjadi menyusunnya sebagai dokumen yang dapat diedit, baik di excel atau menggunakan perangkat lunak lain. Mari belajar tentang beberapa tantangan.

  • Atur Tata Letak: Ketika berbagai format tabel diekstrak dari dokumen yang dipindai, kita perlu memiliki tata letak tabel yang tepat untuk memasukkan konten. Terkadang, algoritme gagal mengekstrak informasi dari sel. Karenanya, mendesain tata letak yang tepat juga sama pentingnya.
  • Ragam pola penyajian nilai: Nilai dalam sel dapat disajikan menggunakan pola representasi sintaksis yang berbeda. Pertimbangkan teks dalam tabel menjadi 6 ± 2. Algoritme mungkin gagal untuk mengubah informasi tertentu. Karenanya ekstraksi nilai numerik membutuhkan pengetahuan tentang kemungkinan pola presentasi.
  • Representasi untuk visualisasi: Sebagian besar format representasi untuk tabel, seperti bahasa markup di mana tabel dapat dijelaskan, dirancang untuk visualisasi. Oleh karena itu, sulit untuk memproses tabel secara otomatis.

Ini adalah tantangan yang kami hadapi selama proses ekstraksi tabel menggunakan teknik tradisional. Sekarang mari kita lihat cara mengatasinya dengan bantuan Deep Learning. Itu sedang diteliti secara luas di berbagai sektor.



Perlu mendigitalkan dokumen, kwitansi atau faktur tapi terlalu malas untuk membuat kode? Pergi ke Nanonet dan bangun model OCR gratis!


Kesimpulan

Pada artikel ini, kami telah meninjau secara rinci tentang ekstraksi informasi dari tabel. Kami telah melihat bagaimana teknologi modern seperti Deep Learning dan Computer Vision dapat mengotomatiskan tugas-tugas biasa dengan membangun algoritme yang kuat dalam menghasilkan hasil yang akurat. Di bagian awal, kita telah mempelajari tentang peran ekstraksi tabel dalam memfasilitasi tugas individu, industri, dan sektor bisnis, dan juga meninjau kasus penggunaan yang mengelaborasi ekstraksi tabel dari PDF/HTML, otomatisasi formulir, faktur Otomatisasi, dll. Kami telah mengkodekan algoritma menggunakan Computer Vision untuk menemukan posisi informasi dalam tabel menggunakan teknik thresholding, dilation, dan contour detection. Kami telah membahas tantangan yang mungkin kami hadapi selama proses deteksi, ekstraksi, dan konversi tabel saat menggunakan teknik konvensional, dan menyatakan seberapa mendalam pembelajaran dapat membantu kami dalam mengatasi masalah ini. Terakhir, kami telah meninjau beberapa arsitektur jaringan saraf dan memahami cara mereka mencapai ekstraksi tabel berdasarkan data pelatihan yang diberikan.



Update:
Menambahkan lebih banyak bahan bacaan tentang berbagai pendekatan dalam deteksi tabel dan ekstraksi informasi menggunakan pembelajaran mendalam.

Stempel Waktu:

Lebih dari AI & Pembelajaran Mesin