PP-OCR (Du et al., 2020) is a system paper: it describes how Baidu’s PaddleOCR team squeezed a full detect-then-recognize pipeline into a few megabytes with a DB-style detector on a MobileNetV3 backbone, a CRNN recognizer, and a long list of training tricks (learning-rate warm-up, cosine decay, data augmentation, knowledge distillation, quantization). Every later PP-OCR version (v2 through v6) kept the DB detection head and swapped in better backbones, distillation schemes and multilingual training data. The v6 family, released in 2026, is a single multilingual model set covering more than 50 languages.
What the detector on this site runs
| Model | Size | Role |
|---|---|---|
| PP-OCRv6 tiny det | 1.88 MB | default detector in the detector |
| PP-OCRv5 mobile det | 4.90 MB | selectable for comparison |
| PP-OCRv6 tiny rec | 4.53 MB | the recognizer that reads each detected line |
The models are the Apache-2.0 exports published in the ppu-paddle-ocr-models repository, in ONNX Runtime’s .ort format, and they run through ONNX Runtime Web with WebGPU where available and WebAssembly elsewhere. They are fetched from this site’s own origin the first time you use the detector and cached by your browser; no request leaves textdet.com while you use it. Provenance and licences are listed on the credits page.
Output shape
PP-OCR detectors emit a quadrilateral per text line. The SDK converts those to axis-aligned rectangles for cropping, which is what you see drawn on the image and in the JSON export. Rotated lines therefore get a slightly generous box.
Citation
@article{du2020ppocr,
title = {PP-OCR: A Practical Ultra Lightweight OCR System},
author = {Du, Yuning and Li, Chenxia and Guo, Ruoyu and Yin, Xiaoting and Liu, Weiwei and Zhou, Jun and Bai, Yifan and Yu, Zilin and Yang, Yehua and Dang, Qingqing and Wang, Haoshuang},
journal = {arXiv preprint arXiv:2009.09941},
year = {2020}
}