laporan perkembangan · 2018. 12. 7. · 3. pass ke tiga adalah merging dan splitting di mana (1)...
TRANSCRIPT
Laporan Perkembangan
Proyek OCR Aksara Jawa
Tahap II
Oleh
Aditya Wikan Mahastama
Universitas Kristen Duta Wacana
Yogyakarta
2018
Laporan Perkembangan Proyek OCR Aksara Jawa
Tahap : II
Pelaksana : Aditya Wikan Mahastama (Pak Mahas)
Batas Waktu : 31 Oktober 2018
Penyerahan Laporan : 21 November 2018 (karena Pak Mahas ditugaskan ke Belanda)
A. Perkembangan Proyek
Tahapan proyek telah mencapai sebagian kemajuan seperti yang disyaratkan sebagai
milestone Tahap II untuk pekerjaan pelaksana, meliputi:
1. Pemeliharaan Server
Persiapan server Google Cloud untuk sementara ditunda karena hingga tahap ini belum
membutuhkan uji server.
2. Pengembangan Perangkat Lunak
Pada pertengahan bulan September 2018, mengikuti kondisi bahasa pemrograman yang
digunakan oleh voluntir penelitian (Samuel dan Ofri) yang terkait dengan sistem operasi yang
mereka gunakan, maka versi Python yang digunakan untuk pengembangan perangkat lunak
disesuaikan menjadi Python 3.6, tercermin dari kode program yang mulai menggunakan awalan
3 (3kodexx.py) pada penyimpanan Google Drive. Kode program mengalami sejumlah
penyesuaian agar dapat berjalan di Python 3.6.
Kemajuan yang telah berhasil dicapai pada tahap ini adalah:
Perbaikan segmentasi karakter. Segmentasi aksara Jawa telah mengalami penyempurnaan
yang jauh pada tahap II ini, meliputi deteksi baris tiga pass untuk mendapatkan baris-baris
aksara Jawa, dengan:
1. Pass pertama bertujuan mendapatkan baris-baris kasar teks menggunakan Projection
Profile Cutting (PPC).
2. Pass ke dua uji statistik volume baris hasil pass pertama menggunakan kuartil setiap
baris, di mana baris yang volumenya melebihi kuartil atas dianggap sebagai baris utama
(baris di mana aksara nglegena berada)
3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan
baris utama dilihat posisinya (atas atau bawah) terhadap baris utama untuk disatukan
dengan baris utama terdekat, dan (2) memisahkan “baris” hasil pass ke dua yang
ternyata memiliki dua baris utama.
Setelah deteksi baris selesai, dilanjutkan dengan deteksi karakter (aksara) pada setiap baris,
dengan pendekatan PPC juga tetapi secara horisontal. Hasilnya berupa aksara-aksara terpisah
yang masing-masing berupa aksara nglegena beserta sandhangan dan pasangannya.
Dalam diskusi Tim Trawaca bersama Pak Biyanto, Ibu Raisha dan Ibu Apri (pakar Bahasa
Jawa), sempat muncul pertanyaan apakah tidak akan terlalu banyak variasi yang harus
dicocokkan untuk pengenalan jika setiap karakter memuat pasangan dan sandhangan, dalam
penelitian tahun ini target kami adalah melihat apakah perlu breakdown lebih jauh menjadi
segmentasi aksara nglegena, sandhangan dan pasangan, serta menyimpan relasinya. Contoh
tahapan segmentasi dan hasil akhir segmentasi dapat dilihat pada Gambar 1 dan Gambar 2.
Gambar 1. Proses segmentasi. Angka merah: Pass 1, Biru tua: Pass 2, Cyan: Pass 3, Coklat: Segmentasi horisontal
Gambar 2. Hasil akhir segmentasi karakter hingga saat ini. Angka besar: Nomor baris (dimulai dari 0), angka kecil: nomor karakter pada baris (dimulai dari
0)
Penentuan dan ekstraksi fitur karakter. Untuk pilihan fitur sementara, kami memilih
menggunakan fitur biner area dibanding luasan zona, dengan membagi sebuah permukaan
karakter menjadi 9 zona sama besar, kemudian dari tiap zona diambil nilai rasio piksel latar
depan (hitam) terhadap luas zona. Fitur ini dinilai dapat mewakili bentuk dari sebuah karakter.
Untuk melengkapi fitur tersebut agar dapat merepresentasikan karakter dengan lebih baik,
maka kami lengkapi dengan fitur rasio area karakter terhadap ukuran rata-rata area karakter
dalam dokumen.
Vektor fitur hingga tahap ini dapat didefinisikan sebagai:
Vk = (Z0, Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, A)
Dengan Z0 .. Z8 : fitur rasio piksel tiap zona
A : fitur rasio area karakter
Untuk sementara hingga tahap ini, pembobotan setiap fitur dianggap sama, kecuali nanti saat
pengujian terdapat pertimbangan lain, maka bobot fitur dapat diubah atau ditambahkan fitur lain
yang dapat mendukung agar akurasi pengenalan menjadi lebih baik.
Contoh hasil ekstraksi fitur dari perangkat lunak ditunjukkan oleh Gambar 3.
Gambar 3. Contoh hasil ekstraksi fitur karakter
Penyimpanan fitur karakter. Struktur basis data dalam MySQL telah diciptakan untuk
menyimpan tiap vektor fitur yang didapatkan dari masing-masing karakter, dengan desain basis
data seperti terlihat pada Tabel 1 dan Tabel 2. Pertimbangan kolom (field) yang disimpan
mengikuti struktur XML untuk anotasi pada tahap pekerjaan Bu Lucia. Vektor fitur ini disimpan
sebagai data pelatihan sebagai basis pengetahuan perangkat lunak untuk melakukan
pengenalan aksara Jawa.
Tabel 1.
Tabel Pelatihan
Nama field Tipe Panjang Keterangan
id_latih SMALLINT 6 primary key, autoincrement
z0 FLOAT Auto
z1 FLOAT Auto
z2 FLOAT Auto
z3 FLOAT Auto
z4 FLOAT Auto
z5 FLOAT Auto
z6 FLOAT Auto
z7 FLOAT Auto
z8 FLOAT Auto
a FLOAT Auto
transliterasi VARCHAR 5
nglegena VARCHAR 3
sandhangan VARCHAR 255
pasangan VARCHAR 255
font VARCHAR 30
tipe VARCHAR 10
kode_input VARCHAR 13
unicode VARCHAR 4
Tabel 1 memuat semua karakter yang dilatihkan ke dalam sistem. Karakter yang dilatihkan
adalah karakter yang benar saat diperiksa secara manual oleh voluntir (tersegmentasi dengan
benar), dan diberi label yang sesuai untuk melengkapi isi tabel, yaitu transliterasi Latin,
nglegena, sandhangan, pasangan, font (nama font disepakati oleh Tim Trawaca), tipe font
(miring, tegak), kode input (nama file output yang berisi kode buku, nomor halaman, nomor
baris dan nomor karakter), serta ekuivalensi sekuens Unicode untuk transliterasi tersebut. Nilai-
nilai fitur didapatkan secara otomatis dari perangkat lunak. Pelabelan yang dilakukan voluntir
awalnya dalam format XML, kemudian diimpor ke dalam basis data menjadi tabel MySQL.
Tabel 2.
Tabel Eigenface
Nama field Tipe Panjang Keterangan
id_eigenface SMALLINT 4 primary key, autoincrement
z0 FLOAT Auto
z1 FLOAT Auto
z2 FLOAT Auto
z3 FLOAT Auto
z4 FLOAT Auto
z5 FLOAT Auto
z6 FLOAT Auto
z7 FLOAT Auto
z8 FLOAT Auto
a FLOAT Auto
transliterasi VARCHAR 5 unique key
font VARCHAR 30
tipe VARCHAR 10
unicode VARCHAR 4
Tabel 2 dibuat melalui pemanggilan sebuah fungsi. Tabel ini bermanfaat untuk meringkas data
pada Tabel 1, dengan menghitung Eigenface (nilai rata-rata per fitur) untuk setiap transliterasi.
Dengan demikian kelas karakter didasarkan pada transliterasinya (misal: a, ku, kru, pu, k), dan
satu kelas akan memiliki satu entri saja pada tabel ini. Setiap fungsi hitung Eigenface dipanggil,
maka kelas yang sudah ada, nilai rata-rata fiturnya akan disegarkan kembali, seandainya ada
data latih baru yang dimasukkan. Untuk kelas yang belum ada, akan dibuatkan entri baru.
Proses hitung selisih Euclid yang seharusnya dilakukan terhadap setiap karakter, hanya akan
dilakukan terhadap setiap kelas, sehingga meringkas waktu proses pengenalan.
Metode pengenalan karakter. Metode pengenalan karakter yang akan diterapkan pada
penelitian ini adalah menggunakan NCC (Nearest Centroid Classifier) dengan langkah-langkah
sebagai berikut:
1. Buat vektor fitur centroid dari setiap kelas data pada basis data pelatihan.
Langkah ini dicapai dengan membuat Eigenface untuk masing-masing transliterasi yang
adalah kelas karakter dalam penelitian ini, misal: ha, na, ca, he, nu, kri, dsb.
2. Ekstraksi vektor fitur dari karakter yang akan diuji (karakter uji).
3. Hitung selisih Euclid dari vektor fitur tiap centroid kelas dengan vektor fitur karakter uji,
menggunakan persamaan berikut:
√∑( )
dengan A : centroid kelas (eigenface)
B : karakter uji
f : fitur-fitur elemen vektor fitur (Z0, Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, A)
4. Pilih kelas dengan selisih Euclid yang paling kecil sebagai kelas karakter uji.
5. Tampilkan sekuens UNICODE untuk kelas tersebut.
6. Ulangi langkah 2-5 untuk setiap karakter dalam dokumen uji.
Dengan demikian sebuah karakter, misalnya jika memiliki jarak terkecil terhadap kelas “ba”
maka pada string output akan dihasilkan sekuens Unicode “U+A9A7” diikuti dengan “U+A9C0”
Kode program terakhir. Segmentasi hingga ekstraksi fitur dilakukan melalui kode program Python 3kode12win.py (652 baris) yang dimuat dalam Google Drive Projek Trawaca.
B. Kendala
1. Pemeliharaan Server
Awalnya, server Google Cloud telah diset dengan bantuan pihak luar (TrazzHost), namun
karena perubahan Terms of Service layanan Google Cloud, maka operasi server dihentikan.
Karena kendala waktu, server belum dapat dipulihkan, tetapi karena hingga tahap ini belum
membutuhkan uji server, Pak Mahas juga ingin mempelajari sendiri terlebih dahulu setting
layanan Google Cloud untuk mesin komputasi agar bisa melakukan setting sendiri tanpa
tergantung pihak lain. Rencana eksperimen setting dan persiapan server akan dilakukan pada
Tahap III yaitu pada 22 Desember 2018 – 31 Desember 2018 bertepatan dengan libur Natal
UKDW. Hingga saat ini juga belum ada tagihan untuk pemakaian server.
2. Pengembangan Perangkat Lunak
Perbaikan segmentasi karakter. Hasil perbaikan segmentasi karakter masih menemukan
kesalahan-kesalahan sebagai berikut:
1. Oversegmentation (satu karakter terpotong menjadi banyak). Kesalahan ini terjadi akibat
cetak huruf yang kurang jelas dan terputus pada dokumen aslinya. Contoh kesalahan
tersebut ditunjukkan oleh Gambar 4.
Gambar 4. Oversegmentation
2. Undersegmentation (dua karakter atau lebih tidak terpotong sebagaimana seharusnya
menjadi dua segmen atau lebih). Kesalahan ini terjadi akibat ada bagian dari salah satu
aksara yang masuk ke wilayah aksara lainnya. Populasi terbesar penyebabnya adalah
sandhangan layar (akhiran r) seperti terlihat pada Gambar 5.
Gambar 5. Undersegmentation
3. Noise (derau). Meskipun derau vertikal sudah dapat teratasi melalui pendekatan yang
dimasukkan dalam program, derau horisontal masih tertangkap sebagai segmen
karakter. Bentuk-bentuk derau ditunjukkan oleh Gambar 6.
Gambar 6. Contoh derau yang terlewat dalam filtrasi 3-pass
Persiapan data pelatihan. Data pelatihan yang diharapkan sudah dapat terkumpul hingga 50%
ternyata tidak dapat dipenuhi oleh bantuan voluntir karena jumlah pindaian yang selesai belum
terdapat 100 halaman, yaitu lebih kurang 50 halaman dari Alkitab bahasa Jawa surat Roma,
dan lebih kurang 20 halaman dari Serat Mangkunegara. Dari jumlah tersebut, anotasi atau
pelabelan yang telah diselesaikan baru berkisar lebih kurang 100 karakter valid, yang mana
baru mencapai sekitar 2% dari halaman yang telah dipindai.
Pengujian pengenalan. Karena persiapan data pelatihan belum selesai, maka pengujian
pengenalan perangkat lunak belum dapat dilakukan untuk mendapatkan data yang valid,
sehingga untuk capaian ini belum dapat memberikan hasil apapun.
C. Pembelajaran
1. Kondisi Umum
Syarat kemajuan yang dirancang sebagai milestone Tahap II untuk Pak Mahas, disusun
berdasarkan kondisi ideal dengan alokasi waktu dan kapasitas kerja voluntir yang memadai.
Pada kenyataannya terdapat beberapa hal yang terjadi pada saat pelaksanaan yaitu: (1)
Pengutusan tugas kerja yang baru disampaikan pertengahan bulan September 2018 dari Wakil
Rektor IV UKDW untuk mengikuti pelatihan di Belanda menyita cukup banyak waktu selain
untuk keberangkatan sendiri juga untuk pengurusan berkas-berkas (visa, dsb.) yang
dibutuhkan, sehingga terdapat kurang lebih 1 bulan waktu kerja efektif yang hilang. (2)
Kapasitas kerja para voluntir yang tidak secepat perkiraan dikarenakan banya hal, baik yang
bersifat pribadi maupun akademik. Hal-hal ini mempengaruhi penyelesaian milestone, sehingga
tidak semua dapat dipenuhi pada Tahap II ini, termasuk mundurnya penyerahan laporan
periodik ke Pihak Wikimedia. Secara ringkas kemajuan pada tahap ini disajikan dalam Tabel 3
berikut:
Tabel 3.
Ringkasan Kemajuan Tahapan
No. Milestone Presentase capaian
Bobot tiap milestone pada tahap ini
1. Pengelolaan server 0% 10%
2. Persiapan data latih (50% dari total data) 2% 5%
3. Perbaikan segmentasi karakter 85% 20%
4. Kemampuan ekstraksi fitur simbol (karakter) pada perangkat lunak
100% 20%
5. Kemampuan menyimpan fitur pada perangkat lunak 100% 15%
6. Metode pengenalan karakter pada perangkat lunak 100% 20%
7. Pengujian awal 0% 5%
8. Hasil akurasi uji pengenalan > 60% - 5%
Persentasi capaian yang selesai pada tahap ini 72.1%
Untuk pembuatan perencanaan tahap selanjutnya, Pak Mahas perlu melakukan penyesuaian
beberapa hal, di antaranya untuk menambah jumlah voluntir yang bersedia membantu, juga
dengan meluangkan waktu lebih untuk mencapai target tahap selanjutnya sekaligus memenuhi
kekurangan pada tahap ini.
2. Pemeliharaan Server
Meskipun pada Tahap I setting Google Cloud dibantu oleh pihak TrazzHost dan diijinkan untuk
ikut serta melihat dan mengamati prosesnya, tetapi karena dokumentasi yang dibuat Pak
Mahas kurang rinci dan seiring berjalannya waktu sekaligus terdapat perubahan Terms of
Service dari Google Cloud, maka langkah-langkah setting menjadi tidak terlacak kembali. Untuk
itu Pak Mahas merasa perlu mempelajari sendiri dari awal sekaligus praktek untuk dapat
melakukan setting server Google Cloud sendiri, sekaligus melengkapi ilmu untuk melakukan
troubleshooting.
3. Pengembangan Perangkat Lunak
3.1. Otomasi Segmentasi Karakter
Masih terdapat kendala-kendala yang muncul dalam segmentasi karakter, padahal segmentasi
karakter adalah satu dari dua kunci keberhasilan pengenalan karakter (aksara), selain metode
pengenalan itu sendiri. Selama di Belanda, kami mengunjungi Prof. Dr. Lambert Schomaker di
Kunstmatige Intelligentie (Artificial Intelligence Department), Universitas Negeri Groningen.
Beliau kebetulan memiliki bidang serupa, yaitu OCR untuk manuskrip Eropa. Dari diskusi dan
presentasi yang disampaikan, ternyata masalah OCR tidak dapat sepenuhnya diotomatisasi
untuk mendapatkan hasil terbaik. Beliau mengalami masalah serupa pada tahap segmentasi, di
mana masih terdapat kesulitan untuk mencapai akurasi segmentasi karakter yang sempurna,
sehingga untuk mengatasinya dibutuhkan intervensi manual dengan cara mengkoreksi area
segmen yang salah, serta mengkoreksi pelabelan (projek beliau sudah dapat melakukan
pelabelan semi-otomatis) yang belum tepat.
Hal ini menjadi perhatian Pak Mahas dalam pengembangan perangkat lunak OCR Bahasa
Jawa ini, yaitu apakah memungkinkan untuk menambahkan satu layar evaluasi manual pada
saat perangkat lunak ini digunakan, sehingga koreksi dapat dilakukan terhadap hasil
segmentasi atau pelabelan yang salah. Ini mungkin tidak akan menjadikan proses pengenalan
sepenuhnya otomatis, tetapi dapat meningkatkan akurasi dan membantu sistem untuk dapat
mengenali dengan benar. Untuk itu mengenai hal ini hendaknya dapat didiskusikan dengan
Pihak Wikimedia sebagai pengguna akhir nantinya.
3.2. Konversi Menuju Unicode Aksara Jawa
Dalam proses anotasi yang dilakukan oleh voluntir di bawah koordinasi Bu Lucia, ditemukan
bahwa ternyata jangkauan Unicode untuk Aksara Jawa tidak memiliki kode yang berbeda untuk
aksara nglegena dan pasangan-nya. Kodifikasi didasarkan pada suku kata nglegena saja, dan
dibuat dwi-wujud dengan pasangannya, di mana pasangan akan tercipta secara otomatis jika
terdapat sekuens nglegena – pangkon – nglegena tanpa spasi fonta di antara karakter pangkon
dengan nglegena di belakangnya. Sekuens ini akan diubah langsung menjadi sekuens
nglegena – pasangan, sebagaimana ditunjukkan oleh Gambar 7.
Gambar 7. Contoh konversi otomatis pada kata “kandha” (berbicara, ucapan) yang terdiri dari
karakter ka+na+pangkon+dha (kiri), diubah otomatis menjadi ka+na+pasangan dha (kanan)
Syarat terjadinya konversi otomatis menjadi pasangan adalah sekuens pangkon dan nglegena
di belakangnya memiliki jenis markup tag yang sama (misalnya ukuran, warna, ketebalan, dsb.).
Jika terdapat perbedaan, maka akan ditampilkan tetap sebagai pangkon dan nglegena. Sejauh
ini pelaksana belum dapat memastikan mengenai dua hal berikut:
1. Luaran yang berupa sekuens semacam ini, walau sudah memenuhi syarat, akan secara
otomatis dikonversi menjadi pasangan.
2. Bagaimana cara menjaga keaslian teks jika dalam manuskrip menemukan pangkon
yang berfungsi sebagai tanda baca koma, sehingga nglegena di belakangnya yang
dianggap sebagai awal kalimat dan bukan sebagai pasangan.
D. Keuangan
1. Pengeluaran
Pada tahap ini pelaksana tidak memiliki pengeluaran karena biaya pemeliharaan dan sewa
server Google Cloud ditunda untuk sementara.
2. Usulan
Pelaksana mengusulkan agar pada paruh pertama tahap berikutnya (hingga akhir tahun 2018),
sebagian dana yang semula dialokasikan untuk biaya pemeliharaan dan sewa server hingga
akhir tahun 2018 namun belum terpakai, dapat dialihkan untuk pembuatan situs web projek
Trawaca yang memuat konten di antaranya:
1. Profil yang memuat informasi mengenai projek Trawaca dan organisasi-organisasi yang
bekerja sama dengan projek Trawaca.
2. Perkembangan projek Trawaca, milestone dan capaian yang telah diraih.
3. Peta lokasi museum dan perpustakaan yang menyimpan manuskrip beraksara Jawa –
dimulai dari D.I. Yogyakarta dan sekitarnya.
4. Diagram Sankey yang memuat informasi manuskrip beraksara Jawa (jenis, judul, tahun,
pengarang) dan keterkaitan dengan museum atau perpustakaan yang memilikinya.
Situs web ini nantinya akan dialihkan penginangannya ke Google Cloud jika sudah berhasil
dilakukan setting, namun untuk sementara akan menggunakan penginangan lokal untuk
pengembangan dan pengujiannya. Untuk itu pelaksana mengusulkan anggaran sebagaimana
tercantum pada Tabel 4.
Tabel 4.
Usulan Alokasi Anggaran untuk Pembuatan Situs Web Trawaca
No. Mata anggaran Jumlah
1. Pembuatan situs web projek Trawaca Rp. 3.000.000,-
2. Penginangan sementara selama 3 bulan Rp. 120.000,-
Total Rp. 3.120.000,-
E. Penutup
Demikian laporan ini dibuat oleh pelaksana dengan kondisi yang sebenar-benarnya.
Yogyakarta, 21 November 2018
Aditya Wikan Mahastama