Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning PlatoBlockchain Data Intelligence. Pencarian Vertikal. ai.

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Ingin melakukan OCR tulisan tangan? Blog ini adalah ikhtisar komprehensif tentang metode terbaru pengenalan tulisan tangan menggunakan pembelajaran mendalam. Kami telah meninjau penelitian dan makalah terbaru dan juga telah membangun pembaca tulisan tangan dari awal.


Nanonet API OCR memiliki banyak hal menarik gunakan kasing. Bicaralah dengan pakar AI Nanonets untuk mempelajari lebih lanjut.


Pengantar

Ukuran pasar Optical Character Recognition (OCR) diperkirakan mencapai USD 13.38 miliar pada tahun 2025 dengan pertumbuhan tahun ke tahun sebesar 13.7%. Pertumbuhan ini didorong oleh digitalisasi cepat proses bisnis menggunakan OCR untuk mengurangi biaya tenaga kerja mereka dan untuk menghemat jam kerja yang berharga. Meskipun OCR telah dianggap sebagai masalah yang terpecahkan, ada satu komponen kuncinya, yaitu Handwriting Recognition (Handwriting OCR) atau Handwriting Text Recognition (HTR) yang masih dianggap sebagai pernyataan masalah yang menantang. Variasi yang tinggi dalam gaya tulisan tangan di antara orang-orang dan kualitas teks tulisan tangan yang buruk dibandingkan dengan teks cetak menimbulkan rintangan yang signifikan dalam mengubahnya menjadi teks yang dapat dibaca mesin. Namun demikian, ini adalah masalah penting yang harus dipecahkan untuk berbagai industri seperti perawatan kesehatan, asuransi, dan perbankan.

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning
Sumber: - https://www.semanticscholar.org/paper/Handwriting-recognition-on-form-document-using-and-Darmatasia-Fanany/

Kemajuan terbaru dalam Pembelajaran Mendalam seperti munculnya arsitektur transformator telah mempercepat kemajuan kami dalam memecahkan pengenalan teks tulisan tangan. Mengenali teks tulisan tangan disebut Intelligent Character Recognition (ICR) karena fakta bahwa algoritme yang dibutuhkan untuk menyelesaikan ICR membutuhkan lebih banyak kecerdasan daripada menyelesaikan OCR generik.

Pada artikel ini kita akan belajar tentang tugas pengenalan teks tulisan tangan, seluk-beluknya dan bagaimana kita bisa menyelesaikannya menggunakan teknik pembelajaran mendalam.


Ingin mengekstrak data dari formulir tulisan tangan? Pergilah ke Nanonet dan mulailah membuat model OCR Tulisan Tangan secara gratis!


Tantangan dalam Pengenalan Tulisan Tangan

  1. Variabilitas besar dan ambiguitas pukulan dari orang ke orang
  2. Gaya tulisan tangan seseorang juga bervariasi dari waktu ke waktu dan tidak konsisten
  3. Kualitas dokumen / gambar sumber buruk karena degradasi seiring waktu
  4. Teks dalam dokumen cetak duduk dalam garis lurus sedangkan manusia tidak perlu menulis sebaris teks dalam garis lurus di atas kertas putih
  5. Tulisan tangan kursif membuat pemisahan dan pengenalan karakter menjadi menantang
  6. Teks dalam tulisan tangan dapat memiliki rotasi variabel ke kanan yang berbeda dengan teks tercetak yang semua teksnya tegak
  7. Mengumpulkan set data berlabel yang bagus untuk dipelajari tidaklah murah dibandingkan dengan data sintetis

Gunakan kasus

Perawatan kesehatan dan farmasi

Digitalisasi resep pasien adalah masalah utama dalam industri perawatan kesehatan / farmasi. Misalnya Roche menangani jutaan petabyte PDF medis setiap hari. Area lain di mana deteksi teks tulisan tangan memiliki pengaruh utama adalah pendaftaran pasien dan digitalisasi formulir. Dengan menambahkan pengenalan tulisan tangan ke perangkat layanan mereka, rumah sakit / farmasi dapat meningkatkan pengalaman pengguna secara signifikan

Asuransi

Industri asuransi besar menerima lebih dari 20 juta dokumen sehari dan penundaan dalam pemrosesan klaim dapat berdampak sangat buruk bagi perusahaan. Dokumen klaim dapat berisi berbagai gaya tulisan tangan dan otomasi manual murni dari pemrosesan klaim akan benar-benar memperlambat jalur pipa

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning
Sumber: - https://www.researchgate.net/figure/mages-of-handwritten-bank-cheques-from-different-countries-a-Brazilian-1-b-American_fig2_226705617

Perbankan

Orang-orang menulis cek secara teratur dan cek masih memainkan peran utama dalam sebagian besar transaksi non-tunai. Di banyak negara berkembang, prosedur pemrosesan cek saat ini mengharuskan pegawai bank untuk membaca dan secara manual memasukkan informasi yang ada pada cek dan juga memverifikasi entri seperti tanda tangan dan tanggal. Karena sejumlah besar cek harus diproses setiap hari di bank, sistem pengenalan teks tulisan tangan dapat menghemat biaya dan jam kerja manusia.

Perpustakaan Online

Sejumlah besar pengetahuan sejarah sedang didigitalkan dengan mengupload pemindaian gambar untuk akses ke seluruh dunia. Tetapi upaya ini tidak terlalu berguna sampai teks dalam gambar dapat diidentifikasi yang dapat diindeks, dipertanyakan, dan dijelajahi. Pengenalan tulisan tangan memainkan peran kunci dalam menghidupkan dokumen abad pertengahan dan abad ke-20, kartu pos, studi penelitian, dll.

metode

Metode Pengenalan Tulisan Tangan secara luas dapat diklasifikasikan menjadi dua jenis di bawah ini

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning
  1. Metode Online : - Metode online menggunakan pena / stylus digital dan memiliki akses ke informasi goresan, lokasi pena saat teks sedang ditulis seperti yang terlihat pada gambar kanan di atas. Karena mereka cenderung memiliki banyak informasi sehubungan dengan aliran teks yang sedang ditulis, mereka dapat diklasifikasikan dengan akurasi yang cukup tinggi dan demarkasi antara karakter yang berbeda dalam teks menjadi jauh lebih jelas.
  2. Metode Offline :- Metode offline melibatkan pengenalan teks setelah ditulis dan karenanya tidak akan memiliki informasi tentang goresan/arah yang terlibat selama penulisan dengan kemungkinan tambahan beberapa kebisingan latar belakang dari sumber yaitu kertas.

Di dunia nyata, tidak selalu mungkin/dapat diskalakan untuk membawa pena digital dengan sensor untuk menangkap informasi goresan dan karenanya tugas mengenali teks secara offline adalah masalah yang jauh lebih relevan. Jadi, sekarang kita akan membahas berbagai teknik untuk memecahkan masalah pengenalan teks offline.

teknik

Pendekatan awal untuk memecahkan pengenalan tulisan tangan melibatkan metode Pembelajaran Mesin seperti Hidden Markov Models (HMM), SVM, dll. Setelah teks awal diproses sebelumnya, ekstraksi fitur dilakukan untuk mengidentifikasi informasi utama seperti loop, titik belok, rasio aspek, dll. dari karakter individu. Fitur yang dihasilkan ini sekarang diumpankan ke pengklasifikasi katakanlah HMM untuk mendapatkan hasilnya. Performa model pembelajaran mesin cukup terbatas karena fase ekstraksi fitur manual dan kapasitas pembelajarannya yang terbatas. Langkah ekstraksi fitur bervariasi untuk setiap bahasa individu dan karenanya tidak dapat diskalakan. Dengan munculnya pembelajaran mendalam, muncul peningkatan luar biasa dalam akurasi pengenalan tulisan tangan. Mari kita bahas beberapa penelitian terkemuka di bidang pembelajaran mendalam untuk pengenalan tulisan tangan

Jaringan Neural Berulang Multi-dimensi

RNN/LSTM seperti yang kita ketahui dapat menangani data sekuensial untuk mengidentifikasi pola temporal dan menghasilkan hasil. Tetapi mereka terbatas untuk menangani data 1D dan karenanya tidak akan langsung berlaku untuk data gambar. Untuk mengatasi masalah tersebut, penulis dalam makalah ini mengusulkan struktur RNN/LSTM multidimensi seperti yang dapat dilihat pada gambar di bawah ini.

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Berikut ini adalah perbedaan antara RNN umum dan RNN multidimensi. Dalam RNN umum, lapisan tersembunyi mengatakan saya menerima status dari lapisan tersembunyi sebelumnya pada waktu i-1. Dalam RNN Multi-dimensi, katakanlah misalnya RNN 2 dimensi, lapisan tersembunyi (i, j) menerima status dari beberapa lapisan tersembunyi sebelumnya yaitu (i-1, j) dan (i, j-1) dan dengan demikian menangkap konteks dari keduanya tinggi dan lebar pada gambar yang sangat penting untuk mendapatkan pemahaman yang jelas tentang wilayah lokal melalui jaringan. Hal ini selanjutnya diperluas untuk mendapatkan informasi tidak hanya dari lapisan sebelumnya tetapi juga dari lapisan yang akan datang mirip dengan bagaimana BI-LSTM menerima informasi dari t-1 dan t + 1. Demikian pula, lapisan tersembunyi MDRNN 2D, saya sekarang dapat menerima informasi (i-1, j), (i, j-1), (i + 1, j), (i, j + 1) sehingga menangkap konteks ke segala arah

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Seluruh struktur jaringan ditampilkan di atas. MDLSTM digunakan yang tidak lain adalah mengganti blok RNN โ€‹โ€‹dengan blok LSTM dari pembahasan MDRNN di atas. Input dibagi menjadi blok berukuran 3 ร— 4 yang sekarang dimasukkan ke dalam lapisan MDSTM. Jaringan memiliki struktur hierarki dari lapisan MDLSTM diikuti oleh lapisan feed-forward (ANN) secara bersamaan. Kemudian hasil akhir diubah menjadi vektor 1D dan diberikan ke fungsi CTC untuk menghasilkan keluaran

Klasifikasi Temporal Koneksionis (CTC) adalah algoritme yang digunakan untuk menangani tugas-tugas seperti pengenalan suara, pengenalan tulisan tangan, dll. Di mana hanya data input dan transkripsi output yang tersedia tetapi tidak ada rincian penyelarasan yang disediakan, yaitu bagaimana wilayah tertentu dalam audio untuk ucapan atau wilayah tertentu dalam gambar untuk tulisan tangan disesuaikan dengan karakter tertentu. Heuristik sederhana seperti memberi setiap karakter area yang sama tidak akan berhasil karena jumlah ruang yang dibutuhkan setiap karakter bervariasi dalam tulisan tangan dari orang ke orang dan dari waktu ke waktu.

Untuk kasus penggunaan pengenalan tulisan tangan, pertimbangkan wilayah gambar masukan untuk kalimat tertentu sebagai masukan X=[x1,x2,โ€ฆ,x ** T] sedangkan keluaran yang diharapkan sebagai Y=[y1,y2,โ€ฆ,y ** U] . Mengingat X kita seharusnya menemukan Y yang akurat. Algoritma CTC bekerja dengan mengambil input X dan memberikan distribusi atas semua kemungkinan penggunaan Y yang kita dapat membuat prediksi untuk output akhir.

CTC menggunakan kata karakter dasar โ€“ untuk membedakan antara karakter duplikat dan karakter berulang di wilayah input. Misalnya karakter tertentu dapat menjangkau beberapa wilayah input dan dengan demikian CTC akan menampilkan karakter yang sama secara berurutan. Contoh: - Input james dan Output dari CTC adalah jjaammmees. Output akhir diturunkan dengan menciutkan output berulang dan karenanya kita mendapatkan james. Tapi sekarang untuk menampilkan karakter duplikat katakan 'l' di halo, kita perlu memiliki pemisahan di tempat dan dengan demikian semua output dipisahkan oleh tanda hubung (-). Sekarang output untuk hello bisa jadi h-ee-ll-lll-oo yang jika diciutkan akan menjadi hello dan bukan helo. Informasi lebih lanjut tentang cara kerja CTC dapat dilihat di sini CTC.

Saat mendekode output CTC berdasarkan heuristik sederhana dari probabilitas tertinggi untuk setiap posisi, kita mungkin mendapatkan hasil yang mungkin tidak masuk akal di dunia nyata. Untuk mengatasi ini kita mungkin menggunakan decoder yang berbeda untuk meningkatkan hasil. Mari kita bahas berbagai jenis decoding

  1. Decoding jalur terbaik : - Ini adalah decoding umum yang telah kita bahas sejauh ini. Pada setiap posisi kami mengambil keluaran model dan menemukan hasil dengan probabilitas tertinggi.
  2. Decoding pencarian balok : - Daripada mengambil satu keluaran dari jaringan setiap kali pencarian berkas menyarankan untuk menjaga beberapa jalur keluaran dengan setiap probabilitas tertinggi dan memperluas rantai dengan keluaran baru dan jalur jatuh yang memiliki probabilitas lebih rendah untuk menjaga ukuran berkas konstan. Hasil yang diperoleh melalui pendekatan ini lebih akurat daripada menggunakan pendekatan rakus
  3. Beam search dengan Model Bahasa :- Pencarian balok memberikan hasil yang lebih akurat daripada pencarian kisi tetapi tetap tidak menyelesaikan masalah mendapatkan hasil yang berarti. Untuk mengatasi ini kita dapat menggunakan model bahasa bersama dengan pencarian balok menggunakan probabilitas dari model dan model bahasa untuk menghasilkan hasil akhir.

Rincian lebih lanjut dalam menghasilkan hasil decoding yang akurat dapat dilihat di sini artikel

Encoder-Decoder dan Attention Networks

Model Seq2Seq yang memiliki jaringan Encoder-decoder baru-baru ini populer untuk menyelesaikan tugas pengenalan suara, terjemahan mesin, dll. dan dengan demikian telah diperluas untuk menyelesaikan kasus penggunaan pengenalan tulisan tangan dengan menerapkan mekanisme perhatian tambahan. Mari kita bahas beberapa penelitian mani di bidang ini

Pindai, Hadiri dan Baca

Dalam karya penting Scan, Attend and Read (SAR) ini, penulis mengusulkan penggunaan model berbasis perhatian untuk pengenalan tulisan tangan ujung ke ujung. Kontribusi utama dari penelitian ini adalah transkripsi teks otomatis tanpa melakukan segmentasi menjadi beberapa baris sebagai langkah pra-pemrosesan sehingga dapat memindai seluruh halaman dan memberikan hasil.

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

SAR menggunakan arsitektur berbasis MDLSTM yang mirip dengan yang kita diskusikan di atas dengan satu perubahan kecil pada lapisan terakhir. Setelah lapisan linier terakhir yaitu blok Sum terakhir pada gambar di atas, peta fitur diciutkan dalam dimensi vertikal dan fungsi softmax akhir diterapkan untuk mendapatkan keluaran.

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Arsitektur SAR terdiri dari arsitektur MDLSTM yang bertindak sebagai ekstraktor fitur. Modul runtuh terakhir dengan output softmax dan CTC loss digantikan oleh modul perhatian dan dekoder LSTM. Model perhatian yang digunakan adalah kombinasi hybrid dari content based attention dan location based attention yang akan dijelaskan lebih detail pada paper berikutnya. Modul LSTM decoder mengambil status sebelumnya, peta perhatian sebelumnya dan fitur encoder untuk menghasilkan karakter keluaran akhir dan vektor status untuk prediksi berikutnya.

Konvolusi, Hadir dan Eja

Makalah ini mengusulkan model urutan-ke-urutan berbasis perhatian untuk pengenalan kata tulisan tangan. Arsitektur yang diusulkan memiliki tiga bagian utama: encoder, terdiri dari CNN dan GRU dua arah, mekanisme perhatian yang ditujukan untuk fokus pada fitur terkait dan dekoder yang dibentuk oleh GRU satu arah, yang mampu mengeja kata yang sesuai, karakter demi karakter.

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Encoder menggunakan CNN untuk mengekstrak fitur visual. Arsitektur VGG-19-BN pra-terlatih digunakan sebagai ekstraktor fitur. Gambar masukan diubah menjadi peta fitur X yang kemudian dibentuk kembali menjadi X' dengan memisahkan semua kolom saluran dan menggabungkannya untuk mendapatkan informasi sekuensial. X' selanjutnya diubah menjadi H dengan menggunakan GRU dua arah. GRU adalah jaringan saraf yang mirip dengan LSTM di alam dan dapat menangkap informasi temporal.

Selanjutnya model perhatian digunakan saat memprediksi keluaran dari decoder. Makalah ini membahas dua jenis mekanisme perhatian yang dieksplorasi.

  1. Perhatian Berbasis Konten : - Ide di balik ini adalah untuk menemukan kesamaan antara status tersembunyi decoder saat ini dan peta fitur dari encoder. Kita dapat menemukan vektor fitur yang paling berkorelasi di peta fitur pembuat enkode, yang dapat digunakan untuk memprediksi karakter saat ini pada langkah waktu saat ini. Lebih detail tentang bagaimana mekanisme perhatian bekerja dapat dilihat dari sini Perhatian
  2. Perhatian Berbasis Lokasi :- Kerugian utama dari mekanisme Lokasi Berbasis Konten adalah bahwa ada asumsi implisit bahwa informasi lokasi tertanam dalam output encoder. Jika tidak, tidak ada cara untuk membedakan antara keluaran karakter yang diulang dari dekoder. Misalnya, pertimbangkan kata Charmander, karakter a diulang dua kali di dalamnya dan tanpa informasi lokasi, dekoder tidak akan dapat memprediksinya sebagai karakter terpisah. Untuk mengatasi ini, karakter saat ini dan penyelarasannya diprediksi dengan menggunakan output encoder dan penyelarasan sebelumnya. Detail lebih lanjut tentang cara kerja kehadiran berbasis lokasi dapat dilihat di sini.

Dekoder adalah GRU multi-lapis satu arah. Pada setiap langkah waktu t menerima masukan dari langkah waktu sebelumnya dan vektor konteks dari modul perhatian. Dekode Multinomial dan penghalusan label dieksplorasi pada pelatihan untuk meningkatkan kemampuan generalisasi.

Model Transformer

Meskipun jaringan encoder-decoder telah cukup baik dalam mencapai hasil untuk pengenalan tulisan tangan, mereka memiliki hambatan dalam pelatihan karena lapisan LSTM yang terlibat dan karenanya tidak dapat diparalelkan. Baru-baru ini transformer telah cukup berhasil dan menggantikan LSTM dalam menyelesaikan berbagai tugas terkait bahasa. Mari kita bahas sekarang bagaimana model berbasis transformator dapat diterapkan untuk pengenalan tulisan tangan.

Perhatikan Apa yang Anda Baca

Dalam karya ini penulis mengusulkan penggunaan arsitektur berbasis transformator menggunakan multi-heading attention self-attention layers pada tahap visual dan teks dan dengan demikian dapat mempelajari pengenalan karakter serta dependensi terkait bahasa dari urutan karakter yang akan diterjemahkan. Karena pengetahuan bahasa ditanamkan ke dalam model itu sendiri, tidak diperlukan langkah pasca-pemrosesan tambahan menggunakan model bahasa dan karenanya memiliki kemampuan untuk memprediksi keluaran yang bukan merupakan bagian dari kosakata. Untuk mencapai pengkodean teks ini terjadi pada tingkat karakter dan bukan tingkat kata. Karena arsitektur transformator memungkinkan pelatihan model secara paralel untuk setiap wilayah atau karakter, proses pelatihan menjadi lebih disederhanakan.

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Arsitektur jaringan terdiri dari komponen-komponen berikut

  1. Pembuat enkode visual : - Untuk mengekstrak fitur yang relevan dan menerapkan perhatian diri visual berkepala banyak pada lokasi karakter yang berbeda
  2. Transcriber Teks : - Itu melakukan tugas mengambil input teks, menyandikannya, menerapkan perhatian diri multi-bahasa dan menerapkan perhatian timbal balik pada fitur visual dan teks.
Pembuat Enkode Visual

Backbone Resnet50 digunakan untuk menambahkan fitur seperti yang dapat dilihat pada gambar di atas. Keluaran peta fitur 3 dimensi dari Resnet50 Fc diteruskan ke modul Pengkodean Temporal yang dibentuk ulang menjadi 2d dengan menjaga lebar yang sama dan karenanya berbentuk (fxh, w). Ini dimasukkan ke dalam lapisan yang terhubung penuh untuk mengurangi bentuk menjadi (f, w) dan output yang dihasilkan adalah Fc'. Selain itu, pengkodean posisi TE ditambahkan ke Fc' untuk mempertahankan informasi posisi seperti yang disebutkan dalam makalah Transformer oleh Vaswani. Info lebih lanjut tentang bagaimana arsitektur transformator dirancang dapat dilihat di sini. Outputnya dilewatkan melalui lapisan yang terhubung sepenuhnya untuk mendapatkan peta fitur akhir dengan bentuk (f, w). Output akhir dilewatkan melalui modul perhatian berkepala banyak dengan 8 kepala untuk mendapatkan peta fitur kaya visual

Transcriber Teks

Teks input diteruskan melalui encoder yang menghasilkan embeddings tingkat karakter. Embeddings ini digabungkan dengan lokasi temporal yang mirip dengan cara di Visual Encoder menggunakan modul Temporal Encoder. Hasil ini kemudian diteruskan ke modul Multi-Head Language Self-Attention yang mirip dengan modul attention di Visual encoder. Fitur teks yang dihasilkan di sepanjang fitur visual dari encoder visual diteruskan ke modul perhatian bersama yang tugasnya adalah menyelaraskan dan menggabungkan fitur yang dipelajari dari gambar dan input teks. Outputnya dilewatkan melalui fungsi softmax untuk mendapatkan hasil akhir.

Saat mengevaluasi data uji, transkripsi tidak tersedia. Jadi hanya token awal <S> yang diteruskan sebagai input dan karakter prediksi pertama diumpankan kembali ke sistem, yang mengeluarkan karakter prediksi kedua. Proses inferensi ini diulangi dalam satu loop sampai simbol akhir urutan <E> dihasilkan atau ketika panjang keluaran maksimum N tercapai.

Pembuatan Teks Tulisan Tangan

Pembuatan Teks Tulisan Tangan adalah tugas menghasilkan teks tulisan tangan yang tampak nyata dan dengan demikian dapat digunakan untuk menambah kumpulan data yang ada. Seperti yang kita ketahui, pembelajaran mendalam membutuhkan banyak data untuk dilatih sementara memperoleh kumpulan besar gambar tulisan tangan berlabel untuk bahasa yang berbeda adalah tugas yang rumit. Untuk mengatasi hal ini kita dapat menggunakan Generative Adversarial Networks untuk menghasilkan data pelatihan. Mari kita bahas salah satu arsitektur tersebut di sini

ScrabbleGAN

ScrabbleGAN mengikuti pendekatan semi-supervised untuk mensintesis gambar teks tulisan tangan yang serbaguna baik dalam gaya maupun leksikon. Ia memiliki kemampuan untuk menghasilkan gambar dengan panjang yang bervariasi. Generator juga dapat memanipulasi gaya teks yang dihasilkan yang memungkinkan kita untuk memutuskan apakah teks harus bersambung atau mengatakan seberapa tebal / tipis seharusnya goresan pena

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Arsitekturnya terdiri dari generator konvolusional penuh berdasarkan BigGAN. Untuk setiap karakter dalam input, filter yang sesuai dipilih dan semua nilai digabungkan bersama yang kemudian dikalikan dengan vektor noise z yang mengontrol gaya teks yang dihasilkan. Seperti yang dapat dilihat di atas, daerah yang dihasilkan untuk setiap karakter individu tumpang tindih sehingga membantu menghasilkan teks rekursif yang terhubung serta memungkinkan fleksibilitas ukuran karakter yang berbeda. Misalnya m memakan banyak ruang sementara e dan t mengambil area terbatas. Untuk menjaga gaya yang sama untuk seluruh kata atau kalimat, vektor gaya z dijaga konstan untuk semua karakter.

Diskriminator konvolusi berdasarkan arsitektur BigGAN digunakan untuk mengklasifikasikan apakah gaya gambar yang dihasilkan terlihat palsu atau nyata. Diskriminator tidak bergantung pada anotasi tingkat karakter dan karenanya tidak didasarkan pada GAN bersyarat kelas. Keuntungannya adalah tidak perlunya data berlabel dan karenanya data dari corpus tak terlihat yang bukan bagian dari data pelatihan dapat digunakan untuk diskriminator pelatihan. Bersama dengan diskriminator, pengenal teks R dilatih untuk mengklasifikasikan apakah teks yang dihasilkan masuk akal atau tidak. Pengenal didasarkan pada arsitektur CRNN dengan kepala berulang dihapus untuk membuat pengenal sedikit lebih lemah dan tidak mengenali teks meskipun tidak jelas. Teks yang dihasilkan dalam output R dibandingkan dengan teks input yang diberikan ke generator dan penalti yang sesuai ditambahkan ke fungsi kerugian.

Output yang dihasilkan oleh ScrabbleGAN ditampilkan di bawah ini

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Set data: -

  1. IAM : - Dataset IAM berisi sekitar 100 ribu gambar kata-kata dari bahasa Inggris dengan kata-kata yang ditulis oleh 657 penulis berbeda. Set kereta, pengujian, dan validasi berisi kata-kata yang ditulis oleh pengarang yang saling eksklusifLink: - http://www.fki.inf.unibe.ch/databases/iam-handwriting-database
  2. CVL : - Dataset CVL terdiri dari tujuh dokumen tulisan tangan yang ditulis oleh sekitar 310 peserta, menghasilkan sekitar 83k kata yang dipotong, dibagi menjadi set pelatihan dan pengujianLink: - https://cvl.tuwien.ac.at/research/cvl-databases/an-off-line-database-for-writer-retrieval-writer-identification-and-word-spotting/
  3. Rimes : - Berisi kata-kata dari bahasa Perancis sekitar 60k gambar dan ditulis oleh 1300 penulis sesuai dengan sekitar 5 surat yang ditulis oleh setiap orang. Tautan: - http://www.a2ialab.com/doku.php?id=rimes_database:start

Metrik: -

Tingkat Kesalahan Karakter : - Ini dihitung sebagai jarak Levenshtein yang merupakan jumlah dari substitusi karakter (Sc), penyisipan (Ic) dan penghapusan (Dc) yang diperlukan untuk mengubah satu string menjadi yang lain, dibagi dengan jumlah karakter di groundtruth (Nc)

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Tingkat Kesalahan Kata : - Ini dihitung sebagai jumlah dari substitusi kata (Sw), penyisipan (Iw) dan penghapusan (Dw) yang diperlukan untuk mengubah satu string menjadi yang lain, dibagi dengan jumlah kata dalam groundtruth (Nw)

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Latih model pengenalan tulisan tangan Anda sendiri

Sekarang mari kita lihat bagaimana kita dapat melatih model pengenalan teks tulisan tangan kita sendiri. Kami akan melatih dataset IAM tetapi Anda juga dapat melatih model pada dataset Anda sendiri. Mari kita bahas langkah-langkah yang terlibat dalam pengaturan ini

Data

Untuk mengunduh register set data IAM dari di sini. Setelah terdaftar unduh words.tgz dari di sini. Ini berisi kumpulan data gambar kata tulisan tangan. Unduh juga file penjelasan words.txt dari di sini.

Jika Anda ingin menggunakan dataset Anda sendiri, Anda harus mengikuti struktur data dari dataset IAM.

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Di atas menunjukkan bagaimana struktur folder dataset AIM terlihat. Di sini a01, a02 dll. mewakili folder induk yang masing-masing memiliki sub-folder data. Setiap sub-folder memiliki satu set gambar yang memiliki nama folder yang ditambahkan sebagai awalan untuk nama file itu.

Selain itu, kami memerlukan file penjelasan untuk menyebutkan jalur ke file gambar dan transkripsi yang sesuai. Perhatikan misalnya gambar di atas dengan nominasi teks, di bawah ini akan menjadi representasi dalam file penjelasan words.txt

a01-000u-01-00 ok 156 395 nominasi VBG

  1. a01-000u-01-00 -> kata id untuk baris dalam bentuk a01-000u
  2. ok / err -> Indikator kualitas keluaran segmentasi
  3. 156 -> tingkat abu-abu untuk membuat baris yang berisi kata ini menjadi binari
  4. 395 932 441 100 -> kotak pembatas di sekitar kata ini dalam format x, y, w, h
  5. VBG -> tag tata bahasa untuk kata ini. Ini dia Verb Gerund
  6. nominasi -> transkripsi untuk kata ini

Arsitektur :-

Kami akan melatih arsitektur berbasis CRNN dengan kehilangan CTC. CNN digunakan untuk mengekstrak fitur visual yang diteruskan ke RNN dan kerugian CTC diterapkan di bagian akhir dengan dekoder serakah untuk mendapatkan hasilnya.

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Pelatihan

Kami akan menggunakan kode CRNN dari di sini untuk melatih model kita. Ikuti langkah-langkah di bawah ini untuk menyiapkan data

python checkDirs.py

Jalankan perintah di atas dan Anda akan melihat output seperti di bawah ini

[OK] kata /
[OK] kata / a01 / a01-000u /
[OK] word.txt
[Oke] tes.png
[OK] words/a01/a01-000u/a01-000u-00-00.png

Sekarang Anda siap untuk memulai pelatihan.

Pergi ke direktori root dan jalankan

python main.py --train

Hasil

Setelah pelatihan selama sekitar 50 epoch, Character Error Rate (CER) adalah 10.72% sedangkan Word Error Rate (WER) adalah 26.45% dan karenanya Akurasi Kata adalah 73.55%. Beberapa prediksi tersebut dapat dilihat pada gambar di bawah ini.

Cara mudah melakukan Handwriting Recognition menggunakan Machine Learning

Model ini mampu memprediksi karakter secara akurat hingga batas tertentu, tetapi model ini menderita dalam beberapa kasus seperti sangat diprediksi dengan hati-hati, cerita diprediksi sebagai cerita. Masalah ini dapat diselesaikan dengan menggunakan model bahasa sebagai langkah pemrosesan pasca bersama dengan decoder yang dapat menghasilkan kata-kata yang bermakna dan memperbaiki kesalahan sederhana.

Kesimpulan

Meskipun ada perkembangan signifikan dalam teknologi yang membantu pengenalan teks tulisan tangan dengan lebih baik, HTR masih jauh dari masalah terpecahkan dibandingkan dengan OCR dan oleh karena itu belum banyak digunakan dalam industri. Namun demikian dengan laju evolusi teknologi dan dengan diperkenalkannya model seperti transformator, kita dapat mengharapkan model HTR segera menjadi hal yang biasa.

Untuk mendapatkan lebih banyak penelitian tentang topik ini, Anda dapat memulai di sini

Selanjutnya Membaca

Stempel Waktu:

Lebih dari AI & Pembelajaran Mesin