Algoritma CTC (Connectionist Temporal Classification) pada pengenalan teks

By | February 2, 2026
405 Views

Bedah Teknologi modern dibalik Bagaimana Komputer membaca Gambar. Komputer dapat membaca gambar menjadi teks dinamakan dengan OCR – Optical Character Recognition. Saat ini teknologi OCR berkembang pesat. Sebelum dikenal dengan deep learning. Tools OCR yang opensource seperti Tesseract banyak digunakan untuk mengubah gambar menjadi teks. Namun untuk font beragam jenis tentu akan menyulitkan proses OCR.

Untuk itulah dikembangkan pendekatan deep learning dalam teknologi OCR. Salah satu algoritma penting yang banyak digunakan adalah CTC (Connectionist Temporal Classification). Algoritma ini dirancang khusus untuk menangani permasalahan pengenalan urutan (sequence recognition), di mana panjang data input tidak harus sama dengan panjang data output, serta tidak memerlukan proses segmentasi karakter secara eksplisit.

Pada OCR berbasis CTC, citra teks terlebih dahulu diproses menggunakan Convolutional Neural Network (CNN) untuk mengekstraksi fitur visual dari gambar. Selanjutnya, fitur tersebut diperlakukan sebagai urutan dan diproses oleh Recurrent Neural Network (RNN) seperti LSTM atau arsitektur modern seperti Transformer, guna menangkap konteks spasial dan temporal antar karakter. Hasil dari proses ini berupa probabilitas setiap karakter pada setiap langkah waktu, yang kemudian dioptimalkan menggunakan fungsi CTC Loss.

Keunggulan utama algoritma CTC adalah kemampuannya mengenali teks tanpa harus memisahkan karakter satu per satu. Hal ini sangat bermanfaat dalam menghadapi variasi font, ukuran huruf, kemiringan tulisan, serta jarak antar karakter yang tidak konsisten. Dengan adanya simbol khusus blank, CTC mampu melakukan penyelarasan (alignment) secara otomatis antara urutan fitur hasil ekstraksi dan label teks target.

Selain itu, OCR berbasis CTC lebih adaptif terhadap berbagai jenis tulisan, termasuk teks alami dan tulisan tangan. Teknologi ini juga memungkinkan sistem OCR untuk dikembangkan secara end-to-end, sehingga proses pelatihan menjadi lebih efisien dan akurat dibandingkan metode OCR konvensional. Oleh karena itu, CTC kini menjadi komponen utama dalam banyak sistem OCR modern dan diaplikasikan secara luas pada digitalisasi dokumen, arsip sejarah, serta pengenalan aksara non-Latin.

See also  Menyingkap Rahasia Machine Learning untuk Mengenali Objek dengan akurasi tinggi

Berikut adalah salah satu contohnya, tesseract akan sulit melakukan recognition!

Apa itu CTC?

CTC adalah cara agar komputer bisa membaca tulisan (dari gambar atau suara) tanpa harus tahu letak tiap hurufnya secara pasti. Bayangkan manusia membaca tulisan tangan yang berantakan—kita tetap bisa menebak kata utuhnya meskipun hurufnya saling menempel. CTC bekerja dengan cara yang mirip seperti itu.

Masalah utama dalam membaca tulisan, maka komputer melihat gambar teks:

  • Komputer melihat gambar panjang
  • Tapi hasil yang diinginkan adalah kata atau kalimat
  • Komputer tidak tahu di bagian mana huruf A, B, atau C berada

Cara kerja CTC (dengan contoh sederhana)

Misalnya komputer ingin membaca kata:

"BUKU"

Komputer membaca gambar sedikit demi sedikit dari kiri ke kanan, lalu menghasilkan tebakan seperti ini:

_ B B _ U _ K K _ U _

(_ garis bawah berarti “kosong” atau blank)

Langkah CTC:

  1. Hapus huruf yang berulang
    _ B _ U _ K _ U _
    
  2. Hapus tanda kosong
    B U K U
    

Hasil akhirnya adalah “BUKU”

CTC tidak peduli di mana tepatnya huruf muncul, yang penting urutannya benar.

Kenapa CTC itu pintar?

Karena CTC:

  • Tidak perlu memotong gambar per huruf
  • Bisa membaca tulisan yang rapat, miring, atau tidak rapi
  • Bisa menyesuaikan berbagai jenis font
  • Cocok untuk tulisan tangan

Perumpamaan sederhana

Bayangkan Anda mendikte kata ke orang lain:

  • Suara Anda naik-turun dan tidak jelas per huruf
  • Tapi pendengar bisa memahami kata lengkapnya

CTC melakukan hal yang sama, tapi untuk gambar teks.

Dipakai di mana?

CTC banyak digunakan pada:

  • OCR modern (pembaca teks dari gambar)
  • Pembaca tulisan tangan
  • Pembaca teks pada foto
  • Pengenalan suara (speech-to-text)
See also  Deteksi dan segmentasi otomatis sel dan inti sel dalam gambar mikroskopi

Ringkasannya

CTC adalah algoritma yang membantu komputer:

  • Membaca teks tanpa harus tahu posisi huruf
  • Mengubah gambar panjang menjadi kata
  • Bekerja dengan baik pada tulisan yang sulit dibaca

Singkatnya:

CTC membuat komputer “menebak” kata secara cerdas, seperti manusia membaca tulisan tangan.

menarik bukan? Makanya OCR modern bisa membaca huruf kanji, tagalog, jawa, dan arab dan yang lainnya.

Kalau kalian tertarik, bisa membaca referensi https://github.com/mindspore-lab/mindocr

Saya sudah menggunakan algoritma diatas dan hasilnya sangat terkesan sekali! Untuk datasetnya bisa kalian gunakan https://www.kaggle.com/datasets/pradeepsiva/mjsynth-1-250k

Dari dataset diatas, saya pakai hanya 10.000 gambar saja dengan iterasi 1.000 kali

Grafik loss dengan banyak uji coba, loss turun dengan sangat baik

folder checkpoint: checkpoint/model SVTROCR/
menggunakan sesi pelatihan: model_current.pt; loss.csv
epoch current:  979
last error:  0.2883923998534679
tabel
         loss                        date
969  0.314365  2025-12-20 05:53:56.363947
970  0.310208  2025-12-20 05:57:02.847632
971  0.305178  2025-12-20 06:00:09.346028
972  0.303135  2025-12-20 06:03:15.491924
973  0.297482  2025-12-20 06:06:21.485707
974  0.301017  2025-12-20 06:09:28.869212
975  0.293752  2025-12-20 06:12:40.969457
976  0.291044  2025-12-20 06:15:54.681389
977  0.286951  2025-12-20 06:19:08.590846
978  0.288392  2025-12-20 06:22:21.574535

Berikut ketika diuji untuk data testing

OCR bekerja dengan baik

OCR bekerja dengan baik

CTC akan menebak huruf nya

ada kesalahan prediksi

Berikut augmentasi sederhana yang saya terapkan

transform_train = transforms.Compose([
    transforms.RandomApply([
        transforms.ColorJitter(
            brightness=0.3,
            contrast=0.3
        ),
    ], p=0.5),

    transforms.RandomApply([
        transforms.GaussianBlur(
            kernel_size=3,
            sigma=(0.1, 2.0)
        )
    ], p=0.3),

    transforms.ToTensor(),           # (1,H,W)
    transforms.Normalize((0.5,), (0.5,))
])

Apalagi kalau bisa menggunakan 75% dari dataset yang ada yaitu 246 ribu gambar! gambar yang sangat banyak sekali!