Aller au contenu
← Retour aux projets

PaddleOCR Ncnn CPP

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/MhLiao/DB

https://github.com/nihui/ncnn-android-ppocrv5

https://github.com/FeiGeChuanShu/ncnn_paddleocr

https://github.com/PaddlePaddle/PaddleOCR

Nouvelle version disponible.