Mengotomatiskan Digitalisasi Tanda Terima dengan OCR dan Deep Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Ingin mengotomatiskan ekstraksi data dari tanda terima? Lihat pra-terlatih Nanonets Terima OCR or bangun sendiri OCR tanda terima yang disesuaikan. Anda juga bisa jadwalkan demo untuk mempelajari lebih lanjut tentang kasus penggunaan AP kami!


Terima OCR atau digitalisasi tanda terima menjawab tantangan untuk mengekstrak informasi secara otomatis dari tanda terima. Dalam artikel ini, saya membahas teori di balik digitalisasi tanda terima dan mengimplementasikan pipa end-to-end menggunakan OpenCV dan tesseract. Saya juga mengulas beberapa makalah penting yang melakukan Digitalisasi Kwitansi menggunakan Deep Learning.

Apa itu Digitalisasi Kwitansi?

Kwitansi membawa informasi yang diperlukan agar perdagangan terjadi di antara perusahaan dan sebagian besar di atas kertas atau dalam format semi-terstruktur seperti PDF dan gambar kertas / hard copy. Untuk mengelola informasi ini secara efektif, perusahaan mengekstrak dan menyimpan informasi yang relevan yang terkandung dalam dokumen-dokumen ini. Secara tradisional ini telah dicapai dengan secara manual mengekstraksi informasi yang relevan dan memasukkannya ke dalam database yang merupakan proses padat karya dan mahal.

Digitalisasi tanda terima menjawab tantangan untuk mengekstrak informasi secara otomatis dari tanda terima.

Mengekstraksi informasi kunci dari tanda terima dan mengonversinya menjadi dokumen terstruktur dapat melayani banyak aplikasi dan layanan, seperti pengarsipan yang efisien, pengindeksan cepat, dan analisis dokumen. Mereka memainkan peran penting dalam merampingkan proses intensif dokumen dan otomatisasi kantor di banyak bidang keuangan, akuntansi, dan perpajakan.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Butuh yang tangguh menerima OCR or pemindai tanda terima untuk mengekstrak data dari tanda terima? Lihat Nanonet tanda terima OCR API!


Siapa yang akan menganggap Digitalisasi Penerimaan berguna?

Berikut adalah beberapa area di mana Digitalisasi Kwitansi dapat memberikan dampak besar:

Hutang dan otomatisasi piutang dagang

Menghitung Hutang Usaha (AP) dan Piutang Usaha (AR) secara manual mahal, memakan waktu dan dapat menyebabkan kebingungan antara manajer, pelanggan dan vendor. Dengan digitalisasi, perusahaan dapat menghilangkan kekurangan ini dan mendapatkan lebih banyak keuntungan - Peningkatan Transparansi, Analisis Data, Peningkatan modal kerja, dan pelacakan yang lebih mudah.

Optimalisasi rantai pasokan

Rantai pasokan adalah tulang punggung dari banyak perusahaan yang berfungsi dengan baik. Mengelola tugas, arus informasi, dan aliran produk adalah kunci untuk memastikan kontrol penuh atas pasokan dan produksi. Ini penting jika organisasi ingin memenuhi waktu pengiriman dan mengendalikan biaya produksi.

Perusahaan-perusahaan yang benar-benar berkembang akhir-akhir ini memiliki kesamaan yang signifikan: rantai pasokan digital. 89% perusahaan dengan rantai pasokan digital menerima pesanan sempurna dari pemasok internasional, memastikan pengiriman tepat waktu. Salah satu elemen kunci untuk mewujudkan Supply Chain 4.0 digital generasi berikutnya, adalah mengotomatisasi pengambilan dan pengelolaan data dan banyak dari data ini adalah bentuk kuitansi dan faktur. Masuknya tanda terima secara manual bertindak sebagai hambatan di seluruh rantai pasokan dan menyebabkan penundaan yang tidak perlu. Jika pemrosesan tanda terima ini didigitalkan, ini dapat menghasilkan keuntungan besar dalam waktu dan efisiensi.


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


Mengapa ini merupakan masalah yang sulit?

Digitalisasi kuitansi sulit karena kuitansi memiliki banyak variasi dan terkadang berkualitas rendah. Tanda terima pemindaian juga memasukkan beberapa artefak ke dalam salinan digital kami. Artefak ini menimbulkan banyak tantangan keterbacaan.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Berikut adalah daftar dari beberapa hal yang membuatnya sulit untuk dipecahkan

  • Teks tulisan tangan
  • Font kecil
  • Gambar berisik
  • Gambar pudar
  • Gerakan dan guncangan kamera
  • Tanda air
  • keriput
  • Teks pudar

Pipa Digitalisasi Tanda Terima Tradisional

Jalur pipa tipikal untuk jenis pendekatan end-to-end ini meliputi:

  • Pemrosesan awal
  • Character Recognition optik
  • Ekstraksi Informasi
  • Pembuangan data
Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Mari selami lebih dalam ke setiap bagian dari pipa. Langkah pertama dari proses ini adalah Preprocessing.

Pemrosesan awal

Sebagian besar tanda terima yang dipindai berisik dan memiliki artefak sehingga agar OCR dan sistem ekstraksi informasi dapat bekerja dengan baik, penerimaan tersebut perlu diproses terlebih dahulu. Metode preprocessing yang umum meliputi - Greyscaling, Thresholding (Binarization) dan penghapusan Noise.

Grayscaling hanya mengubah gambar RGB menjadi gambar skala abu-abu.

Penghapusan kebisingan biasanya melibatkan menghilangkan kebisingan Garam dan Merica atau kebisingan Gaussian.

Kebanyakan mesin OCR bekerja dengan baik pada gambar Hitam Putih. Ini dapat dicapai dengan thresholding, yang merupakan penetapan nilai piksel dalam kaitannya dengan nilai ambang yang diberikan. Setiap nilai piksel dibandingkan dengan nilai ambang batas. Jika nilai piksel lebih kecil dari ambang batas, maka ditetapkan ke 0, jika tidak, ditetapkan ke nilai maksimum (umumnya 255).

OpenCV menyediakan berbagai opsi ambang batas โ€“ Ambang Batas Sederhana, Ambang Batas Adaptif

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Character Recognition optik

Langkah selanjutnya dalam pipeline adalah OCR. Ini digunakan untuk membaca teks dari gambar seperti dokumen yang dipindai atau gambar. Teknologi ini digunakan untuk mengkonversi, hampir semua jenis gambar yang mengandung teks tertulis (diketik, tulisan tangan atau dicetak) menjadi data teks yang dapat dibaca mesin. OCR melibatkan 2 langkah - deteksi teks dan pengenalan teks.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Ada sejumlah pendekatan untuk OCR. Pendekatan Visi komputer konvensional adalah untuk

  • Menggunakan filter untuk memisahkan karakter dari latar belakang
  • Terapkan deteksi kontur untuk mengenali karakter yang difilter
  • Gunakan klasifikasi penyihir untuk mengidentifikasi karakter

Menerapkan filter dan klasifikasi gambar cukup mudah, (pikirkan Klasifikasi MNIST menggunakan SVN), tetapi pencocokan kontur adalah masalah yang sangat sulit dan membutuhkan banyak upaya manual dan tidak dapat digeneralisasikan.

Berikutnya adalah pendekatan Pembelajaran Mendalam. Deep Learning menggeneralisasi dengan sangat baik. Salah satu pendekatan paling populer untuk deteksi teks adalah EAST. EAST (Detektor teks adegan akurat yang efisien) adalah pendekatan sederhana namun andal untuk deteksi teks. Jaringan EAST sebenarnya adalah versi dari U-Net yang terkenal, yang bagus untuk mendeteksi fitur dengan ukuran berbeda.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

CRNN dan STN-OCR (Spatial Transformer Networks) adalah makalah populer lainnya yang melakukan OCR.

Ekstraksi Informasi

Pendekatan yang paling umum untuk masalah Ekstraksi Informasi adalah berdasarkan aturan, di mana aturan dituliskan setelah OCR untuk mengekstrak informasi yang diperlukan. Ini adalah pendekatan yang kuat dan akurat, tetapi mengharuskan Anda untuk menulis aturan atau templat baru untuk jenis dokumen baru.

Beberapa aturan berbasis faktur sistem analisis ada dalam literatur.

Metode berbasis aturan sangat bergantung pada aturan templat yang telah ditentukan untuk mengekstrak informasi dari tata letak faktur tertentu

Salah satu pendekatan yang menjadi sangat umum dalam beberapa tahun terakhir adalah menggunakan kerangka kerja Deteksi Objek standar seperti YOLO, Faster R-CNN untuk mengenali bidang. Jadi, alih-alih deteksi teks murni, pengenalan bidang dan deteksi teks dilakukan secara bersamaan. Ini membuat pipeline lebih kecil (Deteksi Teks โ†’ Pengenalan โ†’ Ekstraksi ke Deteksi โ†’ Pengenalan). Tidak perlu menulis aturan apa pun karena detektor objek belajar mengenali bidang ini.

Pembuangan data

Setelah Anda mengekstraksi informasi Anda, dump data dapat dilakukan sesuai dengan kasus penggunaan kami. Seringkali format JSON untuk menyimpan informasi bidang nyaman. File JSON ini dapat dengan mudah dikonversi menjadi file XML, lembar Excel, file CSV atau file plaintext tergantung pada siapa yang ingin bekerja dengan data dan bagaimana.

Digitalisasi Tanda Terima menggunakan tesseract

Sekarang kami memiliki gagasan tentang saluran pipa, mari kita terapkan pada contoh penerimaan. Ini adalah tanda terima yang akan kami tangani. Tujuan kami di akhir ini adalah mengekstraksi nama Restoran, Barang yang dibeli dengan jumlah dan biaya, tanggal pembelian, dan totalnya.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Pemrosesan awal

Karena tanda terima kami sudah dalam skala abu-abu dan tidak ada banyak suara, saya hanya akan melakukan thresholding dengan menerapkan ambang batas 210. Anda dapat mengubah nilai untuk mendapatkan output yang tepat. Terlalu sedikit dan Anda akan kehilangan banyak hal. Terlalu dekat dengan 255 akan membuat semuanya hitam.

Kita harus menginstal OpenCV terlebih dahulu.

pip install opencv-python

Berikut kode untuk thresholding.

import cv2
import numpy as np
from matplotlib import pyplot as plt # Read the image
img = cv2.imread('receipt.jpg',0)
# Simple thresholding
ret,thresh1 = cv2.threshold(img,210,255,cv2.THRESH_BINARY)
cv2.imshow(thresh1,โ€™grayโ€™)

Seperti inilah hasilnya.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Deteksi Teks

Untuk deteksi teks saya akan menggunakan perpustakaan open-source yang disebut tesseract. Ini adalah perpustakaan OCR definitif dan telah dikembangkan oleh Google sejak 2006. Rilis terbaru Tesseract (v4) mendukung OCR berbasis pembelajaran yang mendalam yang secara signifikan lebih akurat. Mesin OCR yang mendasarinya sendiri menggunakan jaringan Long Short-Term Memory (LSTM).

Pertama mari kita instal versi terbaru Tesseract.

Untuk ubuntu

sudo apt install tesseract-ocr

Untuk macOS

brew install tesseract --HEAD

Untuk windows, Anda dapat mendownload binari dari ini halaman

Verifikasi versi tesseract Anda.

tesseract -v

Keluaran -

tesseract 4.0.0-beta.3
leptonica-1.76.0
libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11
Found AVX512BW
Found AVX512F
Found AVX2
Found AVX
Found SSE

Instal ikatan Tesseract + Python Anda

Sekarang setelah kita menginstal biner Tesseract, kita sekarang perlu menginstal binding Tesseract + Python agar skrip Python kita dapat berkomunikasi dengan Tesseract. Kita juga perlu menginstal paket bahasa Jerman karena tanda terima dalam bahasa Jerman.

pip install pytesseract
sudo apt-get install tesseract-ocr-deu

Sekarang kita telah menginstal Tesseract, mari kita mulai mendeteksi kotak teks.tesseract memiliki fungsionalitas bawaan untuk mendeteksi kotak teks.

import pytesseract
from pytesseract import Output
import cv2 img = cv2.imread('receipt.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
n_boxes = len(d['level'])
for i in range(n_boxes): (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.imshow(img,'img')

Inilah output dari kode deteksi teks.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Pengenalan Teks

Kami akan Tesseract untuk melakukan OCR. Tesseract 4 menggunakan pendekatan pembelajaran mendalam yang berkinerja lebih baik secara signifikan daripada kebanyakan implementasi open-source lainnya.

Ini kode pengenalan teks. Meskipun ini sangat sederhana, ada banyak hal yang perlu diperhatikan.

extracted_text = pytesseract.image_to_string(img, lang = 'deu')

Inilah output mentahnya.

'BerghotelnGrosse Scheideggn3818 GrindelwaldnFamilie R.MรผllernnRech.Nr. 4572 30.07.2007/13:29: 17nBar Tisch 7/01n2xLatte Macchiato &รค 4.50 CHF 9,00n1xGloki a 5.00 CH 5.00n1xSchweinschnitzel รค 22.00 CHF 22.00nIxChรคsspรคtz 1 a 18.50 CHF 18.50nnTotal: CHF 54.50nnIncl. 7.6% MwSt 54.50 CHF: 3.85nnEntspricht in Euro 36.33 EURnEs bediente Sie: UrsulannMwSt Nr. : 430 234nTel.: 033 853 67 16nFax.: 033 853 67 19nE-mail: grossescheidegs@b luewin. ch'

Inilah output yang diformat

Berghotel
Grosse Scheidegg
3818 Grindelwald
Familie R.Mรผller Rech.Nr. 4572 30.07.2007/13:29: 17
Bar Tisch 7/01
2xLatte Macchiato &รค 4.50 CHF 9,00
1xGloki a 5.00 CH 5.00
1xSchweinschnitzel รค 22.00 CHF 22.00
IxChรคsspรคtz 1 a 18.50 CHF 18.50 Total: CHF 54.50 Incl. 7.6% MwSt 54.50 CHF: 3.85 Entspricht in Euro 36.33 EUR
Es bediente Sie: Ursula MwSt Nr. : 430 234
Tel.: 033 853 67 16
Fax.: 033 853 67 19
E-mail: grossescheidegs@b luewin. ch

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


Ekstraksi Informasi

Seperti yang telah saya sebutkan sebelumnya cara paling umum untuk mengekstraksi informasi adalah dengan pendekatan berbasis aturan.

Semua tanda terima dari hotel ini akan mengikuti struktur tetap dan informasi muncul di jalur yang berbeda. Ini tercermin dalam output OCR di mana baris baru diwakili oleh 'n'. Dengan menggunakan ini mari kita menulis seperangkat aturan untuk mengekstrak informasi. Rangkaian aturan ini dapat diterapkan pada setiap tanda terima dari hotel ini karena mereka akan mengikuti format yang sama.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Saya akan mengekstraksi nama Restoran, tanggal transaksi, barang yang dibeli, jumlah mereka, total biaya per item dan jumlah total menggunakan perintah python sederhana dan ekspresi reguler.

Ini adalah kamus tempat saya akan menyimpan informasi yang diekstrak.

receipt _ocr = {}

Langkah pertama adalah mengekstrak nama Restoran. Lokasi nama restoran akan konstan di semua tanda terima dan itu ada di 2 baris pertama. Mari gunakan ini untuk membuat aturan.

splits = extracted_text.splitlines()
restaurant_name = splits[0] + '' + splits[1]

Selanjutnya, kami mengekstrak tanggal transaksi. Tanggal regex cukup mudah.


import re
# regex for date. The pattern in the receipt is in 30.07.2007 in DD:MM:YYYY date_pattern = r'(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)dd'
date = re.search(date_pattern, extracted_text).group()
receipt_ocr['date'] = date
print(date)

Keluaran -

โ€˜30.10.2007โ€™

Selanjutnya kami mengekstrak semua informasi yang terkait dengan barang dan biaya.

Item berisi CHF yang merupakan franc swiss. Mari kita mendeteksi semua kejadian CHF. Sekarang kita dapat mendeteksi garis dengan mengenali karakter antara 2 n dan mengandung CHF. Saya mendeteksi total di sini juga.

# get lines with chf
lines_with_chf = []
for line in splits: if re.search(r'CHF',line): lines_with_chf.append(line) print(lines_with_chf)

Keluaran -

2xLatte Macchiato &รค 4.50 CHF 9,00
1xSchweinschnitzel รค 22.00 CHF 22.00
IxChรคsspรคtz 1 a 18.50 CHF 18.50
Total: CHF 54.50
Incl. 7.6% MwSt 54.50 CHF: 3.85

Jika Anda perhatikan, Tesseract melewatkan satu item karena mendeteksi CH bukan CHF. Saya akan membahas tantangan dalam sistem OCR tradisional di bagian selanjutnya.

# get items, total, ignore Incl
items = []
for line in lines_with_chf: print(line) if re.search(r'Incl',line): continue if re.search(r'Total', line): total = line else: items.append(line) # Get Name, quantity and cost all_items = {}
for item in items: details = item.split() quantity_name = details[0] quantity = quantity_name.split('x')[0] name = quantity_name.split('x')[1] cost = details[-1] all_items[name] = {'quantity':quantity, 'cost':cost} total = total.split('CHF')[-1] # Store the results in the dict
receipt_ocr['items'] = all_items
receipt_ocr[โ€˜totalโ€™] = total import json receipt_json = json.dumps(receipt_ocr)
print(receipt_json)

Mencetak keluaran JSON kami -

{'date': '30.07.2007', 'items': {'Chรคsspรคtz': {'cost': '18.50', 'quantity': 'I'}, 'Latte': {'cost': '9,00', 'quantity': '2'}, 'Schweinschnitzel': {'cost': '22.00', 'quantity': '1'}}, 'total': ' 54.50'}

Semua informasi kunci telah diekstraksi dan dibuang ke rece_json ..

Masalah dengan pendekatan konvensional

Meskipun kami mengekstraksi informasinya, jalur pipa di atas melewatkan beberapa hal dan tidak optimal. Untuk setiap kwitansi baru kita perlu menulis seperangkat aturan baru dan karenanya tidak dapat diskalakan.

Mungkin ada banyak variasi dalam Tata Letak, ukuran font dan font, dokumen tulisan tangan dll. Perbedaan dalam tata letak akan memengaruhi pendekatan berbasis aturan dan ini perlu diperhitungkan, yang menjadi sangat membosankan. Perbedaan dalam font dan ukuran font membuatnya sulit untuk mengenali dan mengekstrak informasi.

Mengapa pipeline Deep Learning end-to-end lebih baik?

Salah satu masalah terbesar dengan pendekatan standar adalah kurangnya generalisasi. Pendekatan berdasarkan aturan tidak dapat digeneralisasi dan aturan baru perlu ditulis untuk templat baru. Juga setiap perubahan atau variasi dalam templat yang ada perlu dipertanggungjawabkan juga.

Pendekatan Deep Learning akan dapat mempelajari aturan-aturan ini, dan akan dapat menggeneralisasi seluruh tata letak yang berbeda dengan mudah, asalkan kita memilikinya dalam set data pelatihan kami.

Pembelajaran yang mendalam dan Ekstraksi Informasi

Di sini saya meninjau beberapa makalah yang menggunakan pendekatan Deep Learning end-to-end.

MANIS

CUTIE: Belajar Memahami Dokumen dengan Extractor Universal Text Information Konvolusional

Makalah ini mengusulkan metode ekstraksi informasi kunci berbasis pembelajaran dengan kebutuhan sumber daya manusia yang terbatas. Ini menggabungkan informasi dari makna semantik dan distribusi spasial teks dalam dokumen. Model yang diusulkan mereka, Konvolusional Universal Text Information Extractor (CUTIE), menerapkan jaringan saraf convolutional pada teks grid di mana teks tertanam sebagai fitur dengan konotasi semantik.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Model yang diusulkan, menangani masalah ekstraksi informasi kunci oleh

  • Pertama membuat teks grid dengan usulan metode pemetaan posisi grid. Untuk menghasilkan data grid untuk jaringan saraf convolutional, gambar dokumen yang dipindai diproses oleh mesin OCR untuk memperoleh teks dan posisi absolut / relatifnya. Teks dipetakan dari gambar dokumen yang dipindai asli ke target grid, sehingga grid dipetakan mempertahankan hubungan spasial asli antara teks namun lebih cocok untuk digunakan sebagai input untuk jaringan saraf convolutional.
  • Kemudian model CUTIE diterapkan pada teks grid. Informasi semantik yang kaya dikodekan dari teks-teks grid pada tahap paling awal dari jaringan saraf convolutional dengan lapisan kata embedding.

CUTIE memungkinkan untuk secara simultan melihat informasi semantik dan informasi spasial dari teks-teks dalam gambar dokumen yang dipindai dan dapat mencapai hasil seni yang baru untuk ekstraksi informasi utama.

Model CUTIE

Mereka memiliki 2 model CUTIE-A dan CUTIE-B. CUTIE-A yang diusulkan adalah jaringan saraf konvolusional berkapasitas tinggi yang memadukan fitur multi-resolusi tanpa kehilangan fitur resolusi tinggi. CUTIE-B adalah jaringan konvolusional dengan konvolusi rumit untuk memperbesar bidang pandang dan modul Atrous Spatial Pyramid Pooling (ASPP) untuk menangkap konteks multi-skala. Baik CUTIE-A dan CUITE-B melakukan proses pengodean makna semantik dengan kata-kata yang melekat pada tahap paling awal.

Tugas CUTIE memiliki kemiripan dengan tugas segmentasi semantik. Kotak yang dipetakan berisi titik data yang tersebar (token teks) berbeda dengan gambar yang disebarkan dengan piksel. Teks-teks kunci diposisikan posisikan grid baik dekat atau jauh satu sama lain karena berbagai jenis tata letak dokumen. Oleh karena itu, menggabungkan kemampuan pemrosesan konteks multi-skala menguntungkan jaringan.

Dataset

Metode yang diusulkan dievaluasi pada tantangan membaca kuat ICDAR 2019 pada dataset SROIE dan juga pada dataset yang dibangun sendiri dengan 3 jenis gambar dokumen yang dipindai.

Grafik Kumpulan data SROIE ICDAR 2019 digunakan yang berisi 1000 gambar tanda terima yang dipindai. Setiap gambar tanda terima berisi sekitar empat bidang teks utama, seperti nama barang, harga satuan, tanggal, dan biaya total. Teks yang dianotasi dalam kumpulan data sebagian besar terdiri dari angka dan karakter bahasa Inggris.

Dataset yang dibangun sendiri berisi 4, 484 dokumen tanda terima yang dipindai Spanyol yang dianotasi, termasuk tanda terima taksi, tanda makan hiburan (ME), dan tanda terima hotel, dengan 9 kelas informasi utama yang berbeda.

Hasil

Kinerja keseluruhan dievaluasi menggunakan presisi rata-rata (AP - dan diukur dalam hal akurasi per kelas di 9 kelas,) dan presisi rata-rata lunak (softAP) di mana prediksi kelas informasi utama ditentukan sebagai benar jika kebenaran dasar positif diprediksi dengan benar meskipun beberapa positif palsu disertakan dalam prediksi akhir. Analisis gabungan AP dan softAP memberikan pemahaman yang lebih baik tentang kinerja model.

Anda dapat melihat hasilnya pada tabel di bawah ini.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

GCN untuk VRD

Konvolusi Grafik untuk Ekstraksi Informasi Multimoda dari Dokumen yang Secara Visual Kaya

Makalah ini memperkenalkan model berbasis konvolusi grafik untuk menggabungkan informasi tekstual dan visual yang disajikan dalam dokumen Visually Rich (VRDs). Grafik embeddings dilatih untuk merangkum konteks segmen teks dalam dokumen, dan selanjutnya dikombinasikan dengan embeddings teks untuk ekstraksi entitas.

Dalam tulisan ini mereka menyebut dokumen VRD dan saya akan tetap menggunakannya.

Setiap dokumen dimodelkan sebagai grafik segmen teks, di mana setiap segmen teks terdiri dari posisi segmen dan teks di dalamnya. Grafik terdiri dari node yang mewakili segmen teks, dan tepi yang mewakili dependensi visual, seperti bentuk dan jarak relatif, antara dua node.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Embedding grafik yang dihasilkan oleh konvolusi grafik merangkum konteks segmen teks dalam dokumen, yang selanjutnya dikombinasikan dengan embeddings teks untuk ekstraksi entitas menggunakan model BiLSTM-CRF standar.

Model

Model pertama mengkodekan setiap segmen teks dalam dokumen ke dalam embedding grafik, menggunakan beberapa lapisan konvolusi grafik. Penyematan mewakili informasi dalam segmen teks yang diberikan konteks visual dan tekstualnya. Konteks visual adalah tata letak dokumen dan posisi relatif dari segmen individu ke segmen lain. Konteks teks adalah kumpulan informasi teks dalam dokumen secara keseluruhan; Model belajar untuk menetapkan bobot lebih tinggi pada teks dari segmen tetangga. Kemudian kertas menggabungkan grafik embeddings dengan embeddings teks dan menerapkan model BiLSTM-CRF standar untuk ekstraksi entitas.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Dataset

Dua dataset dunia nyata digunakan. Mereka adalah ValueAdded Tax Faktur (VATI) dan International Purchase Receipts (IPR). VATI terdiri dari 3000 gambar yang diunggah pengguna dan memiliki 16 entitas yang tepat. Contoh entitas adalah nama pembeli / penjual, tanggal dan jumlah pajak. Faktur dalam bahasa Cina, dan memiliki templat tetap karena merupakan faktur standar nasional.

IPR adalah kumpulan data dari 1500 dokumen tanda terima yang dipindai dalam bahasa Inggris yang memiliki 4 entitas yang harus disetel (Nomor Faktur, Nama Vendor, Nama Pembayar, dan Jumlah Total). Ada 146 templat untuk tanda terima.

Hasil

Skor F1 digunakan untuk mengevaluasi kinerja model dalam semua percobaan. Tabel di bawah ini memiliki hasil pada set data 2.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Baseline I menerapkan BiLSTM-CRF untuk setiap segmen teks, di mana setiap segmen teks adalah kalimat tersendiri.

Baseline II menerapkan model penandaan ke segmen teks gabungan.

Lebih cepat-RCNN + AED

Pendekatan Pembelajaran Mendalam untuk Pengakuan Tanda Terima

Makalah ini menyajikan pendekatan pembelajaran yang mendalam untuk mengenali tanda terima yang dipindai. Sistem pengenalan memiliki dua modul utama: deteksi teks berdasarkan Network Proposal Text Connectionist dan pengenalan teks berdasarkan Encoder-Decoder berbasis Attention. Sistem ini mencapai 71.9% dari skor F1 untuk tugas deteksi dan pengenalan.

Deteksi teks

Struktur CTPN mirip dengan Lebih Cepat R-CNN, dengan penambahan lapisan LSTM. Model jaringan terutama terdiri dari tiga bagian: ekstraksi fitur oleh VGG16, LSTM dua arah, dan regresi kotak pembatas

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Pengenalan Teks

AED digunakan mengenali garis teks. AED memiliki dua modul utama: DenseNet untuk mengekstraksi fitur dari gambar teks dan LSTM yang dikombinasikan dengan model perhatian untuk memprediksi teks keluaran.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Dataset

Dataset dari SROIE 2019 digunakan. Mereka membagi data pelatihan menjadi pelatihan, validasi, dan pengujian dan secara acak memilih 80% dari penerimaan untuk pelatihan, 10% dari penerimaan untuk validasi, dan sisanya untuk pengujian. Menghasilkan 500 kwitansi untuk pelatihan, 63 kwitansi untuk validasi, dan 63 kwitansi untuk pengujian.

Hasil

Untuk deteksi teks, makalah ini menggunakan Tightness-aware Intersection-over-Union (TIoU) Untuk pengenalan teks, makalah ini menggunakan F1, Precision dan Recall.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Tabel I menunjukkan hasil CTPN dengan tiga kondisi: CTPN pada gambar asli; pra-pemrosesan + CTPN, pra-pemrosesan + CTPN + verifikasi OCR. Tabel 2 menunjukkan hasil jaringan AED.

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Tentu saja ada cara yang lebih mudah dan intuitif untuk melakukan ini.


Butuh yang tangguh menerima OCR untuk mengekstrak data dari tanda terima? Lihat Nanonet tanda terima OCR API!


OCR dengan Nanonets

Pembaruan #1: Kami baru saja merilis menerima OCR model yang telah dilatih sebelumnya. Buka https://app.nanonets.com dan mulai pengujian!

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

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 Anda, membuat anotasi, mengatur model untuk dilatih dan menunggu untuk mendapatkan prediksi melalui UI berbasis browser tanpa menulis satu baris kode, mengkhawatirkan GPU atau menemukan arsitektur yang tepat untuk model pembelajaran mendalam Anda. Anda juga dapat memperoleh respons JSON dari setiap prediksi untuk mengintegrasikannya dengan sistem Anda sendiri dan membangun aplikasi yang didukung mesin pembelajaran yang dibangun di atas algoritma canggih dan infrastruktur yang kuat.

Menggunakan GUI: https://app.nanonets.com/

Anda juga dapat menggunakan API Nanonets-OCR dengan mengikuti langkah-langkah di bawah ini:

Langkah 1: Mengkloning Repo, Instal dependensi

git clone https://github.com/NanoNets/nanonets-ocr-sample-python.git
cd nanonets-ocr-sample-python
sudo pip install requests tqdm

Langkah 2: Dapatkan Kunci API gratis Anda
Dapatkan Kunci API gratis Anda dari http://app.nanonets.com/#/keys

Mengotomatiskan Kwitansi Penerimaan dengan OCR dan Pembelajaran Jauh

Langkah 3: Tetapkan kunci API sebagai Variabel Lingkungan

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Langkah 4: Buat Model Baru

python ./code/create-model.py

Catatan: Ini menghasilkan MODEL_ID yang Anda butuhkan untuk langkah selanjutnya

Langkah 5: Tambahkan Id Model sebagai Variabel Lingkungan

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Catatan: Anda akan mendapatkan YOUR_MODEL_ID dari langkah sebelumnya

Langkah 6: Unggah Data Pelatihan
Data pelatihan ditemukan di images (file gambar) dan annotations (anotasi untuk file gambar)

python ./code/upload-training.py

Langkah 7: Model Kereta
Setelah Gambar diunggah, mulailah melatih Model

python ./code/train-model.py

Langkah 8: Dapatkan Status Model
Model ini membutuhkan ~ 2 jam untuk berlatih. Anda akan mendapatkan email setelah model dilatih. Sementara itu Anda memeriksa keadaan model

python ./code/model-state.py

Langkah 9: Buat Prediksi
Setelah model dilatih. Anda dapat membuat prediksi menggunakan model

python ./code/prediction.py ./images/151.jpg

Selanjutnya Membaca

Update:โ€Œ
Menambahkan lebih banyak bahan bacaan tentang kemajuan terbaru dalam mengotomatisasi digitalisasi tanda terima menggunakan OCR dan Deep Learning.

Stempel Waktu:

Lebih dari AI & Pembelajaran Mesin