OCR / Image to text
Hola gaess, pada materi kali ini kita akan mempelajari tentang OCR / Image to Text. Langsung saja, mari kita awali dengan definisi dari OCR itu sendiri. OCR atau Optical Character Recognition merupakan suatu proses konversi dari gambar yang diubah menjadi teks sehingga dapat dibaca oleh mesin. Gambar tersebut harus memiliki objek teks didalamnya sehingga dapat dikenali dan dikonversi menjadi data teks sungguhan. Biasanya gambar yang dikonversi dapat berupa foto dokumen, foto suatu adegan ataupun teks subtitle yang terdapat pada gambar tersebut,
https://electroneek.com/access/img/page/what-is-ocr/ocr-img-0.jpg
Manfaat OCR
Mengapa OCR itu penting ? Pada zaman sekarang, digitalisasi atau proses membuat barang menjadi digital adalah sebuah proses yang dapat memudahkan segala urusan karena kita dapat menganalisis masalah didalamnya dengan lebih cepat menggunakan software-software analisis data. Penggunaan teknologi OCR ini memiliki banyak sekali manfaat didalam kehidupan sehari hari yaitu antara lain :
1. Bisnis
Dalam dunia bisnis, terdapat banyak dokumen-dokumen kertas seperti formulir, media cetak, tagihan, dan bahkan kontrak yang sering masih berupa media tulisan. Dokumen dalam jumlah yang besar ini membutuhkan banyak waktu dan ruang agar dapat disimpan dan dikelola. Oleh karena itu, dengan pengaplikasian teknologi OCR ini maka sobat dapat menggunakan data yang telah dikonversi menjadi teks untuk melakukan analitik, menyederhanakan operasi, mengotomatiskan proses, dan meningkatkan produktivitas.
2. Perbankan
Industri perbankan menggunakan OCR untuk memproses dan memverifikasi dokumen untuk dokumen pinjaman, cek deposito, dan transaksi keuangan lainnya. Verifikasi ini telah meningkatkan pencegahan penipuan dan meningkatkan keamanan transaksi. Misalnya, BlueVine adalah perusahaan teknologi keuangan yang menyediakan pembiayaan untuk usaha kecil dan menengah. BlueVine menggunakan teknologi OCR berbasis cloud, untuk mengembangkan produk pada usaha kecil di AS berupa kegiatan pinjaman.
3. Pemeliharaan Kesehatan
Industri pemeliharaan kesehatan menggunakan OCR untuk memproses catatan pasien, termasuk perawatan, tes, catatan rumah sakit, dan pembayaran asuransi. OCR membantu menyederhanakan alur kerja dan mengurangi pekerjaan manual di rumah sakit sembari tetap memperbarui catatan.
4. Logistik
Perusahaan logistik menggunakan OCR untuk melacak label kemasan, tagihan, kuitansi, dan dokumen lainnya secara lebih efisien. Selain itu, OCR juga dapat mendeteksi QR kode pada barang sehingga dapat menampilkan informasi barang secara virtual.
Teknik dasar yang digunakan oleh OCR
Setelah mengetahui manfaat dari OCR, kemudian kita dapat mempelajari mengenai cara kerja dari OCR. Pertama tama, OCR sendiri memiliki 2 komponen yaitu hardware dan software. Pada bagian hardware biasanya menyerupai pulpen yang cara kerjanya diarahkan menuju dokumen tertulis. Dengan gestur ini, sensor cahaya dapat memindai objek teks pada dokumen. Selanjutnya, informasi yang diterima oleh hardware akan diubah menjadi data digital oleh software OCR, bahkan bisa sampai menyesuaikan ukuran tulisan dan formatnya.
Seiring berkembangnya zaman teknologi OCR sudah dapat digunakan hanya menggunakan smartphone saja. Yaa software yang telah diberi program OCR dapat langsung mendeteksi gambar teks hanya dengan menggunakan sebuah foto ataupun video secara realtime. Program yang ditanamkan pada software OCR ini adalah bagian dari teknik artificial intelligence yaitu sebagai berikut :
1. Akuisisi citra
Pada proses akuisisi citra, pemindai bertugas untuk membaca dokumen dan mengonversinya menjadi data biner. Perangkat lunak OCR menganalisis citra yang dipindai dan mengklasifikasikan area terang sebagai latar belakang dan area gelap sebagai teks.
2. Pre-processing
Perangkat lunak OCR melakukan pembersihan pada citra dengan menghilangkan noise agar dapat meminimalisir error saat proses pengolahan. Berikut adalah beberapa teknik pembersihannya:
Merotasi perspektif dokumen yang dipindai dengan untuk memperbaiki masalah penyelarasan selama pemindaian.
Menghilangkan noda atau menghapus titik yang menggangu citra teks dengan menghaluskan tepinya.
Membersihkan kotak dan garis pada citra.
Pengenalan skrip untuk teknologi OCR multibahasa
3. Pengenalan teks
Dua tipe utama algoritma OCR atau proses perangkat lunak yang digunakan pada teknologi OCR dalam pengenalan teks yaitu pencocokan pola dan ekstraksi fitur.
Pencocokan pola
Pencocokan pola bekerja dengan cara mengisolasi citra karakter yang disebut glyph dan membandingkannya dengan glyph serupa yang tersimpan pada dataset. Proses kerja pengenalan pola ini yaitu dengan mencocokkan pola pada glyph input dengan glyph dataset yang telah tersimpan. Metode ini bekerja dengan baik saat digunakan pada font dan skala yang sama pada dataset.
Ekstraksi fitur
Proses kerja ekstraksi fitur yaitu memecah atau menguraikan glyph menjadi fitur seperti garis, loop tertutup, arah garis, dan perpotongan garis. Ekstraksi fitur kemudian menggunakan fitur-fitur ini untuk menemukan kecocokan terbaik atau kecocokan terdekat di antara berbagai glyph yang tersimpan (dataset).
Tutorial OCR pada Tesseract dan OpenCV
Pada tutorial ini kita akan mencoba teknologi OCR atau konversi dari image to text menggunakan program sederhana dari library OpenCV dan Tesseract. Sebelum memulai proses pemrograman, sobat diharapkan untuk menginstal aplikasi tesseract itu sendiri yaa. Untuk proses penginstalan dapat dilakukan dengan mengunjungi link berikut ini yaa : https://tesseract-ocr.github.io/tessdoc/Home.html
Setelah sobat sudah masuk ke link tersebut, maka sobat dapat mencari link downloadnya yaitu seperti gambar berikut :
Sobat dapat memilih berdasarkan jenis OS pada device masing-masing yaa. Apabila telah terinstal maka kita dapat langsung memasuki proses pemrograman. Kita akan mencoba untuk mendeteksi huruf yang terdapat pada gambar berikut ini :
Program ini menggunakan bahasa pemrograman python serta library OpenCV dan Tesseract. Pertama-tama, sobat dapat memasukkan library yang akan digunakan yaitu OpenCV dan Tesseract :
Kedua, sobat dapat memasukkan alamat dari teseract.exe yang merupakan sebuah file yang dihasilkan dari proses penginstalan library tesseract sebelumnya. Sobat dapat cari filenya di device masing-masing atau defaultnya seperti ini :
Kemudian kita dapat membuat variabel img yang berisikan alamat dari gambar yang akan digunakan untuk deteksi huruf yang kemudian diubah ke format RGB.
Selanjutnya sobat dapat menggunakan salah satu dari fungsi tesseract yaitu image_to_boxes() yang berfungsi untuk mendapatkan informasi jenis karakter beserta koordinat objek teks tersebut berada.
Dan yang terakhir sobat dapat variabel boxes ini yang disimpan pada variabel b untuk mendapatkan informasi dari objek teks yang terdeteksi dimana pada b[0] merupakan nilai karakter dari teks lalu pada b[1] dan b[2] merupakan data koordinat axis x, y objek kemudian b[3] dan b[4] adalah data lebar dan tinggi objek.
Setelah semua program telah tertulis dan kemudian dapat dirunning. Hasilnya adalah sebagai berikut :
Evaluasi performa OCR
Setelah mengetahui mengenai cara mendeteksi gambar teks dan mengonversinya menjadi data teks menggunakan library tesseract dan OpenCV maka kemudian kita dapat mengevaluasi hasil outputnya menggunakan metrik CER. CER atau kepanjangan dari Character Error Rate adalah sebuah metrik dalam OCR yang digunakan untuk mengukur tingkat kesalahan dalam mentranskripsikan teks. CER mengukur persentase karakter yang salah dalam hasil pengenalan terhadap teks asli yang seharusnya dihasilkan.
Teknik CER ini menggunakan teori error rates dan levenstein distance. Error rates berfungsi untuk menentukan sejauh mana teks output dari OCR dan teks referensi berbeda satu sama lain. Error rates dapat digunakan untuk melihat berapa banyak karakter yang salah eja. Meskipun ini benar, perhitungan tingkat kesalahan sebenarnya lebih kompleks dari itu. Ini karena output OCR dapat memiliki panjang yang berbeda dari teks referensinya. Terdapat 3 jenis error yang perlu dipertimbangkan yaitu :
Substitution error (S) : Karakter/kata salah eja
Deletion error (D) : Karakter/kata hilang atau hilang
Insertion error (I) : Pencantuman karakter/kata yang salah
Berikut contoh dari penggunaan 3 jenis error pada OCR tersebut :
Kemudian terdapat pertanyaan bagaimana cara kita mengukur tingkat kesalahan antara dua teks (teks referensi dan teks output OCR). Naah teknik levenstein distance dapat menjawab pertanyaan ini. Levenstein distance adalah metrik jarak yang mengukur perbedaan antara dua urutan string. Jarak tersebut termasuk pada jumlah minimum jenis dari error rates (yaitu, penyisipan, penghapusan, atau penggantian) yang diperlukan untuk mengubah satu kata menjadi kata lain. Contohnya yaitu jika ingin mengubah kata kelapa menjadi telapak maka diperlukan minimum 2 suntingan agar menjadi kata yang diinginkan yaitu :
kelapa telapa (gantikan k dengan t)
telapa telapak (masukkan k dibagian akhir)
Semakin berbeda 2 teks maka semakin banyak jumlah suntingan dan semakin besar levenstein distance nya.
Kembali ke topik, yaa CER yaitu sebuah teknik yang menggunakan konsep dari levenstein distance untuk menghitung jumlah suntingan yang diperlukan untuk mengubah sebuah teks referensi menjadi teks keluaran OCR. CER memiliki rumus sebagai berikut :
yang memiliki maksud yaitu perjumlahan dari semua jenis error rates dibagi dengan seluruh jumlah karakter dari teks referensi (N).
Mari kita coba menggunakan rumus CER ini pada hasil output dari program Tesseract dengan gambar tesk referensinya.
Gambar asli :
Hasil output OCR :
Pada hasil tersebut ditemukan bahwa :
Teks referensi = Loan Number
Teks output OCR = Zoom Numbet
Jumlah seluruh karakter (N) = 10
Maka jenis error rates nya yaitu :
Zoom Loom (gantikan Z dengan L) = S
Loom Loam (gantikan o dengan a) = S
Loam Loan (gantikan m dengan n) = S
Numbet Number (gantikan t dengan r) = S
Pada analisis error rates terdapat sebanyak 4 kali suntingan yaitu pada jenis S atau Subtitution. Maka dari itu nilai CER pada proses tersebut adalah
0.4 = 40%
Jadi pada proses OCR handwriting menggunakan program Tesseract diatas memiliki nilai CER sebesar 40%.
Eittss nilai 40% ini besar atau tidak sih ? Berdasarkan sebuah artikel yang diterbitkan pada tahun 2009 tentang tinjauan akurasi OCR dalam program digitalisasi surat kabar Australia skala besar menghasilkan tolok ukur berikut (untuk teks tercetak):
Akurasi OCR yang baik: CER 1‐2% (yaitu 9899% akurat)
Akurasi OCR rata-rata: CER 2-10%
Akurasi OCR buruk: CER >10% (yaitu di bawah 90% akurat)
Untuk kasus kompleks yang melibatkan teks tulisan tangan dengan konten yang sangat heterogen dan keluar dari kosakata (misalnya, formulir lamaran), nilai CER setinggi sekitar 20% dapat dianggap memuaskan. Oleh karena itu, dapat disimpulkan bahwa hasil output program Teseract diatas sudah masuk dalam kategori memuaskan.
Wokeeh sobat, sekarang kita sudah mencapai akhir dari materi OCR/image to text. Pada materi ini sobat sudah mempelajari banyak hal bukan mungkin kira-kira dapat dijabarkan sebagai berikut :
Pengertian OCR / image to text
Manfaat dari pengaplikasian OCR
Teknik-teknik dasar dari proses kerja OCR
Tutorial coding pengaplikasian OCR menggunakan program OpenCV dan Teseract
Evaluasi performa OCR menggunakan metode CER
Dengan begitu, materi pada modul kali ini telah berakhir. Semoga ilmunya dapat bermanfaat yaa, semangaaat !
Referensi
https://towardsdatascience.com/evaluating-ocr-output-quality-with-character-error-rate-cer-and-word-error-rate-wer-853175297510
https://media.neliti.com/media/publications/521630-none-1326fee3.pdf
https://finfini.com/id/blog/apa-itu-ocr/
https://aws.amazon.com/id/what-is/ocr/