
OCR dengan Deep Learning PyTorch – Salah satu manfaat yang banyak digunakan pada penerapan deep learning yaitu komputer yang dapat membaca langsung tulisan terutama untuk tulisan printer. Contohnya yaitu melakukan terjemahan tulisan langsung menggunakan kamera ponsel. Teknologi pengenalan tulisan berkembang pesat sekali.
Teknologi dibelakang pengenalan tulisan tahun demi tahun mengalami banyak perbaikan, mulai dari algoritma konvensional seperti menggunakan geometri sampai yang saat ini banyak digunakan yaitu deep learning. Bila kalian belum tahu algoritma yang masih menggunakan geometri yaitu Optical Character Recognition dengan Tesseract. Dikembangkan menggunakan bahasa C++ dan relatif banyak digunakan saat ini. Namun demikian algoritma tersebut belum mampu mengolah gambar yang miring/deskewing dan bentuk banyak noise lainnya.
Teknologi Deep Learning
Framework deep learning yang banyak dipakai yaitu tensorflow (google) dan pytorch (facebook) sama2 bagus. Keduanya menjadi core engine dibanyak produk yang melibatkan AI. Ngomong2 AI / Deep Learning untuk detection text yaitu EAST – OCR Optical Character Recognition berbasis Machine Learning atau Jaddle
Sekarang kita coba algoritma yang menggunakan pytorch dan basis model VGG16 yaitu https://github.com/JaidedAI/EasyOCR. Adapun untuk versi demo dalam bentuk web App, bisa kalian coba https://www.jaided.ai/easyocr/. Bahasa indonesia pun termasuk yang didukung oleh library tersebut.
Algoritma EasyOCR
EasyOCR didasarkan pada deep learning yang melibatkan pengenalan teks dan model deteksi. Dalam pengenalan teks, pertama kali mendeteksi dan mengidentifikasi kotak pembatas teks yang ada dalam gambar atau dokumen. Kedua, mengidentifikasi karakter. Untuk mendeteksi karakter dan kata-kata dalam gambar atau dokumen, digunakan model deep learning.
Kinerja EasyOCR
Secara umum untuk kinerja OCR EasyOCR sangat bagus sekali mirip2 sama dengan EAST. Untuk versi demo menggunakan https://github.com/gradio-app/gradio sebagai web App nya dan sudah di porting di https://huggingface.co/. Sayangnya perhari hanya boleh uji coba 5 gambar saja, untuk itu kita langsung download saja source code nya dan dicoba komputer lokal saja.
git clone https://github.com/JaidedAI/EasyOCR.git
Cukup besar untuk model yang dibuat oleh PyTorch karena menggunakan model VGG16. Seperti biasa kita menuju work direktory tersebut dan ketikan perintah python setup.py install
via command prompt
import easyocr as ocr #setting bahasa reader = ocr.Reader(['id']) result = reader.readtext('D:/darma henwa.jpg')
ternyata bila model tersebut belum ada, akan download terlebih dahulu modelnya. Saya tidak punya GPU NVIDIA sehingga ada pesan CUDA not available.
CUDA not available - defaulting to CPU. Note: This module is much faster with a GPU. Downloading detection model, please wait. This may take several minutes depending upon your network connection. Progress: |██████--------------------------------------------| 13.8% Complete
Tulisan pada gambar dibawah ini
hasil
[([[58, 308], [1153, 308], [1153, 493], [58, 493]], 'DarmaHenwa', 0.30845443119532673), ([[594, 466], [1137, 466], [1137, 534], [594, 534]], 'integrated mining services', 0.997623425549831)]
Angka diatas merupakan titik dari sebuah bounding box. Lebih jelasnya
location,text,alpha=result[0]
atau bila divisualkan
I = cv.imread("D:/darma henwa.jpg") color =["red","green"] plt.figure() plt.imshow(I) for idx, (location,_,_) in enumerate(result): for (x,y) in location: print(x,y) plt.scatter(x,y,10,color[idx]) plt.show()