**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 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 kelembaban udara, perubahan warna kertas karena usia dokumen, lubang karena ngengat, tulisan menjadi kabur karena air atau kelembaban, 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.

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

Pranala luar
------------

* (Inggris) ICDAR, sebuah konferensi internasional yang membahas secara komprehensif segala aspek yang berhubungan dengan rekognisi dokumen
* (Inggris) Linux OCR: Sebuah tinjauan mengenai perangkat lunak bebas OCR Diarsipkan 2007-12-19 di Wayback Machine.

1. ↑  "Optical Character Recognition (OCR) - How it works" (dalam bahasa Inggris). Diakses tanggal 2019-05-19.
2. 1 2 3  Dhavale, S.V. 2017. Advanced Image-Based Span Detection and Filtering Techniques. Hershey: IGI Global.
3. ↑  Buckland, M.K. 2006. Emanuel Goldberg and His Knowledge Machine: Information, Invention and Political Forces. Westport, Connecticut: Libraries Unlimited
4. ↑  "History of Computers and Computing, Internet, Dreamers, Emanuel Goldberg". *history-computer.com*. Diakses tanggal 2019-05-21.
5. ↑  "WebOCR & OnlineOCR | OCR Software, OCR SDK & Toolkit, OCR Service – ExperVision OCR". *www.expervision.com*. Diakses tanggal 2019-05-21.
6. ↑  Bieniecki, W. Grabowski, S. & Rozenberg, W. 2007. Image Preprocessing for Improving OCR Accuracy. In MEMSTEC’07, Lviv-Polyana, Ukraine, pp. 75-80.
7. 1 2 3  Mahastama, A. W. & Krisnawati, L.D. 2017. Histogram Peak Ratio-based Binarization for Historical Document Image. 2017 International Conference on Smart Cities, Automation & Intelligent Computing Systems (ICON-SONICS). IEEEXplore Digital Library. Url:
8. ↑  Agam, G. Bal, G. Frieder, G. & Frieder, O. "Degraded document image enhancement", *Proc. SPIE* 6500, Document Recognition and Retrieval XIV, 65000C (January 29, 2007); doi:10.1117/12.706484
9. 1 2  Cherriet, M. Kharma, N. Liu, C.L. & Suen, C.Y. 2007. Character Recognition System: A Guide for Students and Practioners. Hoboken, new Jersey: A John Wiley & Sons, INC.
10. 1 2  Alex, B. Glover, C. Klein, E. Tobin, R. 2012. Digitised Historical Text: Does it have to be mediOCRe? Proceedings of KONVENS 2012 (LThist 2012 workshop), Vienna, September 21, 2012
11. ↑  Fink, F. Schulz, K.U. & Springmann, U. 2017. Profiling of OCR’ed Historical Texts Revisited. DATeCH 2017, Göttingen: ACM.

| * l
* b
* s
Pengolahan bahasa alami |
| --- |
| Istilah umum | 
* AI-komplit
* Bag-of-words
* n-gram
	+ Bigram
	+ Trigram
* Linguistik komputasi
* Pemahaman bahasa alami
* Stop words
* Text processing

 |
| Analisis teks | 
* Collocation extraction
* Concept mining
* Coreference resolution
* Deep linguistic processing
* Distant reading
* Information extraction
* Named-entity recognition
* Ontology learning
* Parsing
* Part-of-speech tagging
* Semantic role labeling
* Semantic similarity
* Sentiment analysis
* Terminology extraction
* Text mining
* Textual entailment
* Truecasing
* Word-sense disambiguation
* Word-sense induction

|  |  |
| --- | --- |
| Segmentasi teks | 
* Compound-term processing
* Lemmatisation
* Lexical analysis
* Text chunking
* Stemming
* Sentence segmentation
* Word segmentation

 |

 |
| Peringkasan otomatis | 
* Multi-document summarization
* Sentence extraction
* Text simplification

 |
| Mesin penerjemah | 
* Computer-assisted
* Berbasis contoh
* Berbasis aturan
* Statistik
* Berbasis transfer
* Neural

 |
| Model Semantik distribusi | 
* BERT
* Document-term matrix
* Explicit semantic analysis
* fastText
* GloVe
* Language model
* Latent semantic analysis
* Seq2seq
* Word embedding
* Word2vec

 |
| Sumber bahasa,datasets and corpora | 

|  |  |
| --- | --- |
| Jenis danstandar | 
* Linguistik korpus
* Sumber daya leksikal
* Data Terbuka Bertautan Linguistik
* Kamus yang dapat dibaca mesin
* Teks paralel
* PropBank
* Jaringan semantik
* Sistem Organisasi Pengetahuan Sederhana
* Korpus ucapan
* Korpus teks
* Thesaurus (information retrieval)
* Treebank
* Ketergantungan Universal

 |
| Data | 
* BabelNet
* Bank of English
* DBpedia
* FrameNet
* Google Ngram Viewer
* UBY
* WordNet

 |

 |
| Identifikasi otomatisdan pengambilan data | 
* Pengenalan suara
* Segmentasi ucapan
* Sintesis ucapan
* Generasi bahasa alami
* Optical character recognition

 |
| Model topik | 
* Document classification
* Latent Dirichlet allocation
* Pachinko allocation

 |
| Peninjauandengan bantuan komputer | 
* Automated essay scoring
* Concordancer
* Grammar checker
* Predictive text
* Penilaian pengucapan
* Pemeriksa ejaan
* Sintaks menebak

 |
| Bahasa alamiantarmuka pengguna | 
* Chatbot
* Fiksi interaktif
* Menjawab pertanyaan
* Asisten virtual
* Antarmuka pengguna suara

 |
| Related | 
* Hallucination
* Perangkat Bahasa Alami
* spaCy

 |