Advance Guide

OCR Multibahasa

Dukungan bahasa dan aksara pada RustO!: cakupan bilingual PP-OCRv6 (Mandarin + Latin) serta paket bahasa regional khusus PP-OCRv5 / PP-OCRv4.

RustO! menyediakan kapabilitas OCR untuk puluhan bahasa dan aksara. Untuk mempertahankan akurasi tinggi sekaligus menjaga ukuran berkas model tetap kecil, model dipisahkan menjadi model dwibahasa inti (PP-OCRv6) dan paket bahasa regional khusus (PP-OCRv5 & PP-OCRv4).


1. Cakupan Bahasa PP-OCRv6 (Mandarin + Inggris / Latin)

Model bawaan PP-OCRv6 dilatih terutama untuk bahasa Mandarin dan Inggris, dengan dukungan luas untuk bahasa-bahasa beraksara Latin umum:

Varian / TierJumlah Karakter KamusCakupan Aksara & KarakterSangat Cocok Untuk
PP-OCRv6 Tiny (Bawaan)6.904 karakterMandarin Sederhana, Inggris, alfabet Latin standar (Bahasa Indonesia, Spanyol, Prancis, Jerman), angka (0-9), tanda baca, serta simbol mata uang ($, €, ¥, £, Rp).Aplikasi mobile, struk belanja, faktur, dan dokumen umum berbahasa Indonesia, Inggris, atau Mandarin.
PP-OCRv6 Small & Medium18.708 karakterSeluruh karakter pada varian Tiny ditambah karakter Hanzi Tradisional, glif CJK langka, serta aksara Kana Jepang (Hiragana dan Katakana).Pemindaian dokumen campuran Mandarin, Kana Jepang, dan aksara Latin.

Penting: Model PP-OCRv6 tidak mendukung Hangul Korea, Arab, Sirilik, Dewanagari (Hindi), Thai, Yunani, atau aksara India Selatan. Untuk aksara-aksara tersebut, gunakan paket model bahasa khusus di bawah ini.


2. Paket Bahasa Regional Khusus (PP-OCRv5 & PP-OCRv4)

Karena proses deteksi batas teks (det.rten) tidak bergantung pada bahasa (algoritma DBNet mendeteksi bentuk fisik baris teks pada gambar tanpa memedulikan bahasanya), Anda dapat membaca teks aksara apa pun cukup dengan menggabungkan detektor universal dengan pengenal (rec.rten) dan kamus (dict.txt) bahasa terkait.

URL Rilis Basis: https://github.com/byrizki/rusto-rs/releases/download/models-rten-v0.3.2/

Bahasa / AksaraSeri ModelKunciUkuranBahasa & Aksara yang DidukungTautan Unduh Langsung
Latin EkstensiPP-OCRv5latin~28 MBBahasa-bahasa Eropa dengan diakritik khusus: Polandia, Ceko, Turki, Rumania, Vietnam, Hungaria, dll.Unduh
JepangPP-OCRv4japan~25 MBKanji Jepang, Hiragana, Katakana, dan karakter alfanumerik Latin.Unduh
Mandarin TradisionalPP-OCRv4chinese_cht~25 MBKarakter Hanzi tradisional yang umum digunakan di Taiwan, Hong Kong, dan Makau.Unduh
Korea (Hangul)PP-OCRv5korean~28 MBSuku kata Hangul Korea, angka, dan tanda baca.Unduh
ArabPP-OCRv5arabic~28 MBBahasa Arab, Persia (Farsi), Urdu, dan Uighur dengan gaya naskh/nastaliq.Unduh
SirilikPP-OCRv5cyrillic~28 MBRusia, Ukraina, Belarusia, Bulgaria, Serbia, Makedonia, dan Kazakh.Unduh
Dewanagari (Hindi)PP-OCRv5devanagari~28 MBHindi, Marathi, Nepal, Sansekerta, dan Bhojpuri.Unduh
ThaiPP-OCRv5th~28 MBKonsonan, vokal, dan tanda nada aksara Thai.Unduh
YunaniPP-OCRv5el~28 MBAlfabet Yunani modern.Unduh
Slavia TimurPP-OCRv5eslav~28 MBVarian ortografi regional Slavia Timur.Unduh
TamilPP-OCRv5ta~28 MBAksara Tamil.Unduh
TeluguPP-OCRv5te~28 MBAksara Telugu.Unduh
KannadaPP-OCRv4kannada~25 MBAksara Kannada.Unduh

3. Cara Mengganti Model Bahasa di Kode

Cukup pertahankan detektor batas teks universal (det.rten) dan arahkan konfigurasi pengenalan ke model bahasa regional yang telah Anda unduh:

Pada Rust:

use rusto::{InitializeConfig, RustO};

// Inisialisasi dengan detektor universal + model pengenal bahasa Jepang
let config = InitializeConfig::ppv4(
    "models/det.rten",
    "models/japan_rec.rten",
    "models/japan_dict.txt",
);

let mut ocr = RustO::initialize(config)?;
let results = ocr.detect_text_file("struk_jepang.jpg")?;

Pada Node.js:

import { RustO } from '@rustors/node';

const ocr = new RustO({
  detModelPath: 'models/det.rten',
  recModelPath: 'models/arabic_rec.rten',
  dictPath: 'models/arabic_dict.txt',
});

const lines = await ocr.detectTextFile('faktur_arab.pdf');

Pada Python:

import rusto

engine = rusto.RustOEngine.from_config(
    '{"detection":{"model_path":"models/det.rten"},"recognition":{"model_path":"models/korean_rec.rten","dict_path":"models/korean_dict.txt"}}'
)

lines = engine.detect_text_file("dokumen_korea.png")

4. Nama Paket pada Manajer Dependensi

Bagi Anda yang menggunakan CocoaPods, Android Gradle, atau NuGet, paket model bahasa resmi dapat dipasang langsung:

BahasaCocoaPods (iOS)Android (JitPack)NuGet (.NET)
Jepangpod 'RustO-Models-PPOCRv4-Japanese'rusto-models-ppocrv4-japanRustODotnet.Models.PPOCRv4.Japanese
Mandarin Tradisionalpod 'RustO-Models-PPOCRv4-TraditionalChinese'rusto-models-ppocrv4-chinese-chtRustODotnet.Models.PPOCRv4.TraditionalChinese
Latin Ekstensipod 'RustO-Models-PPOCRv5-Latin'rusto-models-ppocrv5-latinRustODotnet.Models.PPOCRv5.Latin
Arabpod 'RustO-Models-PPOCRv5-Arabic'rusto-models-ppocrv5-arabicRustODotnet.Models.PPOCRv5.Arabic
Koreapod 'RustO-Models-PPOCRv5-Korean'rusto-models-ppocrv5-koreanRustODotnet.Models.PPOCRv5.Korean
Sirilikpod 'RustO-Models-PPOCRv5-Cyrillic'rusto-models-ppocrv5-cyrillicRustODotnet.Models.PPOCRv5.Cyrillic
Dewanagaripod 'RustO-Models-PPOCRv5-Devanagari'rusto-models-ppocrv5-devanagariRustODotnet.Models.PPOCRv5.Devanagari
Thaipod 'RustO-Models-PPOCRv5-Thai'rusto-models-ppocrv5-thRustODotnet.Models.PPOCRv5.Thai

5. Bahasa Kanan-ke-Kiri (RTL)

Saat memproses bahasa seperti Arab, Persia, atau Urdu:

  • Mesin pengenal membaca karakter sesuai arah visual potongan gambar dari kiri ke kanan.
  • Titik koordinat poligon pada keluaran terstruktur merefleksikan posisi sebenarnya pada dokumen.
  • Pada mode teks spasial (OutputGranularity::Spatial), perataan baris menyusun kata-kata berdasarkan posisi spasial aslinya.