OCR Mana yang Terbaik? Tesseract, Azure Vision, atau Google Vision?
Beberapa hari ini, beberapa rekan saya sedang ramai-ramainya membahas terkait Optical Character Recognition (OCR). Untuk melakukan OCR secara mandiri dan otomatis di R, setidaknya ada dua cara. Yakni:
- Membuat model recognition sendiri.
- Menggunakan model yang sudah ada. Ini juga ada dua macam:
- Menggunakan
library(tesseract)
yang sudah tersedia secara gratis. - Menggunakan cloud service berbayar semacam Google Vision dan Azure Cognitive (Vision).
- Menggunakan
Mungkin dari kalian ada yang bertanya-tanya, kenapa harus pakai R?
Karena untuk melakukan OCR seperti yang saya infokan di atas memang harus ngoding. Apalagi jika kita punya banyak images. Automation adalah kuncinya.
Kalau dipikir-pikir sudah lama juga saya menuliskan aplikasi OCR di
market
riset.
Tampaknya kini ada pembaruan algoritma di sana-sini. Jadi kali ini saya
akan membuat review singkat OCR mana yang lebih akurat. Saya akan
membandingkan 3
kondisi images, yakni:
- Handwriting.
- Screenshot.
- Mixed text, gabungan tulisan tangan dengan huruf cetak.
Terhadap 3 cara OCR, yakni:
tesseract
- Google Vision.
- Azure Vision.
Ronde I: Handwriting
Ronde pertama akan saya mulai dengan seberapa akurat OCR ini membaca tulisan tangan saya berikut:
## Tulisan tangan saya yang bagus
tesseract
Berikut adalah hasil pembacaan dari tesseract
:
tess_handwrite
## word confidence bbox
## 1 Semoga 87.72462 34,41,460,194
## 2 wadah 51.40224 531,12,836,160
## 3 imi 52.25067 62,269,184,381
## 4 Seger 0.00000 267,276,565,393
## 5 erakhic 0.00000 619,193,1004,387
## 6 amit, 0.00000 105,507,483,647
## 7 15. 45.32839 75,779,203,902
## 8 Jonvari 46.56918 278,747,641,891
## 9 202! 79.32968 712,730,935,842
paste(tess_handwrite$word,collapse = " ")
## [1] "Semoga wadah imi Seger erakhic amit, 15. Jonvari 202!"
Lumayan lah yah hasilnya.
Azure Vision
Berikut adalah hasil pembacaan dari Azure Vision:
azure_handwrite
## [[1]]
## [1] "b-)ØOS"
Hasilnya sangat mengecewakan!. Walaupun Azure bisa membaca konteks dari images tapi dia gagal membaca tulisan tangan.
Google Vision
Berikut adalah hasil pembacaan dari Google Vision:
vision_handwrite
## locale description
## 1 id Semoga wabah\nini segera berakhir.\nAamin.\n15 Januari 2021\n
## 2 <NA> Semoga
## 3 <NA> wabah
## 4 <NA> ini
## 5 <NA> segera
## 6 <NA> berakhir.
## 7 <NA> Aamin.
## 8 <NA> 15
## 9 <NA> Januari
## 10 <NA> 2021
## vertices
## 1 32, 1044, 1044, 32, 4, 4, 902, 902
## 2 32, 450, 462, 44, 50, 18, 174, 206
## 3 524, 842, 852, 534, 29, 5, 132, 157
## 4 46, 287, 305, 64, 297, 266, 405, 437
## 5 289, 569, 587, 307, 265, 229, 369, 406
## 6 612, 1027, 1044, 629, 227, 173, 300, 354
## 7 57, 469, 485, 73, 518, 471, 609, 656
## 8 73, 203, 212, 82, 787, 777, 891, 902
## 9 272, 638, 647, 282, 774, 745, 864, 894
## 10 708, 930, 938, 716, 748, 730, 825, 843
cat(vision_handwrite$description[1])
## Semoga wabah
## ini segera berakhir.
## Aamin.
## 15 Januari 2021
Wah, luar biasa! Hasilnya sempurna!
We got the winner!
Ronde II: Screeshot: Tulisan Cetak
Ronde berikutnya saya akan menggunakan image hasil screenshot dari tablet saya sebagai berikut:
tesseract
Berikut hasil pembacaan dari tesseract
:
paste(tess_screen$word,collapse = " ")
## [1] "London - Total kematian akibat infeksi virus Corona di dunia terus bertambah. Kini kasus kematian di dunia menembus 2 juta kasus per Jumat (15/1). Dilansir AFP, total keseluruhan ada 2.000.066 orang telah meninggal dunia sejak virus Corona muncul di China akhir tahun 2019. Ada 93.321.070 kasus positif Corona sejak dimulainya pandemi. Dari catatan AFP, negara yang memiliki jumlah kematian tertinggi adalah Amerika Serikat (389.581), Brasil (207.095), India (151.918), Meksiko (137.916), Inggris (87.295) dan Italia (81.325). Jika dijumlah, angka kematian keenam negara ini mencapai lebih dari setengah jumlah kematian global. Baca juga: 1 Juta Warga Italia Sudah Divaksin Corona Jumlah 1 juta kematian di dunia tembus pada 28 September lalu. 4 bulan berselang, jumlah kematian bertambah 1 juta, sehingga menjadi 2 juta kasus kematian. Minggu lalu, secara global, setiap negara mengalami dampak terparah. Rata-rata ada 13.600 kematian setiap hari di seluruh dunia. Angka ini meningkat 20 persen dari minggu sebelumnya."
Hasilnya sempurna untuk tulisan cetak.
Azure Vision
Berikut hasil pembacaan Azure Vision:
paste(azure_screen[[1]],collapse = " ")
## [1] "London - Total kematian akibat infeksi virus Corona di dunia terus bertambah. Kini kasus kematian di dunia menembus 2 juta kasus per Jumat (15/1). Dilansir AFP, total keseluruhan ada 2.000.066 orang telah meninggal dunia sejak virus Corona muncul di China akhir tahun 2019. Ada 93.321.070 kasus positif Corona sejak dimulainya pandemi. Dari catatan AFP, negara yang memiliki jumlah kematian tertinggi adalah Amerika Serikat (389.581), Brasil (207.095), India (1 51.918), Meksiko (137.916), Inggris (87.295) dan Italia (81.325). Jika dijumlah, angka kematian keenam negara ini mencapai lebih dari setengah jumlah kematian global. Baca juga: 1 Juta Warga Italia Sudah Divaksin Corona Jumlah 1 juta kematian di dunia tembus pada 28 September lalu. 4 bulan berselang, jumlah kematian bertambah 1 juta, sehingga menjadi 2 juta kasus kematian. Minggu lalu, secara global, setiap negara mengalami dampak terparah. Rata-rata ada 13.600 kematian setiap hari di seluruh dunia. Angka ini meningkat 20 persen dari minggu sebelumnya."
Hasil yang sempurna juga didapatkan.
Google Vision
Berikut hasil pembacaan Google Vision:
cat(vision_screen$description[1])
## London - Total kematian akibat infeksi virus Corona di dunia terus bertambah. Kini kasus kematian di dunia
## menembus 2 juta kasus per Jumat (15/1).
## Dilansir AFP, total keseluruhan ada 2.000.066 orang telah meninggal dunia sejak virus Corona muncul di
## China akhir tahun 2019. Ada 93.321.070 kasus positif Corona sejak dimulainya pandemi.
## Dari catatan AFP, negara yang memiliki jumlah kematian tertinggi adalah Amerika Serikat (389.581), Brasil
## (207.095), India (151.918), Meksiko (137.916), Inggris (87.295) dan Italia (81.325). Jika dijumlah, angka
## kematian keenam negara ini mencapai lebih dari setengah jumlah kematian global.
## |
## Baca juga:
## 1 Juta Warga Italia Sudah Divaksin Corona
## Jumlah 1 juta kematian di dunia tembus pada 28 September lalu. 4 bulan berselang, jumlah kematian
## bertambah 1 juta, sehingga menjadi 2 juta kasus kematian.
## Minggu lalu, secara global, setiap negara mengalami dampak terparah. Rata-rata ada 13.600 kematian
## setiap hari di seluruh dunia. Angka ini meningkat 20 persen dari minggu sebelumnya.
Hasilnya juga sempurna.
Untuk huruf cetak hasil screenshot, ketiga OCR memberikan hasil yang memuaskan.
Ronde Final: Mixed
Pada ronde final ini saya akan menggunakan gambar berikut:
tesseract
Berikut adalah hasil pembacaan dari tesseract
:
paste(tess_mixed$word,collapse = " ")
## [1] "“ KWITANSI PEMBAYARAN Tenggale sci; Terima Dari: No: QOF Tanggal: LJen2t jumiah: «|: Terima Dari: fleang Fe ee ener renee ronrener momememmeesenmee | TOMD IAN Ss scscssscesicssusccscgee “Raa” jute” abiscesetaeseaeNeR Unk Pembayarsne” | Untuk Pembayaran: = Pllgadag WSte parnelenieininntis Tanda tangan Penerima Tanda tangan Penyetor"
Hasilnya ternyata buruk.
Azure Vision
Berikut adalah hasil pembacaan dari Azure Vision:
azure_mixed
## [[1]]
## [1] "Tanggal:" "Terima Dari:" "Jumlah:"
## [4] "Untuk Pembayaran:"
##
## [[2]]
## [1] "KWITANSI PEMBAYARAN" "l. 21" "Tanggal: .."
## [4] "Terima Dari: .." "•Dc..qa" "Terbilang: .."
## [7] "Untuk Pembayaran:"
##
## [[3]]
## [1] "Tanda tangan Penerima"
##
## [[4]]
## [1] "Tanda tangan Penyetor"
Ternyata Azure tidak mampu mendeteksi tulisan tangan saya. Hanya tulisan cetak saja yang bisa diambil.
GoogleVision
Berikut adalah pembacaan dari Google Vision:
cat(vision_mixed$description[1])
## KWITANSI PEMBAYARAN
## No:.
## Tanggal:
## No:..
## Tanggal: 1Jan 21
## Terima Dari:
## ......
## Ikang
## Jumlah:
## Terima Dari:
## Dua Juta
## Terbilang:
## Untuk Pembayaran: . Pulsa Jan listrik.
## Untuk Pembayaran:
## ...
## ....................
## RP. 2000 000
## ................
## Tanda tangan Penerima
## Tanda tangan Penyetor
Luar biasa! Google Vision mampu membaca semuanya.
We got the winner!
Summary
Google Vision menjadi layanan terbaik dalam hal OCR. Kemampuannya untuk membaca semua tipe tulisan bisa diandalkan.
if you find this article helpful, please support this blog by clicking
the ads.