pp-ocrv6-small-onnx
PaddleOCR's PP-OCRv6 small text detector and multilingual recogniser as ONNX, as RapidOCR 3.10.0 publishes them, for vinoSearch to read screenshots and scanned PDFs on the Intel NPU (karanshukla/vinoSearch#106).
Files
| File | What | SHA-256 |
|---|---|---|
onnx/PP-OCRv6_det_small.onnx |
DB text detector, x [N, 3, H, W] → probability map [N, 1, H, W] |
090f04ab…e1ff94f |
onnx/PP-OCRv6_rec_small.onnx |
CTC recogniser, x [N, 3, 48, W] → [N, W/8, 18710] |
6f327246…3c14884 |
ppocrv6_dict.txt |
The recogniser's 18,708 characters, one a line | b5f2bfe2…77e401c5d |
The two graphs are RapidOCR v3.10.0's byte for byte (the SHA-256s in its default_models.yaml). The dict is
the character entry of the recogniser's own metadata, written out, and is identical to RapidOCR's
ppocrv6_dict.txt. The recogniser's 18,710 classes are CTC blank at 0, the dict, then a space.
Languages, as RapidOCR lists them for this model: Chinese (simplified and traditional), Japanese, English and Latin-script languages (de, es, fr, it, nl, pl, pt, sv, tr, vi and others). Not Cyrillic, Arabic or Korean.
On the NPU
The graphs have dynamic inputs; reshape to static ones before compiling. Measured on an Intel Core 5 320 (Wildcat Lake) NPU, OpenVINO 2026.4.1, against the CPU on the same input:
| Graph | Shape | NPU | CPU | NPU against CPU |
|---|---|---|---|---|
| detector | [1, 3, 1088, 1920] |
64 ms | 200 ms | mean |Δ| 2e-5 |
| detector | [1, 3, 736, 736] |
21 ms | 50 ms | mean |Δ| 3e-5 |
| recogniser | [1, 3, 48, 320] |
3 ms | 10 ms | argmax identical |
| recogniser | [1, 3, 48, 1280] |
11 ms | 29 ms | argmax identical |
vinoSearch scales each image (aspect kept, padded with black) into one of two detector shapes, 1088×1920 landscape or 1920×1088 portrait, and pads each line to the smallest recogniser width of 320, 640 or 1280 that fits. On 1920×1080 browser screenshots that finds 96-98% of the words the page shows, in 0.3-0.4 s an image, against 86-94% in 1.7-2.9 s for RapidOCR's dynamic-shape pipeline on the CPU.
Preprocessing
- Detector: BGR,
(x / 255 - 0.5) / 0.5, CHW. Threshold the map at 0.3, dilate 2×2, keep regions scoring 0.5 or more, grow each byarea × 1.6 / perimeter. - Recogniser: the line's crop scaled to height 48, aspect kept, BGR,
(x / 255 - 0.5) / 0.5, padded with 0 on the right. Greedy CTC: argmax, collapse repeats, drop blanks.
Licence
Apache-2.0. The weights are Baidu's / PaddleOCR's; see MODEL_LICENSES.md (RapidOCR's notice) and LICENSE.