Pengenalan karakter optis

**Pengenalan Karakter Optik** (bahasa Inggris: **O''ptical Character Recognition***, yang biasa disingkat *'OCR**) adalah sebuah perangkat lunak yang mengubah teks dalam format berkas citra atau gambar ke dalam format teks yang bisa dibaca dan disunting oleh aplikasi komputer. Berkas teks berformat citra tersebut didapatkan dengan cara memindai atau memfoto sebuah buku, manuskrip, tulisan di papan pengumuman, ataupun materi kuliah di papan tulis dsb. Sedangkan alat yang diunakan untuk memindai adalah pemindai (''scanner'' dalam bahasa Inggrisnya) atau kamera baik [[Kamera SLR|kamera DSLR]] ataupun kamera di ponsel pintar.

Sebagai perangkat lunak yang kompleks, OCR diterapkan di berbagai bidang seperti untuk membaca data secara otomatis dan langsung memasukkannya ke dalam basis data -- contohnya seperti dalam pemindaian passport, nota transfer bank, kertas berharga – untuk pengenalan pelat kendaraan bermotor dari video atau gambar yang tertangkap kamera, dan yang paling marak adalah untuk preservasi konten buku-buku sumber referensi utama dan manuskrip bersejarah. Dalam beberapa kasus, OCR berkontribusi sangat besar dalam proses pembangunan perpustakaan digital.

== Sejarah Singkat OCR ==
Sejarah OCR bisa dirunut sejak tahun 1809 saat peranti membaca untuk aplikasi orang buta dan pembacaan telegraf dikembangkan. Kemudian berlanjut pada penemuan mesin yang mampu mengubah karakter tercetak ke dalam  kode standard telegraf buatan Emanuel Goldberg pada tahun 1914. Mesin ciaptaan Goldberg ini diklaim sebagai asal muasal teknologi OCR. Di waktu yang bersamaan, Edmund Fourier mengembangkan ''Optophone'' yang merupakan mesin  pemindai jinjing yang mampu menghasilkan bunyi sesuai dengan karakter khusus yang tercetak di dokumen. Kembali ke penemuan Goldberg, di akhir tahun 1920an tepatnya pada tahun 1927, ciptaannya yang dinamai Mesin statistik (''statistical machine'') merupakan sistem pengenalan kode optik yang digunakan untuk pencarian arsip mikrofilm.

Melompat ke dekade 1990an, OCR banyak dimanfaatkan oleh perpustakaan-perpustakaan untuk mendigitalkan surat kabar bersejarah. Proyek digitalisasi buku-buku bersejarah dan sumber referensi primer ini mulai menjamur memasuki abad 21 karena didukung oleh perkembangan pesat di bidang perangkat keras, perangkat lunak dan Internet. Ini memungkinkan WebOCR – sebuah perangkat lunak daring yang diluncurkan oleh  Expervision -- beroperasi di lingkungan komputasi Awan dan aplikasi perangkat bergerak (mobil applications).

== Tahapan Proses OCR ==
Sebagai aplikasi yang kompleks, OCR memiliki beberapa tahapan utama yang terdiri dari:

* Pra-pemrosesan
* Tahap ekstraksi fitur
* Proses pengenalan
* Paska-proses

=== Tahap Praproses ===
Tahap prapemrosesan in bertujuan untuk mendapatkan karakter tunggal dari sebuah teks terpindai dalam kondisi yang bagus dan bersih sehingga memudahkan proses pengenalannya. Menurut Bieniecki dkk, prapemrosesan diawali dengan normalisasi kondisi teks dengan cara menghilangkan derau seperti noktah dan koreksi orientasi citra teks, tahap binerisasi, serta segmentasi. Tahap ini jika dilakukan dengan benar akan meningkatan rasio akurasi pengenalan Karakter.

Dalam dokumen citra teks yang terpindai, derau dikelompokkan menjadi dua yakni derau yang berasal dari proses pemindaian dan derau bawaan teks asli yang dipindai. Derau bawaan teks asli bisa berbentuk sebagai noktah tinta, jamur yang tumbuh di kertas karena kelembapan udara, perubahan warna kertas karena usia dokumen, lubang karena ngengat, tulisan menjadi kabur karena air atau kelembapan, serta tinta tembus. Ada beberapa metode dan teknik yang bisa digunakan untuk menghilangkan derau dalam kelompok ini. Sebagai contohnya, model probabilistik seperti penutupan biner (Bahasa Inggris ''binary mask'') untuk mengurangi intensitas piksel atau distribusi Gaussian untuk memuluskan noktah atau derau lain yang cukup tebal. Selain itu, informasi tentang kepadatan piksel dalam citra keabuan yang ditunjukkan oleh grafik Histogram bisa juga digunakan untuk mengurangi derau tipe ini. Teknik yang digunakan di Mahastama dan Krisnawati adalah  dengan menghitung jarak 2 puncak tertinggi histogram menggunakan ukuran jarak Eucledian. Nilai ambang (Bahasa Inggris: ''threshold'') optimal didapatkan dengan mengukur rasio jarak kaki-kaki puncak yang diproyeksikan ke sumbu x. Nilai ambang difungsikan sebagai cara untuk menghilangkan derau sekaligus menjadi ambang pemisahan piksel teks dari piksel latar-belakangnya.

Derau yang ditimbulkan oleh proses pemindaian atau pemotretan bisa berupa citra teks yang miring, teks yang melengkung di tengah karena ketebalan buku, serta kerangka teks yang berbentuk trapezium. Beberapa metode yang digunakan untuk mendeteksi bentuk geometri atau perspektif citra teks adalah:

* Komponen terhubung (Connected Components)
* Analisis Profil Proyeksi (Projection profile analysis)
* Analisis Komponen Utama (Principle Componenet Analysis a.k.a. PCA)
* Hough Transform (Verma & Malik, )
* Korelasi silang (Cross correlation) (Verma & Malik)

Koreksi bentuk geometri dan perspektif teks dilakukan dengan metode yang sama dengan deteksinya, hanya dalam koreksi ini dicari besar sudut kemiringan atau kurva lengkung, kemudian teks akan dirotasi sesuai dengan besaran sudut yang didapatkan.

Saat citra teks sudah bersih dan memilliki orientasi geometrik yang tegak lurus, maka dilakukan pemisahan antara piksel karakter (biasanya berwarna hitam) dari piksel latar belakangnya (biasanya berwarna terang). Proses ini disebut segmentasi teks. Setelah itu, dilakukan juga segmentasi baris yakni proses memotong rangkaian karakter per baris. Proses segmentasi baris ini dikenal juga sebagai segmentasi horisontal. Untuk mendapatkan tiap karakter, maka dari tiap baris segmen dilakukan pemotongan secara vertikal berdasarkan spasi kosong atau piksel dengan warna yang terang yang memisahkan satu karakter dengan karakter di sebelah kanan atau kirinya.

=== Tahap Ekstraksi Fitur ===
Tujuan dari ekstraksi fitur adalah untuk menemukan atribut pola-pola karakter yang terpenting dan berbeda dari karakter lainnya agar bisa diklasifikasikan. Peran manusia adalah menentukan dan menyeleksi fitur yang memungkinkan proses pengenalan yang efisien dan efeektif. Pertanyaannya adalah lalu apa saja yang bisa dijadikan fitur bagi himpunan aksara atau alfabet dalam sistem penulisan bahasa tertentu? Maka berikut ini adalah yang bisa digunakan sebagai fitur penentu sebuah aksara, alfabet atau abjad:

* fitur garis: garis lurus, lengkung dan jumlah garis
* Fitur topologi: titik-titik ujung akhir, titik persilangan
* sudut
* fitur biner yang diekstraksi dari citra keabuan.

Metode yang sering digunakan untuk mengekstraksi fitur sebuah karakter adalah:

* Hough Transform
* Aspect ratio
* moment invariants
* zoning
* Fourier transforms

Tahap ekstraksi fitur ini bisa disamakan dengan pengubahan bentuk fisik karakter (terlepas apakah karakter tersebut sebuah abjad, aksara, atau alfabet) ke dalam model matematis yang bisa membedakan antara satu karakter, contohnya ‘l’, dari karakter lainnya, contohnya, ‘i’. Hasil pemetaan sebuah bentuk fisik karakter menjadi angka-angka dalam sebuah matriks atau vektor inilah yang akhirnya disebut sebagai fitur karakter.

=== Proses Pengenalan ===
Saat pola-pola karakter telah terpetakan ke dalam nilai vektor, maka permasalahan berikutnya adalah bagaimana mengelompokkan karakter yang memiliki nilai vektor yang sama atau hampir sama. Permasalahan ini diselesaikan dengan cara klasifikasi. Rangkaian proses klasifikasi nilai vektor inilah yang dikenal sebagai proses pengenalan karakter. Dengan demikian proses pengenalan karakter berurusan dengan dan berada ditataran representasi karakter (nilai vektor tadi).

Singkatnya, proses ini menerima masukan (input) sebuah vektor dari karakter, sebagai contoh fitur karakter 
A
, yang belum dikenalnya, maka modul pengenalan bertugas menghitung jarak atau nilai kemiripan antara vektor karakter 
A
 dengan nilai-nilai vektor karakter yang ada di basis data (A, a, B, b, …, z ). Nilai jarak terdekat atau kemiripan tertingi antara fitur karakter 
A
 dengan tiap nilai vektor karakter yang ada di data menjadi penentu luaran proses pengenalan ini. Andaikan setelah penghitungan jarak atau nilal kemiripan, nilai vektor 
A
 tadi lebih mirip dengan nilai vektor **A**, maka bisa dikatakan bahwa karakter 
A
 dikenali sebagai karakter **A*'. Proses klasifikasi karakter otomatis ini mengadopsi cara kita mengenali benda-benda disekitar kita. Keduanya mensyaratkan bahwa kita memiliki basis pengetahuan tentang benda-benda tersebut. Sebagai contohnya, kita bisa membedakan tomat dari kentang karena tekstur, bentuk, dan warnanya. Jika diberi varian kentang baru dengan warna kemerahan mirip tomat, kita akan mencocokkan tekstur, warna, dan bentuk tersebut dengan apa yang pernah kita lihat dan ingat, baru kita memutuskan bahwa benda itu adalah kentang dan bukan tomat.

Secara teknis, tujuan akhir dari pengenalan ini tentunya adalah untuk memberikan label kelas pola-pola karakter yang telah direpresentasikan tadi. Perlu dicatat, bahwa tiap karakter dijadikan satu kelas jika mereka adalah karakter yang sama, sebagai contohnya semua cara penulisan karakter A dari berbagai font yang berbeda dengan ukuran yang berbeda masuk menjadi kelas karakter A. Metode yang sering digunakan untuk pengenalan karakter (baca: pencocokan fitur karakter masukan dengan fitur karakter yang tersimpan di data) adalah:

* Pendekatan statistik:
** Inferensi Bayes: termasuk Naïve Bayes
** Maximum likelihood
** Regresi linear
* Pendekatan Jaringan Syaraf Tiruan:
** Back-propagation Neural Network
** Convolutional Neural Network (CNN)
* Pendekatan berbasis kernel:
** Support Vector Machine (VSM) dengan kernel-kernelnya seperti:
*** Kernel Linear bagus untuk klasifikasi biner/linear
*** Kernel RBF (Radial Basis Function) untuk klasifikasi data non-linear
*** Kernel Gaussian
* Model grafis:
** Model regresi polinomial
** Model Gaussian linear

=== Paska-Proses Pengenalan ===
Setiap sistem OCR yang dibangun dengan algoritma tercanggihpun selalu membuat kesalahan, dalam arti tidak semua karakter yang dibaca dikonversikan ke karakter padanannya. Untuk itulah tahap paska-proses pencocokan karakter dilakukan untuk meningkatkan akurasi pengenalan karakter. Sistem paska-proses ini dikenal juga sebagai proses koreksi karena modul ini bertugas untuk mengoreksi kesalahan yang sering dilakukan di tataran kata.

Teknik yang digunakan dalam paska-koreksi adalah dengan menggunakan leksikon atau kamus. Alex dkk membangun leksikonya dari buku-buku proyek Gutenberg (cari link di bhs Inggris) karena banyak mengandung varian penggunaan kata serta cara penulisan huruf dari zaman awal modern sampai kini. Kemudian mereka mengunakan pendekatan statistik kemiripan kata (*Word likelihood'') untuk mengoreksi kata yang mengandung karakter yang salah dikenali. Untuk nama oranag dan tempat, mereka juga menambahkan koreksi nama entitas yang didasarkan dari hasil pengenalan nama entitas (Named Entity Recognition).

Menurut Fink dkk, sistem paska-koreksi OCR yang sepenuhnya dibangun secara otomatis akan menghasilkan tingkat akurasi yang sama rendahnya karena ada kemungkinan bahwa proses koreksi tersebut akan mengenerasikan kesalahan baru. Untuk itu, mereka membangun modul paska-koreksinya semi-otomatis dengan sebuah peranti profiling yang interaktif dan adaptif terhadap kesalahan di manuskrip bersejarah. Adaptivitas di sini merujuk pada kemampuan untuk menambahkan himpunan pola-pola di data secara otomatis serta pengunaan token atau kata yang tak-terinterpretasikan di masa kini.

## Jenis-jenis

* Pengenalan karakter optis (Optical character recognition atau OCR) – menargetkan teks hasil ketikan, satu glif atau karakter pada satu waktu.
* Pengenalan kata optis (Optical word recognition) – menargetkan teks hasil ketikan, satu kata pada satu waktu (untuk bahasa yang menggunakan spasi sebagai pemisah kata). Biasanya proses ini tetap disebut sebagai "OCR".
* Pengenalan karakter cerdas (Intelligent character recognition atau ICR) – menargetkan teks tulisan tangan, baik berupa huruf lepas (printscript) maupun tulisan kursif, satu glif atau karakter pada satu waktu; biasanya melibatkan pembelajaran mesin.
* Pengenalan kata cerdas (Intelligent word recognition atau IWR) – menargetkan teks tulisan tangan atau kursif, satu kata pada satu waktu. Teknologi ini sangat berguna untuk bahasa yang glif-glifnya tidak terpisah dalam tulisan kursif.

Pada umumnya, OCR merupakan proses luring (offline) yang menganalisis dokumen statis. Namun, saat ini telah tersedia layanan berbasis komputasi awan yang menyediakan layanan API OCR daring (online). Selain itu, analisis gerakan tulisan tangan dapat digunakan sebagai masukan dalam pengenalan tulisan tangan. Alih-alih hanya menggunakan bentuk glif dan kata, teknik ini mampu menangkap gerakan, seperti urutan penulisan segmen, arah, serta pola saat pena ditekankan dan diangkat. Informasi tambahan ini dapat membuat proses pengenalan menjadi lebih akurat. Teknologi ini juga dikenal sebagai "pengenalan karakter daring", "pengenalan karakter dinamis", "pengenalan karakter waktu-nyata" (real-time), atau "pengenalan karakter cerdas".

## Perangkat lunak OCR
* ABBYY FineReader OCR
* Cakra
* GOCR
* Falcon32
* IPStudio
* Microsoft Office Document Imaging
* NovoDynamics VERUS
* Ocrad
* Ocropus
* OmniPage
* Readiris
* ReadSoft
* SmartScore
* Tesseract (software)
* TopSoft TopOCR

## Referensi


## Pranala luar

* ICDAR, sebuah konferensi internasional yang membahas secara komprehensif segala aspek yang berhubungan dengan rekognisi dokumen
*  Linux OCR: Sebuah tinjauan mengenai perangkat lunak bebas OCR