Teknologi Pengenalan Tulisan – OCR dengan Deep Learning PyTorch

By | July 12, 2022
1,325 Views

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 EASTOCR 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.

See also  Akhirnya Torch versi R telah tersedia - Framework Machine Learning

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()