Thursday, June 29, 2017

Better OCR Quality & Implementasi untuk Automasi Persiapan Data Latih


Kemarin aku nemu tool bagus yang bisa ngehasilin OCR yang lebih akurat dan lebih robust. Tool ini bisa handle untuk kasus font alay, atau bahkan tulisan tangan. Nama toolnya PDFLib TET. Hasil OCR berupa XML. Dari raw XML kita bisa parse teks beserta lokasinya di mana aja per karakter. Dari sini kita bisa proses teks yang ada jadi training data set. Ini lebih bagus daripada Tesseract, karena Tesseract bahkan hanya punya lokasi per kata, bukan per karakter. Sementara itu, akurasi Tesseract dalam nebak huruf juga masih buruk.

Hari ini waktuku habis untuk bikin XML parser hasil OCR PDFLib supaya ngeconvert dari PDF jadi teks beserta lokasinya. Aku pake library Dom4J buat ngeparse XML. Juga aku bikin supaya format outpu yang diekstrak dari XML parser supaya sesuai dengan format Weka, biar nanti waktu sudah ada data mentah dari Thao, cepet buat ngebikin data training karena programnya sudah ada.

Pulang kerja aku nyoba curry deket stasiun. Enak.

Fried fish curry
Enak! Ketagihan. Dan kayaknya besok bakal makan lagi di sana aja. Sekian. Dah malem! Semangat, bentar lagi weekend.

Wednesday, June 28, 2017

Figure Out How to Apply Machine Learning


Sebenarnya kemarin aku udah selesai buat program Java sesuai spesifikasi. Tapi singkatnya tugas project ini nambah spek: bikin sistem yang bisa belajar dari correct input yang dimasukin user misalkan tebakan sistem salah. Artinya, program nggak hanya harus bisa memprediksi mana nama company, tax rate, tanggal, dalam sebuah invoice, tapi juga harus bisa beradaptasi dengan masukan user kalau tebakan program salah. Nah, di sini kita harus apply machine learning.

Hari ini aku nyari tau bagaimana supaya bisa apply machine learning di masalah ini. Dan akhirnya ketemu sebuah solusi. Apabila user memasukkan teks, kita bisa tahu lokasi teks tersebut di mana. Lokasi ini berupa x-y koordinat dari invoice. Lokasi ini akan dimasukkan sebagai parameter/fitur/atribut dalam machine learning. Dan class/prediksi-nya adalah berupa binary class, yes atau no, artinya apakah teks yang bersangkutan merupakan field yang kita cari.

Simpelnya, misal kita ingin menebak apa nama company yang menerbitkan suatu invoice. Berdasarkan track record masukan user, dapat diketahui bahwa biasanya nama company terletak di ujung kiri atas. Nah, apabila nanti ada invoice baru yang masuk, model machine learning kita akan menebak field nama company dengan teks yang ada di ujung kiri atas invoice. Gampangannya seperti itu. Di implementasi programnya, tidak begitu mudah karena komputer nggak punya visual mata seperti kita jadi kita harus apply algoritma machine learning.

Kenapa harus pake machine learning? Karena format invoice akan ada banyak sekali, sekitar ratusan. Kalo format invoice cuma satu, kita bisa gunakan regex atau rule-based program aja berdasarkan properti field yang bersangkutan (contoh field: nama company, tanggal, dst.). Sayangnya bisa saja format invoice bisa berbeda-beda, company A suka naruh nama di ujung kiri atas, company B di ujung kanan atas, company C di bawah setelah alamat perusahaan, dst. Selain kita apply machine learning untuk memprediksi di mana lokasi sebuah field biasanya, kita juga perlu apply machine learning untuk mengidentifikasi apakah format template dari invoice sudah pernah ada sebelumnya atau tidak. Ini bisa diselesaikan dengan image similarity.

Untuk besok, rencanaku adalah implementasi module converter PDF ke sentence per block menggunakan tool ini. Trus aku bakal mempersiapkan training data buat eksperimen machine learning nanti, sambil menunggu data mentahnya dikasih dari Tomita-san. Setelah itu, kita bakal sering mencebur ke algoritma-algoritma yang disediakan Weka, buat nyari mana algoritma yang paling bagus untuk memprediksi apa yang kita butuhkan.

Oiya, pulang dari kantor aku sempet ngefoto beberapa hal.

Supir shuttle bus kantor (Gotenyama Trust Tower) - Shinagawa station.
Bus ini gratis!

Bahkan dalam bus pun ada gambar beruang lucu.
Betapa Jepang sangat terobsesi dengan hal-hal imut.

Orang menyeberang di jam kerja pas rush hour.
Kalo di Jakarta mungkin yang rame jalanannya, macet.

Jalan raya depan Shinagawa station. Sepi walaupun rush hour

View lain, masih di Shinagawa. Serasa kayak di Jepang.

Kereta Yamanote Line PENUH PARAH buset sampe desak-desakan.
Ini sekitar jam 6-7. Wajar karena orang-orang pulang kerja.

Sampe mau masuk pun sesusah itu tapi masih dipaksain.

Majalah dewasa sangat mudah ditemukan di convinience store terdekat.
Jangan khawatir!

Oke, cukup sekian. Sampe jumpa besok!

Tuesday, June 27, 2017

Present the Demo of Program


Hari ini aku implementasi core otak dari intern project. Bikin fitur yang bisa recognize mana nama company dari raw text hasil scan dari PDF, aku pake library Stanford NLP Group buat Name-Entity Recognition. Trus aku implemen fitur yang bisa recognize mana aja row di hasil scan-an invoice, kodingan traversal biasa, parsing text pake Java. Programnya jadi. Setelah dapet masalah dengan banyak dependensi, akhirnya berhasil bikin jar gemuk yang isinya program yang ke-include semua dependensinya, jadi agak besar ukurannya, sekitar 50 MB-an.

Programnya kelar hari ini. Dan after debugging for some time, akhirnya it works! Basically aku sudah implemen dan program udah bisa jalan sesuai permintaan. Kemudian aku nge-ping si boss lewat Slack bilang ada waktu bentar ga buat liat hasil karyaku yang udah bisa dipake ini.

Sore sekitar jam 5 aku mulai demoin program yang udah kubikin ke Tomita-san. Kita bicara dengan bantuan Fukui-san sebaga translator. Intinya dapet banyak masukan supaya bisa learning dari previous document, dengan pendekatan ngenalin lokasi dari teks yang mau kita cari. Ini aku belum kebayang sama sekali learning buat recognize locationnya kayak gimana. Pusing. Kayaknya mau mulai dipikir besok pagi.

Dan, sekian. Hari ini ga jalan ke mana-mana. Terlalu lelah koding. Mau tidur aja. Bye!

Monday, June 26, 2017

Implement Invoice Extractor


Hari ini hari Senin, udah bukan weekend lagi. Aku mulai implementasi intern project. Fungsionalitas utama program yang kubuat adalah generate dari PDF invoice jadi tabel CSV.

Untuk NLP-nya, aku pake Stanford Natural Language Processing tool. Mereka ngembangin NER (Named-Entity Recognition) Tagger yang open source dan punya interface yang langsung dipake dengan gampang. Dengan NER Tagger, kita bisa langsung tau mana yang nama organisasi/orang/tempat dalam suatu teks.

Untuk konversi image ke text aku pake Tesseract. Sayangnya Tesseract hanya support PNG/JPG. Jadi kalo kita punya file PDF, harus di-convert dulu ke image. Aku pake Ghostscript library buat convert format dari PDF ke PNG.

Selesai kerja, aku ke Shibuya. Ketemu toko namanya Itsudemo :(

Itsudemo sagashite iru yo.
https://www.youtube.com/watch?v=BqFftJDXii0
Habis itu aku muter nyari toko yang jual koper. Koperku rusak. Dua rodanya patah jadi harus diangkat kalo mau pindah. Somehow sangat nggak nyaman buat balik ke Indo nanti. Setelah muter lama akhirnya ketemu koper di Loft, dan ada yang lagi sale.

New luggage! 
Mas-mas ngamen di Shibuya crossing



Sekian. Sampai jumpa besok!

Sunday, June 25, 2017

Wakwaw, Lihat Bagaimana Orang Ini Merayakan Idul Fitri di Tokyo! Nomer 6 Akan Membuat Anda Terkejut!



Saya mengucapkan selamat Hari Raya Idul Fitri bagi semua pembaca blog sekalian, semoga kalian baca ini yaa, amiin.  Mohon maaf apabila ada kata yang salah di setiap post di blog ini.

Hari ini Idul Fitri! Sayangnya karena sedang ada di Jepang, suasana Idul Fitrinya kurang terasa. Jadi ya, rasanya mirip hari Minggu lainnya. Untungnya Idul Fitri kali ini jatuh di Hari Minggu jadi nggak perlu izin kerja macem-macem buat solat Ied. Namanya juga Jepang, nggak ada libur hari raya, beda banget sama Indo yang emang mayoritas muslim dan kalo Idul Fitri bisa libur sampe 2 minggu.

Boys Day Out to Akiba and Shibuya

Meiji shrine
Weekend! Wira (IF2012) bilang sangat penat tiap weekend selalu di kampus. Jadi dia memutuskan buat jalan-jalan! Dia mau ngajak Iskandar (IF2011) sama Michi (IF2012) juga. Jadi simpelnya kita janjian jam 12.30 pm di exit stasiun Harajuku/Meijijingu-mae. Kali ini summer. Matahari terik tapi ga terlalu panas. Pakaian orang cerah warna-warni. Udara sejuk. Banyak orang keluar jalan-jalan.

Wira lagi S2 di bidang NLP (Natural Language Processing) di Tokodai (Tokyo Institute of Technology), semacam ITB-nya Jepang. Iskandar sama Michi software engineer di HDE, Inc di Tokyo. Mereka menetap di Jepang udah lumayan lama, udah sangat terlihat kayak penduduk lokal sini.

Solat Jumat Pertama di Tokyo



Hari ini sahur cukup istimewa karena aku sahur hasil masakan sendiri. Udah nemu beras di supermarket. Dan tinggal masak. Ada indomie bawa dari Indo. Dan ada abon. Beginilah hasilnya.

Porsi kuli

Saturday, June 24, 2017

Turkish Food at Tokyo Camii



Thao gives me this at the office!
Fish cracker
Thao adalah cewek Vietnam yang kerja di Multibook juga. Mejaku ga jauh ama meja dia. Dia bicara Vietnam ama Jepang. Sama sedikit Inggris. Tapi Inggrisnya broken parah. Dia ngasih makanan itu hari ini, tapi aku lagi puasa. Aku bilang aku lagi puasa dalam Inggris, tapi dia ga ngerti. Aku jelasin puasa itu apa. Makin ga ngerti lagi. Susah juga jelasin puasa itu apa kalo yang bersangkutan ga familiar dengan Islam, dan terkendala bahasa juga hahaha. Anyway, dia baik banget. Lucu! Dan sweet juga!

Wednesday, June 21, 2017

Another Day at Work


Hari ini aku bangun dan udah jam 9 aaaaaa. Cepet-cepet persiapan, dan langsung commute seperti biasa.

Di kantor aku ngelanjutin bikin script buat ngakses OCR buat Microsoft Computer Vision API, which is ga terlalu bagus karena dia perlu nyediain URL yang harus bisa diakses Microsoft-nya. Somehow untuk security reason ini kurang bagus karena bisa aja terjadi leak ketika kita nyediain link yang ternyata juga bisa diakses oleh selain Microsoft.

Abis itu aku bikin presentasi PPT tentang apa yang kulakukan 2 hari terakhir, beserta summary-nya, in English. Udah deh. Besok presentasi. Semoga bahasaku dimengerti mereka besok! Semoga kita bisa cooperatively working!

Tiba-tiba udah jam 6, dan saatnya balik.

Found this cool car in front of the office.



Working Day dan Sedikit Perbedaan Budaya Soliter Jepang-Indonesia


Basically hari ini ga ada hal luar biasa yang bisa dilakukan sih karena hari kerja. Kamu bangun pagi-pagi, mandi, ke kantor, ngerjain kerjaan, tiba-tiba dah malem, balik ke kosan, capek, tidur.

Pagi-pagi di stasiun Yoyogi-Uehara ketemu anak-anak kecil (sekitar 3-5 tahun) sekolah. Aku nggak tau apa kerjaan sekolah mereka tapi kok seems fun. Banyak yang bilang pendidikan awal di Jepang bukan diajari baca tulis, tapi diajari gimana manner yang baik. Dan sepertinya itu benar. Ini bukti autentik mereka diajarin cara ngantre, walaupun ya namanya anak kecil kadang ga bisa diatur dan malah ngobrol sendiri.

Anak-anak kecil belajar ngantri. Sekolah pake seragam bebas
Di sebelah kiri ada mesin otomatis buat beli tiket.

Monday, June 19, 2017

First Day at Multibook!


Aku bangun. Tiba-tiba jam 7. Harus janjian sama Atsushi, anak AIESEC jam 9.30. Kita bakal ketemuan di Shinagawa station trus nanti berangkat bareng ke kantor. Atsushi ini adalah TN manager, anggota AIESEC yang menghubungkan aku sama perusahaan, mulai dari persyaratan administratif, ngurus visa, bayar ongkos kosan, sampe yang jemput di bandara pas pertama kali dateng, dll. Super baik dah pokoknya.

Atsushi is this guy

Sunday, June 18, 2017

Makan Gratis di Tabligh Akbar KBRI


Semalem aku baru tidur jam 5am. Sebelum tidur, aku sempet foto halaman kosan Sakura House dari depan, mumpung matahari masih ga menyengat, udara masih sejuk, embun masih basah. Walhasil agak bagus ternyata ya. Kayak di villa-villa Jepang gitu.

Muslim Sakura House, Yoyogi Uehara, Shibuya

First Day in Tokyo


Somewhere in Shinjuku
Setelah tidur 5 jam, akhirnya kita (aku dan 2 anak AIESEC, Hiro sama Hashi) bangun. Kami tidur di bangku tempat hall kedatangan di Haneda. Rencana kita pagi itu adalah nyari SIM, dan ambil kunci kos di kantor Sakura House.

Pertama kita pergi ke BIC CAMERA buat nyari SIM card. Best deal yang bisa kita dapet adalah perdana Docomo 5 GB buat masa berlaku 3 minggu. Daaaan, harganya 3477 yen = ~416 ribu IDR. Ini harga paling bagus yang bisa kita dapet karena yang lain jauh lebih mahal lagi. Aku akhirnya ambil 2 paket data ini soalnya bakal di Jepang 6 minggu.

Trip to Japan!




Halo semuanya! Setelah sekian lama nggak ngeblog, aku rasa ini saat yang tepat buat ngeblog lagi.

Sebelumnya, perkenalkan aku anak Teknik Informatika tingkat 4 di Institut Teknologi Bandung angkatan 2013.

Kali ini aku mendapat kesempatan tinggal selama 6 minggu di Jepang untuk internship program dari AIESEC di sebuah perusahaan bernama Multibook sebagai software developer. Aku bakal tinggal di Tokyo Metropolitan, ibukota Jepang, di daerah Shibuya. Ini bakal jadi pertama kalinya aku tinggal cukup lama di negara orang. Sebelumnya aku pernah ke Singapur dan Filipina, tapi hanya untuk beberapa hari. So, it will be a fun journey!