Membuat Raspberry Pi Sebagai Optical Character Recognition (OCR) Server

Ini bagian dari weekend project atau #codingforfun project. Awalnya saya nggak mau tulis di blog karena hasilnya masih berantakan (not for production purpose). Tapi saya berpikir mungkin ini bisa berguna untuk adik-adik yang mencari ide untuk bahan tugas akhir atau penelitian begitu. Ide dan cara berpikirnya yang ingin saya share. Mohon maaf untuk pembaca blog saya karena bahasan ini sangat teknis dan terkesan bahasa dari planet sebelah hehehe…

Awal mulanya begini, saya punya buku tafsir Al-Lubab karangan Prof. Quraish Shihab, kado ultah dari istri. Prof. Quraish sudah bilang bahwa buku tsb adalah tafsir yang sudah diperas yang ditujukan untuk mereka yang tidak punya banyak waktu untuk membaca tafsir berat seperti Al-Mishbah. Malasnya saya, bahkan yang katanya singkat itu belum saya baca. Bahkan satu surat pun belum selesai kecuali Al-Fatihah. Buku ini begitu tidak populer untuk saya dan selalu kalah prioritas dibanding buku-buku lainnya.

Saya kemudian mencanangkan gerakan membaca satu hari satu halaman. Supaya praktis, saya foto halamannya dengan handphone. Di situ lah idenya muncul. Kenapa tidak sekalian didigitalisasi dengan software OCR (Optical Character Recognition)? OCR adalah software yang bisa mengenali karakter di file gambar menjadi teks yang bisa dicopy-paste. Tentu saja karena hak cipta ada di Ustad Habib Quraish Shihab, saya tidak akan share teks hasil digitalisasinya.

Tapi saya tidak mau ribet. Saya tidak mau setelah memotret halaman di handphone, transfer dulu ke laptop, baru menjalankan software OCR-nya. Saya maunya praktis, semua bisa dilakukan di handphone. Karena belum ada aplikasi OCR di handphone, saya menggunakan pendekatan client-server dengan memanfaatkan Raspberry Pi. Berikut alur kerjanya:

  1. Potret halaman buku dengan kamera handphone
  2. Kirimkan file tersebut melalui email (sebagai attachment) ke server Raspberry Pi. Saya tidak mau ribet pakai FTP atau protokol lain.
  3. Server Raspberry Pi selalu monitor email tersebut, jika ada email yang diterima, ia akan download attachment-nya.
  4. Raspberry Pi menjalankan software OCR.
  5. Hasil OCR yang berupa teks dikirimkan balik melalui email ke si pengirim. Selesai.

Untuk bahasa, saya menggunakan Python dengan library imaplib. Email yang saya pakai adalah GMail. Ini adalah potongan kode untuk membaca email dari GMail, membaca attachment-nya dan disimpan ke temporary file.

Untuk urusan OCR, saya pakai Tesseract OCR, software OCR yang populer. Di Raspberry Pi (Raspbian), instalasinya cukup dengan apt-get install tesseract. Untuk memanggil tesseract dari Python, saya pakai library pytesseract. Hasil teks dikembalikan ke pengirim melalui email dengan library smtplib.

Kinerja OCR

Hasil OCR akan sangat tergantung kualitas input. Dengan input seperti gambar di bawah ini yang masih asli, hasilnya akan tidak akurat. Jadi saya harus melakukan editing manual dengan memotong bagian teksnya saja menjadi tiga bagian (paragraf utama, teks dalam kotak, dan catatan kaki).

Teks berikut ini jika saya hanya melakukan cropping di satu halaman saja:

TEMA DAN TUJUAN UTAMA SURAH

Tema utama surah im' adalah tentang tatakrama, y akm' tatakrama
terhadap (1) Allah swt., (2] Rasul saw., (3) Sesama Muslim yang
taat, [4) terhadap yang durhaka, dan (5) terhadap sesama
manusia. Karena itu, terdapat lima kali panggilan Ya ayyuha
al—ladzina ’Amana yang terulang pada surah ini, masing—masing
untuk kelima macam objek tersebut.

Dalam konteks uraian tentang tema itu, maka ditemukan
dalam surah ini banyak nilaj luhur yang dipaparkan, seperti
tentang kesatuan kemanusiaan, substansi iman, demikian
juga tuntunan menghadapi perbedaaan dan perselisihan, serta
urajan tentang cara menghindal‘inya. Dengan memperhatikan
dan menerapkan nilai-nilai itu, akan tercipta kehidupan bahagia
bagi setiap individu sekaligus wujud dan mantap sistem ke-
masyarakatan yang sejahtera.

Tujuan utama surah ini adalah mendidik setiap umat Islam
bagaimana seharusnya berprilaku sehingga tercipta lingkungan
yang bersih dan sejahtera yang dihiasi dengan sopan santun
terhadap Allah swt., Rasul saW., diri sendiri, dan orang lain.
Sopan santun, bukan saja berkaitan dengan sikap lahiriah,
tetapi berkaitan juga dengan bisikan hati dan gejolak—gejolaknya.
INTI SARI KANDUNGAN AYAT
AYAT 1-5
Akhir surah yang lalu, al-Fath, berbicara tentang sifat-sifat
terpuji orang-orang ben’man yang mengikuti Nabi Muhammad
:::::2:: 23:22:: W Wm man

u m s . an _ ‘
sesuatu ketetapan apa p:3:u}:::i:::::g€:§:r;menetapkan
masyarakat, sebelum atau bertentangan denganl:6:2:;::r—l
Nya. Setelah pesan khusus itu, ayat ini melanjutkan dengan
pesan umum yakni: Bertakwalah kepada Allah swt. dengan
melaksanakan—sepanjang kemampuan—sernua perintah-Nya

Hasilnya akan lebih akurat jika saya meng-cropping bagian yang spesifik seperti misalnya begini:

untuk menemui mereka, maka pastilah penantian itu baik atau ‘
lebih baik bagi mereka. Tetapi sayang, mereka tidak bersabar, .
sehingga mereka tidak memperoleh yang balk atau yang lebm
baik. Namun demikjan. Allah swt. tidak menyiksa mereka. Allah
swt. Maha Penyantun dan Allah swt. Maha Pengampun bagi
yang bertaubat, lagi Maha Pengasih kepada hamba-hamba-Nya
yang taat [5].2

Beberapa kata yang melenceng dikarenakan ada bagian yang menggelembung di kertasnya sehingga tulisannya tidak lurus. Ada satu hal lagi yang baru saya sadari, setiap baris selalu diberi karakter ganti baris sehingga harus secara manual dihapus supaya bisa menjadi satu paragraf utuh.

Saya berharap nanti bisa menulis kode untuk melakukan pre-processing gambar dengan mendeteksi blok-blok teks sehingga saya tidak perlu melakukan cropping manual. Ini bahasan teknis yang sulit yang melibatkan teknik manipulasi citra (image). Sesuatu yang sangat mudah dilakukan manusia tapi sangat sulit dilakukan oleh komputer.

Entahlah, namanya juga coding for fun hehehe…

2 thoughts

Leave a Reply

Your email address will not be published. Required fields are marked *