← Volver a proyectos
PaddleOCR Ncnn CPP
C++ implementations of PP-OCRv3/4/5/6 using ncnn for inference.
This repository provides C++ implementations of PP-OCRv3/4/5/6, inspired by the official PaddleOCR project and using ncnn for inference.
The Release page contains a complete project archive that includes resources like models and images required to run the demo.
#Demo
#Usage
./main ../config.json ../images/ocr_img1.png
#Requirements
- OpenCV 4.11.0
- ncnn 20241226
- OpenMP 2.0+
#Benchmarks
I ran benchmarks on a VPS using ocr_img1.png (simple) and ocr_img3.png (complex). You can find those images inside the release page archive.tar.gz.
CPU: 2 x Intel(R) Xeon(R) Platinum (2) @ 2.50 GHz
| Models | Latency / Peak memory for ocr_img1 | Latency / Peak memory for ocr_img3 |
|---|---|---|
| PP-OCRv3 mobile | 88.09 ms / 106.2 MB | 926.34 ms / 228.3 MB |
| PP-OCRv4 mobile | 90.44 ms / 97.57 MB | 1005.45 ms / 211.5 MB |
| PP-OCRv5 mobile | 92.17 ms / 106.1 MB | 1062.56 ms / 292.2 MB |
| PP-OCRv5 server | 3948.50 ms / 1.545 GB | 11172.83 ms / OOM |
| PP-OCRv6 tiny | 67.45 ms / 62.22 MB | 420.28 ms / 156.7 MB |
| PP-OCRv6 small | 139.36 ms / 127.7 MB | 1590.45 ms / 351.4 MB |
| PP-OCRv6 medium | 584.79 ms / 425.3 MB | 6298.11 ms / 706.2 MB |
#Tested on
- macOS 15
- Debian 12
- Windows 10/11
#Notes
Enabling FP16 may be faster but can cause NaN results on some devices. Edit config.json to enable or disable FP16.
#Implementation References
https://github.com/nihui/ncnn-android-ppocrv5