bcdl-ppocr-v6 / README.md
ruisv's picture
Compiled BPU models for RDK S100/S100P
708eb80 verified
|
Raw
History Blame Contribute Delete
3.4 kB
metadata
license: apache-2.0
library_name: bcdl
tags:
  - rdk-s100
  - rdk-s100p
  - d-robotics
  - bpu
  - hbm
  - ocr
  - text-recognition

PP-OCRv6 for RDK S100/S100P β€” detection + recognition + angle

Compiled BPU models (.hbm) for the D-Robotics RDK S100 / S100P, ready to load β€” no ONNX export, no calibration, no hb_compile. Built and measured with BCDL, a C++17 inference and media library for the RDK S-series with Python bindings.

Upstream: PaddleOCR PP-OCRv6 medium

Redistributable, including commercially. The licence chain was checked on the code, the pretrained weights it started from, and the data it was trained on β€” all three, because a permissive repository badge does not by itself say anything about the weights. See Licence.

Files

file what it is
ppocrv6_medium_det_960x960.hbm text detection, 960x960 β€” 22.4 MB
ppocrv6_medium_rec_int16_48x320.hbm recognition, 48x320, all-int16 β€” 24.0 MB
ppocrv5_lcnet_cls_80x160.hbm textline angle 0/180 (from v5 β€” v6 ships none) β€” 2.3 MB
ppocr_keys_v6_18710.txt dictionary β€” required by the recogniser

Measured on an S100P

stage latency throughput
detection 8.55 ms 117 FPS
recognition 2.22 ms 451 FPS
angle classifier 0.37 ms 2710 FPS

hrt_model_exec perf, one thread, minimum of three runs, on a board first gated against its own previously recorded numbers. BPU time only β€” CPU pre/post-processing is on top and is listed per task in BCDL's benchmark results.

Use it

conda install -c https://mirrors.ruis.ai/conda -c conda-forge bcdl
import bcdl
engine = bcdl.Engine("ppocrv6_medium_det_960x960.hbm")
print(engine.input_shape(0), engine.output_shape(0))

Each task has a decoder in BCDL that turns those raw outputs into boxes, keypoints, masks, disparity or text β€” see the Python API (δΈ­ζ–‡).

What to know before deploying

The recogniser is all-int16 on purpose. On the S100P it roughly halves the character error of the compiler's default mixed-precision int8 build and is about 2x faster, because a uniform int16 graph carries no int8-int16 requant on its internal boundaries.

The dictionary is not optional and it is version-specific. v6 recognises 18710 classes against v5's 18385; pairing a model with the wrong key file decodes to plausible-looking wrong characters rather than failing. The right one ships here.

For text lines longer than about 6.7:1 there is also a 960-wide recogniser in the conversion recipe; this package carries the 320 build.

Licence

Apache-2.0, on the code and on every model card.

BCDL itself is Apache-2.0 and is unrelated to these terms β€” it is a general-purpose runtime that loads any .hbm. The licence above constrains these weights and this compiled artefact.

The conversion recipe β€” ONNX export, calibration, hb_compile config and the acceptance numbers β€” is public in bcdl-model-zoo, so this build can be reproduced or retargeted rather than taken on trust.