Saltar al contenido
← 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.

It is recommended to use an ncnn version the same as or newer than the PNNX version used to convert the models.

#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

Nueva versión disponible.