laporan perkembangan · 2018. 12. 7. · 3. pass ke tiga adalah merging dan splitting di mana (1)...

11
Laporan Perkembangan Proyek OCR Aksara Jawa Tahap II Oleh Aditya Wikan Mahastama Universitas Kristen Duta Wacana Yogyakarta 2018

Upload: others

Post on 26-Nov-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laporan Perkembangan · 2018. 12. 7. · 3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan baris utama dilihat posisinya (atas atau bawah)

Laporan Perkembangan

Proyek OCR Aksara Jawa

Tahap II

Oleh

Aditya Wikan Mahastama

Universitas Kristen Duta Wacana

Yogyakarta

2018

Page 2: Laporan Perkembangan · 2018. 12. 7. · 3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan baris utama dilihat posisinya (atas atau bawah)

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.

Page 3: Laporan Perkembangan · 2018. 12. 7. · 3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan baris utama dilihat posisinya (atas atau bawah)

Gambar 1. Proses segmentasi. Angka merah: Pass 1, Biru tua: Pass 2, Cyan: Pass 3, Coklat: Segmentasi horisontal

Page 4: Laporan Perkembangan · 2018. 12. 7. · 3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan baris utama dilihat posisinya (atas atau bawah)

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)

Page 5: Laporan Perkembangan · 2018. 12. 7. · 3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan baris utama dilihat posisinya (atas atau bawah)

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

Page 6: Laporan Perkembangan · 2018. 12. 7. · 3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan baris utama dilihat posisinya (atas atau bawah)

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

Page 7: Laporan Perkembangan · 2018. 12. 7. · 3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan baris utama dilihat posisinya (atas atau bawah)

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

Page 8: Laporan Perkembangan · 2018. 12. 7. · 3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan baris utama dilihat posisinya (atas atau bawah)

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.

Page 9: Laporan Perkembangan · 2018. 12. 7. · 3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan baris utama dilihat posisinya (atas atau bawah)

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.

Page 10: Laporan Perkembangan · 2018. 12. 7. · 3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan baris utama dilihat posisinya (atas atau bawah)

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.

Page 11: Laporan Perkembangan · 2018. 12. 7. · 3. Pass ke tiga adalah merging dan splitting di mana (1) baris-baris yang bukan merupakan baris utama dilihat posisinya (atas atau bawah)

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