Pengenalan karakter optis: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
JAnDbot (bicara | kontrib)
k fix
 
(42 revisi perantara oleh 20 pengguna tidak ditampilkan)
Baris 1:
'''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.<ref>{{Cite web|url=https://www.nicomsoft.com/optical-character-recognition-ocr-how-it-works/|title=Optical Character Recognition (OCR) - How it works|language=en-US|access-date=2019-05-19}}</ref> 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.
'''Rekognisi karakter optik''' atau '''pengenalan huruf optik''' (lebih populer dalam istilah [[bahasa Inggris]], '''''optical character recognition''''', yang biasa disingkat '''OCR''') adalah alat mekanis atau elektronika yang digunakan untuk menerjemahkan menerjemahkan tulisan tangan ataupun naskah ketikan (biasanya dipindai menggunakan [[pemindai]]) menjadi teks yang dapat diedit dengan suatu aplikasi komputer.
 
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.<ref name=":0">Dhavale, S.V. 2017. Advanced Image-Based Span Detection and Filtering Techniques. Hershey: IGI Global.</ref> Kemudian berlanjut pada penemuan mesin yang mampu mengubah karakter tercetak ke dalam kode standard telegraf buatan Emanuel Goldberg pada tahun 1914.<ref>Buckland, M.K. 2006. Emanuel Goldberg and His Knowledge Machine: Information, Invention and Political Forces. Westport, Connecticut: Libraries Unlimited</ref> 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.<ref name=":0" /> Kembali ke penemuan Goldberg, di akhir tahun 1920an tepatnya pada tahun 1927, ciptaannya yang dinamai Mesin statistik (''statistical machine'')<ref>{{Cite web|url=https://history-computer.com/Internet/Dreamers/Goldberg.html|title=History of Computers and Computing, Internet, Dreamers, Emanuel Goldberg|website=history-computer.com|access-date=2019-05-21}}</ref> 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.<ref name=":0" /> 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<ref>{{Cite web|url=http://www.expervision.com/ocr-software/webocr-onlineocr|title=WebOCR & OnlineOCR {{!}} OCR Software, OCR SDK & Toolkit, OCR Service – ExperVision OCR|website=www.expervision.com|access-date=2019-05-21}}</ref> -- 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,<ref>Bieniecki, W., Grabowski, S., & Rozenberg, W. 2007. Image Preprocessing for Improving OCR Accuracy. In MEMSTEC’07, Lviv-Polyana, Ukraine, pp. 75-80.</ref> 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.<ref name=":1">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: https://ieeexplore.ieee.org/document/8267828</ref> 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.<ref name=":1" /> 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.<ref>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</ref> 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<ref name=":1" /> 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<ref name=":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.</ref> 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:<ref name=":2" />
 
* 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 <s>A</s>, yang belum dikenalnya, maka modul pengenalan bertugas menghitung jarak atau nilai kemiripan antara vektor karakter <s>A</s> dengan nilai-nilai vektor karakter yang ada di basis data (A, a, B, b, …, z ). Nilai jarak terdekat atau kemiripan tertingi antara fitur karakter <s>A</s> dengan tiap nilai vektor karakter yang ada di data menjadi penentu luaran proses pengenalan ini. Andaikan setelah penghitungan jarak atau nilal kemiripan, nilai vektor <s>A</s> tadi lebih mirip dengan nilai vektor '''A''', maka bisa dikatakan bahwa karakter <s>A</s> 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<ref name=":3">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</ref> 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).<ref name=":3" />
 
Menurut Fink dkk,<ref>Fink, F., Schulz, K.U., & Springmann, U. 2017. Profiling of OCR’ed Historical Texts Revisited. DATeCH 2017, Göttingen: ACM.</ref> 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
* [https://trawaca.id/ocrjawa Cakra]
* [[GOCR]]
* [http://www.phoenixsoftware.com/Falcon/Falcon32/DataEntrySoftware.htm Falcon32]
Baris 19 ⟶ 100:
== Pranala luar ==
* {{en}} [http://www.icdar2007.org ICDAR], sebuah konferensi internasional yang membahas secara komprehensif segala aspek yang berhubungan dengan rekognisi dokumen
* {{en}} [http://groundstate.ca/ocr Linux OCR: Sebuah tinjauan mengenai perangkat lunak bebas OCR] {{Webarchive|url=https://web.archive.org/web/20071219024601/http://groundstate.ca/ocr |date=2007-12-19 }}
{{komputer-stub}}
 
<references />
[[ar:تعرف ضوئي على المحارف]]
{{Natural language processing}}
[[bn:অপটিক্যাল ক্যারেক্টার রিকগনিশন]]
{{Uncategorized|date=Februari 2023}}
[[ca:Reconeixement òptic de caràcters]]
[[cs:OCR]]
[[da:Optical character recognition]]
[[de:Texterkennung]]
[[el:Οπτική Αναγνώριση Χαρακτήρων]]
[[en:Optical character recognition]]
[[eo:Optika signorekono]]
[[es:Reconocimiento óptico de caracteres]]
[[et:OCR]]
[[fa:تشخیص نوری نویسه‌ها]]
[[fi:Tekstintunnistus]]
[[fr:Reconnaissance optique de caractères]]
[[gl:Optical Character Recognition]]
[[he:זיהוי תווים אופטי]]
[[hi:ओसीआर]]
[[hr:Optičko prepoznavanje znakova]]
[[hu:Optikai karakterfelismerés]]
[[hy:OCR]]
[[is:Ljóslestur]]
[[it:Optical Character Recognition]]
[[ja:光学文字認識]]
[[ko:광학 문자 인식]]
[[mk:Оптичко препознавање на знаци]]
[[nl:Optical character recognition]]
[[no:Optisk karaktergjenkjenning]]
[[pl:OCR]]
[[pt:Reconhecimento ótico de caracteres]]
[[ru:Оптическое распознавание символов]]
[[sk:Optické rozoznávanie znakov]]
[[sv:Optical character recognition]]
[[ta:ஒளி எழுத்துணரி]]
[[th:โอซีอาร์]]
[[tr:Optik Karakter Tanıma]]
[[ur:بصریاتی حرف شناسی]]
[[vi:Nhận dạng ký tự quang học]]
[[zh:光学字符识别]]