PaddleOCR C++(CPU)本地部署VS2019 VS2022

PaddleOCR C++本地部署

实现PaddleOCR  C++部署(CPU)版本

环境

CMake 2.6.3

OpenCV 4.7.0

VS2019(VC16)   VS2022(VC17)

参考B站大佬视频学习总结: BV1Eo4y1t7SG

0.安装git  CMake 版本没关系 能用就行  

1.下载源码,三个模型文件,C++推理库(CPU),OPenCV

1-1 官方源码地址:PaddleOCR: 基于飞桨的OCR工具库,包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测、文本识别的训练算法。

1-2 三个模型文件PP-OCRv3_基础模型_OCR_文字检测-飞桨AI Studio星河社区

检测模型 识别模型  分类模型   都下载推理模型即可

1-3 C++推理库

下载安装链接 推理库-PaddlePaddle

1-4 下载OPenCV Releases - OpenCV

1-5  准备就绪~  共6个文件

1-6添加dirent.h

https://paddleocr.bj.bcebos.com/deploy/cpp_infer/cpp_files/dirent.h

到这已经成功一半啦!

2. CMake 编译 源码

2-1 打开CMake 添加源码路径

生成路径(新建build文件夹)

2-2 Configure

根据安装的VS版本进行选择 

2-3提示文件无效 ,

2-4填写 三个路径(OPENCV_DIR ,OpenCV_DIR,PADDLE_DIR)

文件夹解压后对应的文件

确认下OpenCV 文件夹内是不是这样的

2-5 点击Generate 生成

失败了重新Configure ,确保能访问gitHub喔;

出现Generating done !

2-6打开目录下ALL_BUILD.vcxproj.

3.编译ppocr.exe

3-1切换至Release X64

Debug 下编译会报错; 

Paddle暂不支持X86编译; 

3-2 复制模型文件至生成exe路径下

解压三个模型文件 放入models文件夹

粘贴!

3-3设置相关参数 args.cpp

这里按照exe的目录进行填写,贴出对比方便对照

修改后一共是5处路径

确认无误后,重新生成ppocr.exe

4运行ppocr.exe

4-1 复制dll到exe目录下,所有dll都找的到!我们都下载好了!

一共7个dll 仔细查看 确保没有遗漏;

4-2 复制 ppocr_keys_v1.txt 到 /models/

4-3 cmd运行ppocr.exe

4-4 识别结果乱码

VsCode 修改ppocr_keys_v1.txt编码格式

保存后重新cmd运行~即可

大功告成!

常见报错总结

1.网络通畅 能访问gitHub

2.确保需要的文件都下载完成(源码,3模型文件,OpenCV, C++推理库)

3.Generate失败:确认三个路径填写正确,build下为空;(中途失败了删掉build重来)

4.PaddleOCR暂时没看到支持X86的编译 Debug下编译会报错,用Release X64

5.运行失败,学会看报错,都会有提示,排查下路径对不对

试试加上参数调用!

ppocr.exe --image_dir=./images --type=ocr --det_model_dir=./models/ch_PP-OCRv3_det_infer --rec_model_dir=./models/ch_PP-OCRv3_rec_infer --rec_batch_num=6 --rec_img_h=48 --rec_img_w=320 --precision=fp16 --limit_side_len=960 --enable_mkldnn=true

### PaddleOCR C++ 使用教程 #### 项目集成方法 对于希望在C++环境中使用PaddleOCR的应用开发者来说,存在多种途径来实现这一目标。一种方式是通过`PaddleOCR-json`这个专门为Windows环境设计的命令行工具,它能够执行离线图片的文字识别并将结果以JSON字符串的形式输出[^1]。 为了更深入地探讨如何将PaddleOCR集成到C++应用程序中,通常涉及以下几个方面: - **依赖项安装**:确保已经正确配置了Paddle Inference Library以及OpenCV等必要的第三方库。 - **模型准备**:下载并准备好用于文字检测和识别的预训练模型文件。 - **源码编译**:利用官方提供的CMakeLists.txt文件构建整个工程,在此过程中可能会遇到一些特定平台上的兼容性挑战,比如不同操作系统之间的差异或是某些硬件加速选项的支持状况。 - **接口调用**:编写简单的测试程序验证基本功能是否正常工作,例如加载模型、输入图像路径参数、获取返回的结果数据结构体等操作。 下面给出一段基于上述描述创建的小型示例代码片段展示如何初始化引擎并读取一张本地存储的照片完成OCR任务(假设已解决所有前置条件): ```cpp #include "paddleocr.h" int main() { // 初始化PaddleOCR实例 paddle::lite_api::PaddlePredictor *predictor; std::string model_dir = "./inference/ch_PP-OCRv3_det_infer/"; predictor = CreatePaddleOCRPredictor(model_dir); cv::Mat img = cv::imread("test.jpg"); if (img.empty()) { printf("Image not found or unable to load\n"); return -1; } // 执行预测 auto result = predictor->Run(img); // 处理输出... } ``` 值得注意的是,在实际开发场景下可能还需要考虑更多细节问题,如错误处理机制的设计、性能优化措施的选择等等。 另外,如果是在Python环境下运行,则需要注意SAST后处理Locality-Aware NMS部分,默认情况下除了Python 3.5外都会采用较慢些的纯Python实现;而在满足一定条件下可以切换至更快捷高效的原生C++版本[^2]。 最后值得一提的是,虽然这里主要讨论了直接针对C++项目的接入方案,但对于那些倾向于跨语言交互的朋友而言,也可以尝试借助像[PaddleOCRSharp](https://gitcode.com/gh_mirrors/pa/PaddleOCR-json)[^3]这样的中间件间接达成目的——尽管这超出了单纯意义上的“C++使用”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值