ZIDAN MUBARAKBANDA ACEH, ID
Memuat portofolio
Memuat
ZIDAN MUBARAK

Studi kasus

Jawi OCR

Fine-tuning Qwen2.5-VL-3B untuk mengekstraksi aksara Jawi dan mentransliterasinya ke Rumi, dengan kedua tahap dievaluasi secara terpisah.

Peran
Peneliti dan ML engineer (solo)
Tahun
2026
Stack
Qwen2.5-VL-3B · QLoRA · Unsloth · PyTorch · Hugging Face · Gradio
Waktu baca
6 menit
Tim
Skripsi sarjana, UIN Ar-Raniry
Grafik batang yang membandingkan model dasar Qwen2.5-VL dengan adapter hasil fine-tuning pada CER Jawi, CER Rumi, dan WER Rumi.
Gbr. 01 · HasilGrafik hasil yang diterbitkan bersama model card: model dasar dibandingkan dengan adapter hasil fine-tuning pada split held-out.

Hasil

lebih sedikit character error

CER Jawi: 82,51% → 17,35% pada 790 citra held-out

01 · Konteks

Aksara tanpa default yang baik

Jawi adalah bahasa Melayu yang ditulis dengan aksara Arab. Aksara ini dipakai oleh banyak dokumen Aceh, Melayu, dan Brunei, dan bukan yang menjadi target OCR serbaguna: hurufnya bersambung, titik membawa makna, dan tanda vokal sering dihilangkan sepenuhnya.

Tugasnya punya dua tahap. Pertama ekstraksi: membaca karakter Jawi dari gambar. Lalu transliterasi: mengubah Jawi itu menjadi Rumi Latin mengikuti Pedoman Ejaan Jawi Yang Disempurnakan (PEJYD). Terjemahan adalah masalah ketiga yang terpisah dan sengaja di luar cakupan.

Skripsi ini bertanya apakah model vision-language kecil bisa diadaptasi untuk kedua tahap dengan fine-tuning hemat parameter, dan yang lebih berguna, data latih mana yang benar-benar membuat perbedaan.

02 · Persiapan

Skripsi
Implementasi Multimodal Large Language Model untuk Ekstraksi dan Transliterasi Printed Jawi Script
Model dasar
Qwen2.5-VL-3B-Instruct
Metode
QLoRA, 4-bit NF4, bfloat16
Stack pelatihan
Unsloth, PyTorch, PEFT
Perangkat keras
NVIDIA T4 / A100 di Google Colab
Adapter
314 MiB safetensors, Apache 2.0
Penyajian
Adapter Hugging Face + demo Gradio

03 · Data

Dua jenis sampel, tiga cara mencampurnya

Data sintetis memberi bentuk huruf yang bersih; dokumen nyata memberi noise, kemiringan, dan usia. Ablasi dilakukan untuk mengetahui mana yang benar-benar dibutuhkan model.

Sintetis

Teks Jawi dirender dalam beberapa typeface Arab dan Jawi, termasuk Jawi Uthman Taha dan Arabic Typesetting.

Autentik

Sampel Jawi hasil pindai, dokumen cetak dan tulisan tangan, dipisah agar set evaluasi tetap belum pernah dilihat.

Uji held-out

10% dari set autentik, tidak pernah dipakai untuk pelatihan. Semua angka di bawah berasal dari split ini.

04 · Pendekatan

Lima langkah, berurutan

  1. 01

    Kurasi kedua dataset

    Render Jawi sintetis di berbagai font, kumpulkan pindaian autentik, dan sisakan potongan held-out yang tidak pernah muncul di pelatihan.

  2. 02

    Perbaiki format instruksi

    System prompt membuat urutannya tidak bisa ditawar: ekstraksi dulu, lalu transliterasi per PEJYD, dan jawab hanya dalam baris `Jawi:` dan `Rumi:` supaya keluaran bisa dinilai secara mekanis.

  3. 03

    Fine-tuning dengan QLoRA

    Kuantisasi model dasar 3B ke 4-bit NF4, latih adapter dengan presisi campuran bfloat16, AdamW 8-bit paged, dan gradient checkpointing melalui Unsloth.

  4. 04

    Jalankan ablasi

    Latih resep yang sama pada data sintetis saja, autentik saja, dan kombinasi keduanya. Bandingkan ketiganya pada citra held-out yang sama.

  5. 05

    Evaluasi per tahap

    Nilai ekstraksi Jawi dengan CER, transliterasi dengan CER Rumi dan WER Rumi. Pantau validation loss per epoch dan pilih checkpoint yang bisa generalisasi.

05 · Hasil

Apa yang berubah pada data baru

Qwen2.5-VL zero-shot dibandingkan dengan adapter final, pada 790 citra autentik yang tidak dilihat kedua model saat pelatihan. Semakin rendah semakin baik di setiap baris.

CER Jawi

−79% error

Character error rate saat mengekstraksi Jawi beraksara Arab.

82.51%17.35%

CER Rumi

−82% error

Character error rate pada transliterasi Latin.

90.59%16.48%

WER Rumi

−63% error

Word error rate, seberapa banyak kata utuh terbaca benar.

107.08%39.36%

WER bisa melewati 100% ketika jumlah insertion melebihi jumlah kata yang benar.

Batang aksen = sisa error setelah fine-tuning, relatif terhadap baseline.

06 · Membaca hasil

Bagus, belum selesai

Angka utamanya adalah penurunan 79% pada error ekstraksi, dan transliterasi bergerak dengan margin serupa. Ablasi menunjuk pada kombinasi: font sintetis saja mengajarkan bentuk huruf tetapi tidak kekacauan dokumen, dan dokumen autentik saja tidak mencakup variasi yang cukup.

Angka yang jujur adalah WER 39,36%. Kira-kira dua dari lima kata masih perlu dikoreksi manusia, karena itu model card menyarankan review human-in-the-loop sebelum apa pun diterbitkan. Epoch 4 mulai overfit, jadi epoch 3 adalah artefak yang dirilis.

Space Gradio transliterasi Jawi dengan area unggah gambar, panel ekstraksi dan Rumi, serta dua contoh potongan.
Gbr. 02 · DemoDemo Gradio yang disertakan bersama adapter. Dua contoh potongan berasal dari repositori Space.
Potongan Jawi cetak satu baris yang dipakai sebagai contoh di demo.
Potongan Jawi cetak dua baris yang dipakai sebagai contoh di demo.
Gbr. 03 · Masukan demoDua contoh potongan yang disertakan bersama Space, satu baris dan dua baris.

Yang saya ambil

  1. 01

    Skenario gabungan menang: font saja tidak mencakup dokumen nyata, dan dokumen saja tidak mencakup variasi yang cukup.

  2. 02

    Nilai setiap tahap secara terpisah, karena skor Rumi yang lumayan bisa menyembunyikan ekstraksi yang buruk di bawahnya.

  3. 03

    Pilih checkpoint yang bisa generalisasi, bukan yang training loss-nya paling rendah.

  4. 04

    Rilis demo bersama metriknya; perbandingan berdampingan itulah yang membuat peningkatan terbaca.

Di mana masih gagal

  • Word error rate 39,36% pada transliterasi berarti manusia masih harus meninjau keluarannya.
  • Model card memperingatkan bahwa blur, cropping, dan noise latar yang berat menaikkan CER.
  • Tulisan tangan kursif yang sudah sangat tua lebih sulit daripada typesetting cetak; cakupan skripsi adalah Jawi cetak.
  • PEJYD punya pengecualian untuk kata serapan Arab yang masih bisa salah ditebak model.
  • 790 citra uji tergolong kecil untuk standar OCR; baca angka ini sebagai estimasi.

Sumber