On-device
LiteRT
conversion of
PP-OCRv5
(PaddleOCR 2025, Apache-2.0) text detection + recognition, running
fully on the
CompiledModel
GPU
delegate (
LITERT_CL
). Detects text regions in an image and reads each line. The recognizer uses a
CTC
head (no autoregressive decoder)
, so both stages ride the GPU with no CPU/ONNX fallback — unlike
VLM-based OCR (Florence-2 / GOT-OCR) whose AR decoder must run on CPU. Device-verified on a Pixel 8a.
Preprocessing: detector = ImageNet mean/std, /255, NCHW, 640×640. recognizer = resize to h=48 keep-aspect,
pad to width 320,
(img/255−0.5)/0.5
.
Sample app
A complete Android sample app + the conversion scripts are in the official LiteRT samples repository under
compiled_model_api/ocr
(google-ai-edge/litert-samples). Push these files to the app's
filesDir
with that sample's
install_to_device.sh
.
Weights are converted from PaddleOCR via the
PaddleOCR2Pytorch
port (Apache-2.0). License follows upstream PaddleOCR (Apache-2.0).
Performance
Measured on a
Pixel 8a
(Tensor G3, Android 16) with the standard TFLite
benchmark_model
tool — 10 warm-up runs then 50 timed runs, reported as the tool's mean.
Any on-device figure recorded when this model shipped came from a different runtime.
It was taken through LiteRT's own
CompiledModel
accelerator (logcat reports it as
LITERT_CL
), which is the path the Kotlin sample app and the LiteRT API use, and it appears elsewhere on this card. The rows above are the classic TFLite OpenCL delegate, measured with a tool anyone can download and re-run. The two are not comparable, so read the rows above as a reproducible floor rather than as this model's speed on LiteRT.
XNNPACK declines these fp16 graphs — it reports
failed to delegate DEPTHWISE_CONV_2D
and then fails to allocate tensors — so there is no usable CPU number. Disabling XNNPACK falls back to reference kernels, which measured about 20× slower than the GPU on models of this size and would not represent CPU inference anyone would ship.
Note that the GPU does not take the whole graph here (579 / 827 in
ppocr_rec_fp16.tflite
); the remainder runs on the CPU and the split costs a per-partition round trip.
Runs of litert-community PP-OCRv5-LiteRT on huggingface.co
143
Total runs
0
24-hour runs
-11
3-day runs
38
7-day runs
38
30-day runs
More Information About PP-OCRv5-LiteRT huggingface.co Model
PP-OCRv5-LiteRT huggingface.co is an AI model on huggingface.co that provides PP-OCRv5-LiteRT's model effect (), which can be used instantly with this litert-community PP-OCRv5-LiteRT model. huggingface.co supports a free trial of the PP-OCRv5-LiteRT model, and also provides paid use of the PP-OCRv5-LiteRT. Support call PP-OCRv5-LiteRT model through api, including Node.js, Python, http.
PP-OCRv5-LiteRT huggingface.co is an online trial and call api platform, which integrates PP-OCRv5-LiteRT's modeling effects, including api services, and provides a free online trial of PP-OCRv5-LiteRT, you can try PP-OCRv5-LiteRT online for free by clicking the link below.
litert-community PP-OCRv5-LiteRT online free url in huggingface.co:
PP-OCRv5-LiteRT is an open source model from GitHub that offers a free installation service, and any user can find PP-OCRv5-LiteRT on GitHub to install. At the same time, huggingface.co provides the effect of PP-OCRv5-LiteRT install, users can directly use PP-OCRv5-LiteRT installed effect in huggingface.co for debugging and trial. It also supports api for free installation.