Pengenalan Teks OCR

Tesseract adalah mesin pengenal karakter optis open source (OCR) yang merupakan pustaka OCR paling populer dan berkualitas tinggi.


OCR menggunakan jaringan saraf untuk mencari dan mengenali teks dalam gambar.


Tesseract mencari pola dalam piksel, huruf, kata, dan kalimat, dan menggunakan pendekatan dua langkah yang disebut pengakuan adaptif. Dibutuhkan satu melewati data untuk pengenalan karakter, lalu pass kedua untuk mengisi huruf apa pun di mana ia tidak yakin dengan huruf yang kemungkinan besar sesuai dengan kata atau konteks kalimat yang diberikan.


Salah satu proyek adalah mengenali cek dari foto.


Alat pengenalan yang digunakan adalah Tesseract OCR . Kelebihan perpustakaan ini termasuk model bahasa yang terlatih (> 192), berbagai jenis pengenalan (gambar sebagai kata, blok teks, teks vertikal), pengaturan mudah. Karena Tesseract OCR ditulis dalam C ++, pembungkus pihak ketiga dengan github digunakan.


Perbedaan antara versi adalah model terlatih yang berbeda (versi 4 memiliki akurasi yang lebih besar, jadi kami menggunakannya).


Kami membutuhkan file data untuk pengenalan teks, setiap bahasa memiliki file sendiri. Anda dapat mengunduh data di sini .


Semakin baik kualitas gambar asli (ukuran, kontras, masalah pencahayaan), semakin baik hasil pengenalan.


Metode pemrosesan gambar juga ditemukan untuk pengakuan lebih lanjut dengan menggunakan perpustakaan OpenCV. Karena OpenCV ditulis dalam C ++, dan tidak ada pembungkus tertulis untuk solusi kami, diputuskan untuk menulis pembungkus kami sendiri untuk pustaka ini dengan fungsi pemrosesan gambar yang diperlukan. Kesulitan utama adalah pemilihan nilai untuk filter untuk pemrosesan gambar yang benar. Dimungkinkan juga untuk menemukan kontur pemeriksaan / teks, tetapi tidak sepenuhnya dipahami. Hasilnya lebih baik (5-10%).


Parameter:


bahasa - bahasa teks dari gambar, Anda dapat memilih beberapa dengan mencantumkannya melalui "+";


pageSegmentationMode - jenis lokasi teks dalam gambar;


charBlacklist - karakter yang diabaikan mengabaikan karakter.


Hanya menggunakan Tesseract memberikan akurasi ~ 70% dengan gambar yang ideal, dengan kualitas pencahayaan / gambar yang buruk akurasi ~ 30%.



Visi + Tesseract OCR


Karena hasilnya tidak memuaskan, diputuskan untuk menggunakan perpustakaan dari Apple - Vision. Kami menggunakan Visi untuk menemukan blok teks, lebih lanjut membagi gambar menjadi blok yang terpisah dan mengenalinya. Hasilnya lebih baik ~ 5%, tetapi kesalahan muncul karena blok berulang.


Kerugian dari solusi ini adalah:


  1. Kecepatan kerja Kecepatan operasi telah menurun> 4 kali (mungkin ada varian penyebaran)
  2. Beberapa blok teks dikenali lebih dari 1 kali
  3. Teks dikenali dari kanan ke kiri, itulah sebabnya teks di sisi kanan cek dikenali lebih awal dari teks di sebelah kiri.


MLKit


Metode lain untuk mendeteksi teks adalah MLKit Google, yang digunakan di Firebase. Metode ini menunjukkan hasil terbaik (~ 90%), tetapi kelemahan utama dari metode ini adalah dukungan untuk karakter Latin saja dan proses rumit dari teks yang dibagi dalam satu baris (nama - kiri, harga - kanan).



Pada akhirnya, kita dapat mengatakan bahwa mengenali teks dalam gambar adalah tugas yang bisa dilakukan, tetapi ada beberapa kesulitan. Masalah utama adalah kualitas (ukuran, pencahayaan, kontras) dari gambar, yang dapat diselesaikan dengan memfilter gambar. Saat mengenali teks menggunakan Vision atau MLKit, ada masalah dengan urutan yang salah dari pengenalan teks, pemrosesan teks split.


Teks yang dikenali dapat dikoreksi secara manual dan cocok untuk digunakan; dalam kebanyakan kasus, ketika mengenali teks dari cek, jumlah total dikenali dengan baik dan tidak perlu penyesuaian.

Source: https://habr.com/ru/post/id471542/


All Articles