飞桨PaddleOCR C++预测库布署

2021-07-07 19:13:28 浏览数 (1)

本文长度为2669,预计阅读7分钟

前言

关于OCR这块以前《Android通过OpenCV和TesserartOCR实时进行识别》中用过TesserartOCR,原来用的模型库也挺大,最近也研究了下别的OCR,最终决定采用百度飞桨PaddleOCR,本篇就是基于百度飞桨的PaddleOCR在Window版下C 的布署。

Q1

为什么使用飞桨PaddleOCR?

其实也是想了很久,如果继续使用原来的TesserartOCR对我来说应该学习成本更低一些,最终选了PaddleOCR也有几个原因:

1.中文教程的开源框架。(完全因为英文水平太烂)

2.推理模型库文件小,用超轻量的模型库总共才9.4M,而原来的TesserartOCR中文模型要50M左右。

3.想学深度学习框架,所以Anacanda全家桶早就装了,在这上面可以直接装PaddlePaddle,后面方便学习。

实现效果

识别的图片

识别效果

安装布署

微卡智享

系统环境

  • 操作系统:Win10
  • IDE:Visual Studio 2019
  • CMake Version:3.19.3
  • OpenCV Version: 4.5.1

使用PaddleOCR编译时用到了OpenCV,我本身就装过也编译了,想了解编译的可以看《OpenCV源码Android端编译,用时三天,我编了个寂寞。。。》,在Windows下编译是正常的,我这里是Android下的扩展库有问题。不想编译的可以直接在OpenCV下载编译好的。

PaddleOCR下载

1.PaddleOCR源码下载

https://github.com/PaddlePaddle/PaddleOCR.git

国内码云应该也有相关地址,上不去GitHub可以从Gitee中下。

2.推理模型下载

地址也是上面的源码地址,点开里面的README_ch.md说明中,找到上图下载的连接

  • 检测模型:https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_det_infer.tar
  • 方向分类器:https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar
  • 识别模型:https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_rec_infer.tar

注:开始我用的迅雷下载的,结果解压有问题,后来改为右键另存为后,解压正常了。

3.下载PaddleOCR Windows预测库

链接地址:https://paddleinference.paddlepaddle.org.cn/user_guides/download_lib.html#windows

源码下载的是最新版本的,所以预测库就是下的2.1版本,而版本说明里选择的cpu_avx_mkl,还是主要为了通用,如果是GPU的还要考虑cuda和cudnn等相关的东西。

01

解压PaddleOCR源码

将PaddleOCR2.1版本解压后

C 相关的在deploy目录下cpp_infer的目录下

02

解压并拷贝预测库

下载的预测库解压出来的文件夹

复制里面的所有文件

拷贝到PaddleOCR的源码下

03

使用VS编译PaddleOCR源码

打开VS2019选择继续但无需代码

打开CPP相关的CmakeLists.txt

点击文件---打开---CMake,找到上面说的PaddleOCR源码目录---deploy---cpp_infer---CMakelists.txt文件。

点击项目中的CMake设置

配置名称和类型改为Release

配置OpenCV_DIR和PADDLE_LIB

OpenCV_DIR就是我们安装的OpenCV库里面带有OpenCVConfig.cmake目录的位置。

PADDLE_LIB就是我们前面一步拷贝到PaddleOCR源码中Paddle下Lib的目录。

因为用的是CPU版本,所以下面WITH_GPU要注意一下是否打勾了,如果打勾了要去掉。修改完后点击 面的保存并生成CMake缓存。

前面我们把预测库已经拷贝到源码路径一下,所以CMakeLists.txt里面这一段包含路径可以不用考虑了,这些完成后直接点击项目----全部重新生成即可编译完成。编译完成的文件在源码目录---deploy---cpp_infer_out---build---x64-Release下,如下图:

04

拷贝相关文件

将编译好的目录整个复制出来后,删除多余的目录和文件,只保留相关的exe和dll文件。

然后将预测库---lib目录下的paddle_inference.dll拷贝到当前目录下

接下来再拷贝配置文件config.txt,配置文件在源码目录---deploy---cpp_infer---tools目录下。

然后是下载的三个模型文件,解压后都拷贝到程序目录下,我拷过来后改了个名,如下图

解压后的每个目录下都是相同的模型文件。

最后还有就是源码目录下---ppocr---utils---ppocr_keys_v1.txt文件也拷贝到当前程序目录下。

05

配置Config.txt

打开目录下的config.txt文件

将det_model_dir、cls_model_dir、rec_model_dir里面目录改为上面我们已经改过名的inference的目录文件夹,然后ppocr_keys_v1.txt在前面我们已经拷贝到当前目录下了,所以这里直接前面加上./即可。

到这里全部配置就完成了,接下来运行看看效果。

程序运行

打开CMD,目录指定到我们程序的目录下,然后运行

代码语言:javascript复制
.ocr_system.exe D:PersonalStudioPaddlePaddlePaddleOCRReleaseFinalconfig.txt E:DCIMts3.jpg

ocr_system.exe后的第一个参数为配置文件的路径,第二个参数为要OCR识别的图片路径。

上面即为检测并识别的结果

0 人点赞