cmake 下载地址:https://cmake.org/files/v3.17/
opencv:https://opencv.org/releases/ 我下载的是win版本,下载后直接运行可执行文件。
vs2017 我之前安装好了的,如果想要安装文件可以找我。
根据自己的电脑配置选择,我下载的是 cmake-3.17.5-win64-x64.msi ,要下载msi版本的,一开始我下载zip,还以为能用的,也能打开exe可执行文件。结果就是个坑,根本没安装上。
我的项目目录文件如下:
需要准备的工具:vs2017, cmake3.17,opencv3.4.7 (paddle官网用的是vs2019的)
目录说明:
fluid_inference_install_dir :paddleOCR推理库,win版 选择 cpu_avx_mk,我用的1.8.5版。
地址:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/advanced_guide/inference_deployment/inference/windows_cpp_inference.html
models 即deb, cls, rec模型存放文件夹:
每个模型文件夹下分别包含:model 和params 两个文件。
模型下载地址即官网的推理模型:https://github.com/PaddlePaddle/PaddleOCR ,选在inference model 下载即可:
PaddleOCR 目录即把官方项目下载下来:https://github.com/PaddlePaddle/PaddleOCR
还有两张图片用来测试。
一,用cmake-gui 生成 VS 工程
我的配置如下:
一开始没有配置opencv以及PADDLE_LIB , 也不知道在哪里配置,所以configure 后会报错,把这两路径配置上,CMAKE 中 cmake-configuration-type选择release。以及with_mkl 打勾后configure就没问题了。
然后 Generating 。完成后,现实configuring done, generating done!
由此,就在项目OCR\PaddleOCR\deploy\cpp_infer\build 下生成vs 工程:
二,在vs2017中生成解决方案
在OCR\PaddleOCR\deploy\cpp_infer\build 下打开 ocr_system.sln ,配置和平台选择release 和x64。
在项目属性中配置工程。基本上都已经自动配置好了,但还是要检查一下,我就遇到一个路径文件配置错的。
c/c++ -- 附加包含目录:
链接库--输入--附加依赖项:
这里我就遇到一个bug:依赖项的第一行自动把我配置错了,变成..\OCR\fluid_inference_install_dir\paddle\lib\libpaddle_fluid.dll
但这里显然不对,要的是lib文件,而且这个目录下是没有libpaddle_fluid.dll。一开始我还以为文件名错了,直接把paddle_fluid.dll 改成libpaddle_fluid.dll,
果然不行,后来才发现这里怎么能配置dll文件。。。是lib文件才对。改成libpaddle_fluid.lib路径就对了:
c/c++--代码生成--运行库 设置为多线程(/MT:
这个也是个坑,一开始没改。报错一大堆:检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”
接下来就可以生成解决方案。
但,报错:常量中有换行符。。。。
参考:https://www.cnblogs.com/cppskill/p/11776384.html
进入项目 -> 属性->常规,将字符集设置为多字节字符集
在C/C++ => 命令行中添加(“/utf-8”)
然后生成解决方案 OK !在 ..\OCR\PaddleOCR\deploy\cpp_infer\build\Release下生成exe可执行文件:
这里注意要把\OCR\fluid_inference_install_dir\paddle\lib\paddle_fluid.dll 文件拷贝过来。
三,运行程序
修改配置文件:\OCR\PaddleOCR\deploy\cpp_infer\tools\config.txt:
修改参数:
det_model_dir 检测模型路径 \OCR\models\ch_ppocr_mobile_v1.1_det_infer
cls_model_dir 角度模型路径 \OCR\models\ch_ppocr_mobile_v1.1_cls_infer
rec_model_dir 识别模型路径 C:\Users\yao\Desktop\OCR\models\ch_ppocr_mobile_v1.1_rec_infer
char_list_file 字典路径 注意中英文的区别 \OCR\PaddleOCR\ppocr\utils\ppocr_keys_v1.txt
配置完终于可以跑了!
命令行cd 到可执行文件目录下:OCR\PaddleOCR\deploy\cpp_infer\build\Release
执行:ocr_system.exe C:\Users\yao\Desktop\OCR\PaddleOCR\deploy\cpp_infer\tools\config.txt C:\Users\yao\Desktop\OCR\0.jpg
出来的结果乱码。。。很好!
第一反应是字典和模型是否匹配,因为如果是只识别英文和数字的模型但却给了中文字典,肯定会乱。
确认模型和字典都么问题后,查到资料 先命令行输入:输入CHCP 65001 完美解决:
再运行:ocr_system.exe C:\Users\yao\Desktop\OCR\PaddleOCR\deploy\cpp_infer\tools\config.txt C:\Users\yao\Desktop\OCR\0.jpg
完美!
接下来,把自己训练的模型套上去试试!