Tesseract OCR tips - buat kosa kata Anda sendiri untuk meningkatkan kinerja OCR

Ini adalah posting pertama saya tentang Pengenalan Karakter Optik (OCR) menggunakan Tesseract. Tesserast adalah pustaka sumber terbuka yang sangat populer untuk OCR yang didukung oleh Google, yang memberikan hasil akurasi tinggi dan mendukung lebih dari 100 bahasa. Dalam posting ini saya akan memberi tahu Anda cara bekerja dengan kamus standar untuk model bahasa Tesseract dan menyesuaikannya agar sesuai dengan kebutuhan Anda. Siapa yang peduli, tolong, di bawah kucing.

Model dan Kamus Bahasa Tesseract


Tesseract menggunakan model bahasa dan kamus untuk mengenali teks dalam bahasa tertentu. Model bahasa berisi nilai-nilai parameter dari model jaringan saraf dan data pembelajaran lainnya. Misalnya, model bahasa untuk bahasa Inggris disimpan dalam file data eng.trained. Pengguna dapat membuat daftar kata-kata mereka sendiri untuk Tesseract sehingga Tesseract dapat belajar mengenalinya.

Tesseract memungkinkan Anda untuk memperluas kamus standar untuk bahasa yang didukung dengan menambahkan kata-kata Anda sendiri atau untuk melatih model bahasa dengan sepenuhnya mengganti kata-kata kamus standar dengan kata-kata Anda sendiri.

Tesseract menggunakan file .dawg khusus untuk berbagai kategori kata dalam kamus. Sebagai contoh, file .word-dawg digunakan untuk kata-kata utama kamus, dan file freq-dawg digunakan untuk kata-kata yang paling umum. Informasi lebih lanjut tentang masalah ini dapat ditemukan di sini .

Kustomisasi model bahasa Tesseract


Panduan ini dapat diterapkan untuk versi Tesseract 3.0.5 dan 4.0.0. Satu-satunya perbedaan antara Tesseract 4.0.0 dan sebelumnya 3.0.x adalah bahwa dalam versi 4 Tesseract didasarkan pada model LSTM dan file kamus dawg memiliki ekstensi lstm - dawg (dalam versi v3.0.5 mereka memiliki ekstensi -dawg). Sebagai contoh, file dari kata-kata yang paling umum sekarang memiliki ekstensi lstm-freq-dawg bukan freq-dawg, dan file unicharset menerima ekstensi lstm-unicharset (sebelumnya .unicharset).

Pertama, instal perpustakaan Tesseract OCR. Dalam tutorial ini, saya menggunakan Ubuntu OS (saya menggunakan Ubuntu 18.04) dan Tesseract v4. Cukup instal Tesseract menggunakan paket apt:

sudo apt update && sudo apt install tesseract-ocr 

Selain perpustakaan Tesseract itu sendiri, tim ini juga akan menginstal semua alat yang diperlukan untuk mengajar model bahasa (alat pelatihan).

Untuk mulai dengan, kami memperluas model bahasa dengan kata-kata kami sendiri. Misalnya, kami ingin memperluas model untuk bahasa Inggris. Buat file teks biasa bernama wordlistfile dan tambahkan kata-kata yang ingin kita tambahkan ke kamus model, satu per baris.

Kemudian akan masuk ke folder tessdata. Kami membutuhkan hak akses root untuk melakukan operasi di folder sistem ini.

 sudo su 

Salin file wordlist ke folder ini. Buka zip file model bahasa eng.traineddata ke dalam folder terlatihdat_backup

 combine_tessdata -u eng.traineddata traineddat_backup/eng. 

Perintah ini mengekstrak semua file yang diperlukan untuk mengkompilasi model bahasa ke dalam folder terlatihdat_backup.

Sekarang buat file eng.lstm-word-dawg dari wordlistfile kami menggunakan utilitas wordlistfile

 wordlist2dawg wordlistfile eng.lstm-word-dawg traineddat_backup/eng.lstm-unicharset 

dan mengkompilasi file model bahasa baru eng.traineddata

 combine_tessdata -o eng.traineddata eng.lstm-word-dawg 

Kita akan mendapatkan file model bahasa eng.traineddata dari kata-kata kamus kita sendiri.

Sekarang kita akan mengajarkan model bahasa Inggris dengan sepenuhnya mengganti kata-kata kamus standar dengan kata-kata kita sendiri. Pertama-tama kita perlu membuat cadangan semua file dawg (.lstm-word-dawg, .lstm-freq-dawg, dll.) Yang terletak di folder terlatihdat_backup, karena kita akan menggantinya dengan yang baru. Cukup buat folder tmp dan transfer semua file dawg ke sana.

Setelah itu, salin file eng.lstm-word-dawg kami yang dibuat sebelumnya ke folder terlatihdat_backup. Ayo buka folder ini dan kompilasi model bahasa baru

 combine_tessdata eng. </source           tessdata        ( cus - custom).   OCR  Tesseract     : <source lang="bash"> tesseract <image> -l <your_model> <output> 

di mana output adalah nama file teks untuk menulis hasil OCR atau 'stdout' untuk output ke terminal.

File Konfigurasi di Tesseract OCR


Tesseract menggunakan file konfigurasi (file teks biasa yang berisi variabel dan nilai-nilai kunci mereka, dipisahkan oleh spasi) yang memungkinkan pengguna untuk mengontrol hasil OCR. Anda dapat membuat konfigurasi Anda sendiri (myconf) dan meletakkannya di folder konfigurasi di dalam folder tessdata dan tentukan nama konfigurasi saat menggunakan Tesseract:

 tesseract <image> <options> myconf 

di mana opsi: out adalah nama file untuk menampilkan hasil atau 'stdout', - l adalah model bahasa, - psm adalah metode segmentasi Halaman .

Tesseract menyediakan banyak opsi kontrol untuk menyesuaikan output dan meningkatkan akurasi OCR. Jadi ada variabel yang mengontrol penggunaan kamus, misalnya, pengecualian kata-kata yang tidak ada di word_dawg / user_words (language_model_penalty_non_freq_dict_word dan language_model_penalty_non_dict_word). Rincian lebih lanjut tentang parameter kontrol dapat ditemukan di sini .

Saya menggunakan nilai-nilai berikut di konfigurasi saya:

 language_model_penalty_non_freq_dict_word 1 language_model_penalty_non_dict_word 1 

Ini memungkinkan saya mengenali beberapa kata dari kamus saya.

Itu saja untuk saat ini. Selamat mencoba menggunakan Tesseract untuk tugas OCR dan sampai jumpa lagi!

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


All Articles