本文长度为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识别的图片路径。
上面即为检测并识别的结果
完