--- license: apache-2.0 library_name: tflite tags: - ocr - paddleocr - text-detection - text-recognition - snapdragon - qualcomm - on-device - multilingual language: - zh - ko pipeline_tag: image-to-text authors: - PaddlePaddle / PaddleOCR team (original model) - Viet-Anh Nguyen (vietanh@nrl.ai) — Qualcomm AI Hub compilation & validation --- # PP-OCRv5 — Snapdragon 8 Elite NPU (int8 TFLite) PP-OCRv5 text detection and recognition (Chinese + Korean), compiled to **int8 TFLite** via [Qualcomm AI Hub](https://aihub.qualcomm.com) for the **Snapdragon 8 Elite (SM8750) Hexagon V79 HTP NPU**. ## Models | File | Description | Size | NPU latency (S25 Ultra) | |------|-------------|------|------------------------| | `pp_ocrv5_det_mobile.tflite` | Text detection (PP-HGNetV2 + DB++) | 807 KB | **1.23 ms** | | `pp_ocrv5_zh_rec.tflite` | Chinese text recognition (SVTR/CTC) | 22 MB | **0.99 ms** | | `pp_ocrv5_ko_rec.tflite` | Korean text recognition (SVTR/CTC) | 3.9 MB | **0.49 ms** | | `pp_ocrv5_lat_rec.tflite` | Latin text recognition (SVTR/CTC) | 2.2 MB | **0.31 ms** | | `zh_dict.txt` | 18,383-char ZH dictionary (PaddleOCR `ppocrv5_dict.txt`) | — | — | | `ko_dict.txt` | 11,945-char KO dictionary (PaddleOCR `ppocrv5_korean_dict.txt`) | — | — | **Full ZH/KO sign pipeline ≈ 2.2 ms on Hexagon NPU. 100% NPU — zero CPU fallback.** ## Performance ### Latency — Samsung Galaxy S25 Ultra (SM8750, Android 15) Measured via Qualcomm AI Hub cloud-hosted real device. Bench date: 2026-06-06. | model | NPU ms | NPU ops | vs ORT CPU | |-------|--------|---------|------------| | det | **1.23** | 156/156 (100%) | 105× faster | | zh rec | **0.99** | 219/219 (100%) | 180× faster | | ko rec | **0.49** | 223/223 (100%) | 86× faster | | lat rec | **0.31** | 223/223 (100%) | 148× faster | AI Hub job IDs (verifiable): det=`jg98xw1qp`, zh=`jp38we2x5`, ko=`jgnx7evm5`, lat=`jgj1wln8g` ### Accuracy — public dataset (ReCTS, Apache-2.0) Real store-front signage photos (200 scored), standard ChineseOCRBench-style substring matching. | metric | value | |--------|-------| | recall@full (answer fully recognized) | **48.5%** | | mean char-recall | **66.0%** | ReCTS is VQA-style (ground truth = one region; full-image OCR is substring-matched), so recall@full understates pure recognition; char-recall reflects character-level quality on real, cluttered, perspective-distorted signs. > **Vietnamese:** PP-OCRv5's Latin dictionary has **no precomposed Vietnamese tone-mark > vowels** (verified by byte-level grep). **Do not use this for Vietnamese** — use a > Vietnamese-specialized recognizer (e.g. VietOCR) instead. ## Usage ```python from huggingface_hub import hf_hub_download det = hf_hub_download("", "pp_ocrv5_det_mobile.tflite") rec = hf_hub_download("", "pp_ocrv5_zh_rec.tflite") ``` Load with LiteRT (TFLite) + the QNN delegate for NPU execution on Snapdragon devices. ## Source models & compilation - Source: [PaddleOCR 3.x](https://github.com/PaddlePaddle/PaddleOCR) (Apache-2.0) - ONNX exports: `monkt/paddleocr-onnx` (Apache-2.0, no pickle) - Compiled: `qai-hub submit_compile_job(..., options="--target_runtime tflite --quantize_full_type int8")` with random PTQ calibration data (100 samples per model) ## Citation ```bibtex @software{ppocrv5_snapdragon2026, author = {{PaddlePaddle / PaddleOCR team}}, title = {{PP-OCRv5}: Multilingual Text Detection and Recognition}, year = {2025}, url = {https://github.com/PaddlePaddle/PaddleOCR} } ``` AI Hub compilation and NPU validation by Viet-Anh Nguyen (vietanh@nrl.ai), Neural Research Lab.