百度PaddleOCR字符识别推理部署(C++)
因工作项目需要用到PaddleOCR字符识别,踩过的一些坑,在此记录,便于后面的人少踩些坑
一、前期准备工作:
(1)OpenCV4.2.0(可以使用其他版本,一定要先把CV库配置好,不然会出错)
(2)下载Cmake 3.17.5(可以使用其他Cmake版本)
(3)Visual Studio 2017(可以使用其他vs版本,根据自己的情况来定)
(4)分别下载PaddleOCR项目、PaddleOCR模型、PaddleOCR预测库
a.下载PaddleOCR推理项目:https://github.com/PaddlePaddle/PaddleOCR 如图:
b.下载 PaddleOCR模型:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/README_ch.md 如图:
c.下载paddle_reference预测库:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/05_inference_deployment/inference/windows_cpp_inference.html 如图:
(5)步骤(4)下载的文件分别为:
PaddleOCR推理项目:PaddleOCR-release-2.0;
PaddleOCR模型:总共有三个文件夹(ch_ppocr_mobile_v2.0_cls_infer、 ch_ppocr_mobile_v2.0_det_infer、ch_ppocr_server_v2.0_rec_infer),为了方便,可以分别命名为cls、det、rec,将三个文件放在同一个文件夹下models
(三个文件下都有文件inference.pdiparams、inference.pdiparams.info、inference.pdmodel)
文件名更新为:
下载好之后的文件如下,放在E盘符根目录下OCR文件夹:
二、使用Cmake进行编译PaddleOCR
在E:\OCR\PaddleOCR-release-2.0\deploy\cpp_infer文件路径下创建一个空文件夹build,用于编译。
cmake配置如下(读者可以参考我自己的,因为我没有使用到GPU,所以就没有设置CUDA_LIB和CUDNN_LIB的路径,有需要的可以自己试一下):
注意这里有个小坑:箭头所指的地方要选择x64,否则会出现“LNK1112 模块计算机类型“X64”与目标计算机类型“X86”冲突,就算你改为x64还是出错,所以一定要小心这里(如下图)
解决的办法:config时弹出Optional platform for generator,选中x64即可 ,cmake会默认win32(其实后面小括号已经提示了,容易忽略的地方)
点击configure和generate,弹出configuring done, generating done!,说明cmake编译这步成功完成
然后在E:\OCR\PaddleOCR-release-2.0\deploy\cpp_infer\build文件夹下生产ocr_system.sln项目工程(如图所示):
三、ocr_system.sln项目工程配置
在文件路径 E:\OCR\PaddleOCR-release-2.0\deploy\cpp_infer\build,打开ocr_system.sln,配置和平台分别选择release和x64位平台(与cmake对应起来),如下图所示:
右击项目ocr_system,属性中配置工程,C/C++附件包含目录:
链接器->输入->附加依赖项:(注意这里有个坑:依赖项第一行自动配置出错,应该将paddle_fluid.lib改为paddle_inference.lib,因为E:\OCR\paddle_inference_install_dir\paddle\lib路径下没有paddle_fluid.lib,不改否则会出错,弹出错误“LNK1107 文件无效或损坏:无法在0x398处读取”)