目录
1.前言
因工作需要,需要实现roi框下的字符识别,故选择基于paddle ocr的离线模型来开发。在此之前已经完成了OCR v4的部署,并封装成dll,以供exe调用。但有些图像感觉识别效果不是很好,且速度较慢,不知道是因为离线模型数据集太少或是什么原因,故在此部署一个OCRv3的模型,对比看看效果。v4和v3的部署方式是一样的,只是库文件会有变化,部署v4时,cmake之后根据vs报错修改即可
2.准备
查阅官方文档,了解window下C++的部署流程:文档
2.1 下载需要的源码和库
1.下载ocr推理项目和模型:我下载的是release/2.6,应该release2.5以上都行项目和模型下载地址
往下滑找到模型列表 然后下载推理模型
2.下载对应的预测库:下载v2.6.0版本的推理库,要注意版本对应 预测库地址
3.opencv下载:我下载的v4.9,大家可根据需求下载,安装时,记得配置环境变量 opencv下载地址
4.CMake下载安装:我装的最新的v3.30,我记得有CMake的版本限制,好像是要求3.14+ Download CMake
5.可以将需要的资源都放一个文件夹内
6.若没有安装git,需要先安装git
3.运行
3.1 构建vs项目,执行cmake
1.先在PaddleOCR-release-2.6\deploy\cpp_infer下创建一个build文件夹
2.cmake选择source code和bulid binaries路径,点击configure,选择VS2019 和 X64,之后会报 error,这是正常的,因为还没有配置库路径
3.接下来配置库路径,因为是CPU推理 所以 只需配置opencv_dir 和paddle_dir,再点击configure
若看到configuring done说明生成vs项目成功,点击generate,open project
注:若遇到关于git的报错,可将 deploy/cpp_infer/external-cmake/auto-log.cmake
中的github地址改为 https://gitee.com/Double_V/AutoLog,重新configure(本人在配置v4的时候遇到这个问题,按这个方法解决,但是v3没有遇到)
3.2 生成解决方案
项目打开之后
1.将解决方案配置由debug改为release
2.下载dirent.h,并拷贝到工程文件下,如E:\OCRv3\PaddleOCR-release-2.6\deploy\cpp_infer下
点击生成->生成解决方案,即可在build/Release/
文件夹下看见ppocr.exe
文件。
注:本人在部署v4的时候遇到一个"serlocal"的报错,检查发现,可能是因为版本更新,所以预测库里paddle_inference\third_party\install下的文件名和CMakeLists.txt里的名字不对应,我修改了文件夹名字随即正常
双击ppocr.exe,会报错缺少dll,dll文件都在\paddle_inference里,主打缺啥拷贝啥,直到不报错即可
4.预测
测试下图
1.win+r 打开cmd,cd到ppocr.exe路径下
2.输入CHCP 65001,这样不会乱码
3.执行 下面命令
ppocr.exe system --det_model_dir=E:\OCRv3\models\ch_PP-OCRv3_det_infer --rec_model_dir=E:\OCRv3\models\ch_PP-OCRv3_rec_infer --rec_char_dict_path=E:\OCRv3\PaddleOCR-release-2.6\ppocr\utils\ppocr_keys_v1.txt --image_dir=C:\Users\Administrator\Desktop\R-C.jpg
det_model_dir:定位模型路径
rec_model_dir:识别模型路径
rec_char_dict_path:字典路径
image_dir:图片路径
4.结果
5.结语
以上就是部署并测试的全流程,后续我重写了ocr(),并封装成dll,在qt中调用,大致效果如下