Project ini adalah sebagai modul untuk membaca NIK KTP Indonesia serta melakukan croping ROI (region of interest) foto KTP sesuai kebutuhan client yang fokus untuk mempermudah administrasi fintech-BI Checking. Setelah dipikir-pikir dari sekian bahasa pemrograman seperti C#, Matlab, Octave, C++, Python, Julia, dan Java, maka kami memilih bahasa Java karena lebih mengedepankan aplikasi yang bersifat applicable dibandingkan dengan Matlab/Octave, Julia, dan Python. Selain hal tersebut untuk library Digital Image Processing seperti Accord.net/AForget.net tidak menjadi pilihan karena merupakan net framework, PIL Image processing Python juga tidak dipilih harus bisa jalan di java sehingga kami memilih OpenCV 4.4.0. Sedangkan urusan OCR Optical Character Recognition diserahkan kepada tesseract karena tingkat akurasinya yang tinggi.
Adapun bahasa Java menggunakan versi java version “1.8.0_251”; Java(TM) SE Runtime Environment (build 1.8.0_251-b08); Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode) dengan Netbeans Apache NetBeans IDE 12.0 sebagai IDE. Fokus utama dari project ini cukup mudah yaitu mencari lokasi NIK serta mengekstraknya menjadi sebuah informasi text (biasa disebut dengan teknologi Optical Character Recognition) serta melakukan deteksi lokasi wajah (face detection). Jadi 3 tugas utama tersebut punya batasan yaitu
- Tidak Adanya image rotasi atau deskewing
- Serta Scan KTP dalam kondisi bagus
Mengingat NIK sangat penting digunakan untuk pengajuan pada basis data Fintech yang sudah sangat terhubung dengan Disdukcapil maka hanya dengan mendapatkan NIK akan mempermudah proses administrasi / tarik data / serta BI Checking. Sebagai contoh scan gambar KTP, diambil dari google saja (jadi kami hanya comot saja, semoga tidak kena protes)
Fokus kami hanya pada membuat ketiga modul tersebut bekerja secara bersama-sama dan memang sifatnya applicable – pure business (bukan untuk kepentingan akademis yang lebih mengutamakan analisis algoritma), silahkan bagi kalian yang ingin meneliti algoritma tersebut disini
Deteksi Text dan Wajah Otomatis
Adapun untuk meningkatkan akurasi pembacaan NIK ini menjadi sebuah tantangan sendiri karena sulitnya mendeteksi secara otomatis, namun berkat adanya library OpenCV, maka tugas tersebut jadi terasa lebih mudah. Berikut adalah contoh text detection yang dilakukan pada beberapa gambar.
Adapun untuk text detection di KTP akan menghasilkan sebagai berikut, nampak bahawa text detection berjalan dengan baik serta face detection nya pun berjalan dengan baik
Namun demikian perlu adanya akurasi yang lebih baik karena begitu banyak variasi yang terjadi, tapi kami yakin bila disempitkan case nya yaitu hanya mengolah data dari sebuah Scanner khusus, maka akurasinya akan semakin baik!
Waktu Proses Scanner KTP
Untuk waktu yang dibutuhkan masih cukup lama yaitu berkisar antar 3 – 4 detik
waktu yang dibutuhkan : 3.9021114
Jadi perlu ditingkatkan lagi mengingat waktu tersebut terlalu lambat, sehingga dengan waktu tersebut 1 menit hanya mampu proses sebanyak 20 KTP saja. Hal ini memang wajar karena KTP sengaja di resize dengan ukuran cukup besar yaitu tinggi: 637 dan lebar: 900 demi meningkatkan akurasi NIK yang cukup susah dideteksi dibanding dengan deteksi wajah di KTP yang cukup mudah dilakukan. Bahkan untuk NIK dibawah ini
hasil ketika tidak dilakukan tuning, akan terjadi kesalahan baca yaitu
3524271522553:3-
harus dilakukan beberapa tuning secara khusus agar bisa lebih ditingkatkan akurasinya
tuning dilakukan secara by code demi menghilangkan garis/semburat yang ada!
31740716025353001
Kami harus melakukan trade off antara time speed atau memilih accuracy, Oiya kami menggunakan komputer dengan spesifikasi cukup lama
Tentu akan berbeda jauh dengan komputer server yang akan digunakan kelak nantinya karena dengan membuat sendiri modul tersebut akan menghemat biaya administrasi dariapda harus berlangganan API untuk mengolah data tersebut
Tampilan Aplikasi Scanner Kartu KTP Indonesia
Bentuk dari aplikasi sebenarnya hanya API / backend saja, namun untuk memberikan gambaran kinerja modul, kami buat sederhana saja menggunakan SWING/AWT dengan hasil sebagai berikut dengan sisi kanan menampilkan informasi NIK serta hasil croping wajah