Rust PaddleOCR
A lightweight Rust OCR library based on PaddleOCR models and the MNN inference runtime. It provides text detection, text recognition, and end-to-end OCR with file or in-memory model loading.
Related projects:
- CLI: newbee-ocr-cli
- C API bindings: paddle-ocr-capi
- HTTP service:
newbee_ocr_serviceis local-only and is not published as a public repository.
Supported Models
All runtime model files should be placed under models/.
| Family | Detection | Recognition | Notes |
|---|---|---|---|
| PP-OCRv4 | ch_PP-OCRv4_det_infer.mnn |
ch_PP-OCRv4_rec_infer.mnn |
Legacy CN/EN model |
| PP-OCRv5 | PP-OCRv5_mobile_det.mnn or PP-OCRv5_mobile_det_fp16.mnn |
PP-OCRv5_mobile_rec*.mnn |
Default CN/EN/JP plus script-specific models |
| PP-OCRv6 tiny | PP-OCRv6_tiny_det.mnn |
PP-OCRv6_tiny_rec.mnn |
Lightweight v6 tier; Japanese is not supported |
| PP-OCRv6 small | PP-OCRv6_small_det.mnn |
PP-OCRv6_small_rec.mnn |
Balanced v6 tier |
| PP-OCRv6 medium | PP-OCRv6_medium_det.mnn |
PP-OCRv6_medium_rec.mnn |
Accuracy-first v6 tier |
PP-OCRv6 small and medium support the official 50 v6 recognition languages: Simplified Chinese, Traditional Chinese, English, Japanese, and 46 Latin-script languages. PP-OCRv6 tiny follows the same set except Japanese. Korean, Cyrillic, Arabic, Devanagari, Thai, Greek, Tamil, and Telugu should continue using the PP-OCRv5 script-specific recognition models.
V6 charset files are tier-specific:
models/ppocr_keys_v6_tiny.txt
models/ppocr_keys_v6_small.txt
models/ppocr_keys_v6_medium.txt
Convert Paddle Models To MNN
The converter defaults to MNN FP16 to reduce model size. Use --install-dir ./models to copy converted runtime files into the expected directory and filenames.
Use --no-fp16 only when full precision MNN output is required.
Rust Usage
use OcrEngine;
Detection-only and recognition-only engines are also available:
let det = det_only?;
let rec = rec_only?;
Build
Performance Checks
Run Criterion benchmarks locally:
Run the CI-style performance smoke test:
OCR_RS_PERF_TESTS=1
GitHub Actions runs the release smoke test on Ubuntu and compiles the Criterion benchmarks. The smoke test prints PERF_METRIC lines, but does not fail on fixed latency thresholds because hosted runners vary.
Prebuilt MNN libraries are used automatically when available. For custom MNN builds:
GPU backends are selected through OcrEngineConfig:
use ;
let config = new.with_backend;
License
Apache-2.0