OCR Multibahasa
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 / Tier | Jumlah Karakter Kamus | Cakupan Aksara & Karakter | Sangat Cocok Untuk |
|---|---|---|---|
| PP-OCRv6 Tiny (Bawaan) | 6.904 karakter | Mandarin 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 & Medium | 18.708 karakter | Seluruh 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 / Aksara | Seri Model | Kunci | Ukuran | Bahasa & Aksara yang Didukung | Tautan Unduh Langsung |
|---|---|---|---|---|---|
| Latin Ekstensi | PP-OCRv5 | latin | ~28 MB | Bahasa-bahasa Eropa dengan diakritik khusus: Polandia, Ceko, Turki, Rumania, Vietnam, Hungaria, dll. | Unduh |
| Jepang | PP-OCRv4 | japan | ~25 MB | Kanji Jepang, Hiragana, Katakana, dan karakter alfanumerik Latin. | Unduh |
| Mandarin Tradisional | PP-OCRv4 | chinese_cht | ~25 MB | Karakter Hanzi tradisional yang umum digunakan di Taiwan, Hong Kong, dan Makau. | Unduh |
| Korea (Hangul) | PP-OCRv5 | korean | ~28 MB | Suku kata Hangul Korea, angka, dan tanda baca. | Unduh |
| Arab | PP-OCRv5 | arabic | ~28 MB | Bahasa Arab, Persia (Farsi), Urdu, dan Uighur dengan gaya naskh/nastaliq. | Unduh |
| Sirilik | PP-OCRv5 | cyrillic | ~28 MB | Rusia, Ukraina, Belarusia, Bulgaria, Serbia, Makedonia, dan Kazakh. | Unduh |
| Dewanagari (Hindi) | PP-OCRv5 | devanagari | ~28 MB | Hindi, Marathi, Nepal, Sansekerta, dan Bhojpuri. | Unduh |
| Thai | PP-OCRv5 | th | ~28 MB | Konsonan, vokal, dan tanda nada aksara Thai. | Unduh |
| Yunani | PP-OCRv5 | el | ~28 MB | Alfabet Yunani modern. | Unduh |
| Slavia Timur | PP-OCRv5 | eslav | ~28 MB | Varian ortografi regional Slavia Timur. | Unduh |
| Tamil | PP-OCRv5 | ta | ~28 MB | Aksara Tamil. | Unduh |
| Telugu | PP-OCRv5 | te | ~28 MB | Aksara Telugu. | Unduh |
| Kannada | PP-OCRv4 | kannada | ~25 MB | Aksara 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:
| Bahasa | CocoaPods (iOS) | Android (JitPack) | NuGet (.NET) |
|---|---|---|---|
| Jepang | pod 'RustO-Models-PPOCRv4-Japanese' | rusto-models-ppocrv4-japan | RustODotnet.Models.PPOCRv4.Japanese |
| Mandarin Tradisional | pod 'RustO-Models-PPOCRv4-TraditionalChinese' | rusto-models-ppocrv4-chinese-cht | RustODotnet.Models.PPOCRv4.TraditionalChinese |
| Latin Ekstensi | pod 'RustO-Models-PPOCRv5-Latin' | rusto-models-ppocrv5-latin | RustODotnet.Models.PPOCRv5.Latin |
| Arab | pod 'RustO-Models-PPOCRv5-Arabic' | rusto-models-ppocrv5-arabic | RustODotnet.Models.PPOCRv5.Arabic |
| Korea | pod 'RustO-Models-PPOCRv5-Korean' | rusto-models-ppocrv5-korean | RustODotnet.Models.PPOCRv5.Korean |
| Sirilik | pod 'RustO-Models-PPOCRv5-Cyrillic' | rusto-models-ppocrv5-cyrillic | RustODotnet.Models.PPOCRv5.Cyrillic |
| Dewanagari | pod 'RustO-Models-PPOCRv5-Devanagari' | rusto-models-ppocrv5-devanagari | RustODotnet.Models.PPOCRv5.Devanagari |
| Thai | pod 'RustO-Models-PPOCRv5-Thai' | rusto-models-ppocrv5-th | RustODotnet.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.