Blog / Guides

Cara Memilih Tool OCR Bahasa Indonesia untuk Pipeline AI

Cara Memilih Tool OCR Bahasa Indonesia untuk Pipeline AI

Sebagian besar dokumen bisnis di Indonesia masih hidup dalam bentuk hasil pindaian dan foto. Faktur, kontrak, laporan keuangan, KTP, surat jalan. Bagi mata manusia itu bukan masalah, tapi bagi sistem AI semuanya cuma gambar. Sebelum LLM bisa merangkum kontrak atau menjawab pertanyaan dari arsip dokumen, gambar itu harus diubah menjadi teks.

Masalahnya, kebanyakan panduan berhenti di daftar tool dan klaim akurasi yang kabur. Padahal pertanyaan yang benar bukan "tool mana yang paling akurat", melainkan "seberapa bagus teks saya harus jadi supaya sistem di atasnya bisa bekerja". Pertanyaan itu ada jawabannya, dan bisa dihitung. Kalau kamu cuma butuh teksnya sekarang, Free OCR kami berjalan di browser dan tidak mengunggah berkasmu ke mana pun.

Ringkasan

  • Akurasi OCR diukur dengan character error rate (CER), bukan dengan perasaan.
  • Kesalahan menumpuk sepanjang istilah. Pada CER 5%, NIK 16 digit hanya utuh 44% dari waktu.
  • Itulah alasan pencarian berbasis nomor faktur gagal padahal teksnya "kelihatan benar" saat dibaca manusia.
  • 300 DPI bukan mitos. Angka itu muncul dari syarat tinggi huruf kapital minimal 20 piksel.
  • Teks bahasa Indonesia lebih mahal dalam token: paragraf yang sama menghabiskan 92 token di cl100k tapi 72 di o200k.

Cara akurasi OCR benar-benar diukur

Ukuran standarnya adalah character error rate. Sejajarkan hasil OCR dengan teks aslinya, hitung berapa substitusi , penghapusan , dan penyisipan yang dibutuhkan untuk mengubah satu menjadi yang lain, lalu bagi dengan jumlah karakter pada teks asli:

Hasil pindaian bersih dari teks cetak biasanya di bawah 1%. Foto HP dari kertas yang terlipat, dengan cahaya kantor seadanya, umumnya 3% sampai 8%. Tulisan tangan adalah persoalan lain sama sekali dan jangan berharap OCR klasik menyelesaikannya.

Kenapa kesalahan "kecil" merusak pencarian

Bagian ini yang hampir selalu dilewatkan. CER adalah peluang kesalahan per karakter, padahal yang kamu pedulikan tidak pernah satu karakter. Yang kamu pedulikan adalah nomor faktur, NPWP, NIK, nama pelanggan. Kalau kesalahan dianggap saling bebas, peluang sebuah istilah sepanjang karakter lolos utuh adalah:

Peluruhan eksponensial terhadap panjang istilah. Fungsi ini kejam, dan justru itulah sebabnya dokumen yang terbaca sempurna oleh manusia bisa tidak berguna bagi mesin pencari.

0% 25% 50% 75% 100% kata utuh 0% 2% 4% 6% 8% 10% tingkat kesalahan karakter (CER) kata 5 huruf istilah 10 huruf NIK (16 digit) foto HP biasa 44%
Peluang sebuah istilah lolos utuh dari OCR, terhadap CER. Pada CER 5% yang lazim untuk foto HP, NIK 16 digit hanya tersalin sempurna 44% dari waktu, meski kalimat di sekitarnya terbaca dengan baik.

NIK adalah contoh paling tajam justru karena panjang dan tidak punya konteks. Pada CER 1% peluangnya 85%, pada 2% turun ke 72%, dan pada 5% tinggal 44%. Artinya, dari seribu KTP yang dipindai dengan kualitas foto HP biasa, lebih dari lima ratus NIK-nya salah paling tidak satu digit. Nomor faktur dan NPWP mengalami nasib yang sama.

Dampaknya berbeda-beda di tiap bagian pipeline. Pencarian kata kunci dan pencocokan persis paling parah: satu digit salah membuat dokumen itu hilang dari hasil pencarian. Pencarian berbasis embedding menurun lebih halus, tapi justru lebih berbahaya karena tidak ada yang error, hasilnya hanya sedikit lebih buruk selamanya. Dan LLM yang membaca teks rusak sering "memperbaiki" kata bahasa Indonesia dari konteks, yang terdengar bagus sampai kamu sadar model itu akan melakukan hal yang sama pada nomor faktur, lalu menghasilkan angka yang masuk akal tetapi tidak pernah ada di dokumen.

Dari mana angka 300 DPI berasal

Semua orang mengulang "pindai di 300 DPI" tanpa menjelaskan asalnya, sehingga terdengar seperti takhayul. Padahal bukan. Mesin OCR butuh tinggi huruf kapital sekitar 20 piksel sebelum pengklasifikasinya bisa diandalkan. Tinggi huruf kapital kira-kira 70% dari ukuran poin, dan satu inci berisi 72 poin, jadi:

Selesaikan untuk resolusi yang melewati batas 20 piksel:

Untuk teks isi 10 pt, hasilnya 206 DPI. Untuk cetakan kecil 8 pt, tempat syarat dan ketentuan serta nomor rekening biasanya ditulis, hasilnya 257 DPI. Bulatkan ke atas untuk margin aman, dan kamu sampai di 300 DPI.

0 10 20 30 40 px 0 100 200 300 400 resolusi pindai (DPI) di bawah 20 px: akurasi OCR anjlok 12 pt 10 pt 8 pt 300 DPI
Tinggi huruf kapital terhadap resolusi pindai. Di bawah pita merah, huruf terlalu kecil untuk dikenali dengan andal. Perhatikan bahwa cetakan kecil adalah yang pertama jatuh ke sana, padahal justru di situlah angka-angka penting berada.

Pilihan tool untuk dokumen Indonesia

Kabar baiknya, bahasa Indonesia memakai alfabet Latin tanpa diakritik, sehingga jauh lebih mudah daripada bahasa dengan aksara sendiri. Kegagalan OCR di dokumen Indonesia hampir selalu soal kualitas gambar dan tata letak, bukan soal bahasanya.

Tool Unggul di Lemah di Pakai kalau
Tesseract (ind) Teks cetak bersih, offline penuh, gratis Tata letak rumit, tabel, foto berkualitas rendah Dokumen berupa hasil scan dan tata letaknya sederhana
PaddleOCR Foto HP, teks miring dan melengkung, tabel Lebih berat dipasang, butuh stack Python Sumbernya foto kamera, bukan hasil pindai
Model VLM Formulir berantakan, langsung ke JSON terstruktur Biaya per halaman, dan bisa mengarang nilai Tata letak mengalahkan OCR klasik dan hasilnya bisa diverifikasi

Baris terakhir perlu peringatan khusus. Model VLM tidak gagal seperti mesin OCR gagal. Tesseract yang tidak bisa membaca sebuah digit akan memberi digit yang salah atau kosong. VLM yang diminta membaca total faktur, kalau angkanya tidak terbaca, kadang mengembalikan angka yang sangat masuk akal dan sepenuhnya karangan. Untuk dokumen keuangan atau hukum, mode kegagalan itu lebih buruk daripada kosong, karena tidak terlihat. Minta skor keyakinan, dan validasi dengan pemeriksaan format: NIK selalu 16 digit, NPWP 15 digit, dan keduanya bisa dicek panjangnya sebelum masuk basis data.

Perbaiki gambarnya dulu, baru ganti tool

Sebelum berganti mesin, perbaiki gambarnya. Urutan yang paling menguntungkan: luruskan kemiringan lebih dulu, karena rotasi 2 derajat saja sudah mengganggu pemisahan baris; lalu lakukan binarisasi adaptif (Sauvola atau Otsu) supaya pencahayaan yang tidak rata berhenti memakan goresan huruf; naikkan resolusi kalau tinggi huruf berada di bawah batas 20 piksel; dan terakhir baru kurangi derau, secukupnya saja, karena penghilangan derau yang agresif menipiskan goresan dan mengubah "e" menjadi "c".

Gambar yang disiapkan dengan baik lalu diproses Tesseract biasanya mengalahkan gambar seadanya yang diproses mesin tercanggih sekalipun.

Setelah jadi teks: biaya token

Begitu teks keluar, ia menjadi token, dan token adalah tagihan. Di sini ada kejutan yang jarang dibicarakan: teks bahasa Indonesia lebih mahal daripada bahasa Inggris untuk makna yang sama. Diukur dengan tokenizer sungguhan, satu paragraf bahasa Indonesia menghabiskan 72 token pada o200k tetapi 92 token pada cl100k, sementara paragraf bahasa Inggris yang panjangnya setara menghabiskan 62 token pada keduanya.

Selisih 28% itu bukan kesalahan, melainkan akibat langsung dari cara tokenizer dilatih: sebagian besar korpusnya berbahasa Inggris, sehingga bahasa lain membayar denda dalam bentuk token. Untuk arsip berisi ribuan dokumen, pilihan model bisa mengubah tagihanmu tanpa ada hubungannya dengan harga per token yang diiklankan. Ukur dulu dengan Token Counter, dan baca cara menghitung token dan pengaruhnya ke tagihan untuk gambaran lengkapnya.

Dokumen sensitif? Proses di infrastruktur sendiri

Faktur, kontrak, dan KTP adalah data pribadi dan rahasia dagang. Mengunggahnya ke layanan OCR pihak ketiga berarti menyerahkan keduanya, dan untuk banyak perusahaan hal itu tidak bisa diterima, apalagi dengan kewajiban perlindungan data pribadi yang berlaku sekarang.

Itulah sebabnya Free OCR kami berjalan sepenuhnya di browser: berkasnya tidak pernah meninggalkan komputermu. Untuk skala produksi, Netra membantu tim melakukan fine tuning, akselerasi, dan penerapan model ekstraksi di infrastruktur sendiri, sehingga dokumen sensitif tidak pernah keluar dari kantor. Kalau modelnya dijalankan sendiri, LLM VRAM Calculator akan menghitung kebutuhan GPU-nya.

FAQ

Berapa CER yang saya butuhkan? Untuk sekadar membaca teks, di bawah 5% biasanya cukup. Untuk mengambil NIK, NPWP, atau nomor faktur, kamu butuh di bawah 1%, karena kesalahan menumpuk secara eksponensial terhadap panjang nomor.

Apakah Tesseract bisa bahasa Indonesia? Bisa, dengan data latih ind. Kegagalannya hampir selalu karena kualitas gambar, bukan karena bahasanya.

Kenapa RAG saya memburuk setelah menambah dokumen hasil scan? Kemungkinan besar kesalahan OCR merusak pencocokan persis dan mencemari embedding. Ukur CER pada sampel sebelum menyalahkan sistem pencariannya.

Foto HP cukup? Cukup, asalkan kertas rata, cahaya merata, dan teks memenuhi bingkai. Tanpa itu, siapkan diri untuk CER beberapa persen, dan itu berarti setengah dari NIK-mu akan salah.

Tool gratis dari Netra

Semuanya berjalan di browser. Tanpa pendaftaran, dan dokumen kamu tidak dikirim ke server kami.

  • Free OCR: ubah gambar dan PDF jadi teks siap pakai untuk LLM, sepenuhnya di sisi klien.
  • Token Counter: hitung token hasil OCR sebelum dikirim ke model, lengkap per tokenizer.
  • Web to Markdown: ubah halaman web jadi Markdown bersih tanpa markup.
  • LLM VRAM Calculator: hitung kebutuhan GPU kalau model dijalankan sendiri.
  • Fine-Tuning Memory Calculator: kebutuhan memori untuk melatih, bukan menyajikan.
  • Limbus: segmentasi gambar yang berjalan lokal.
  • sam3.c: inferensi SAM3 dalam bahasa C murni.

Referensi