飞桨PaddleOCR C++预测库布署

本文介绍了如何在Windows环境下利用百度飞桨PaddleOCR进行C++部署,包括安装环境配置、模型下载、编译步骤以及实战应用,重点展示了OCR识别的过程和成果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学更好的别人,

做更好的自己。

——《微卡智享》

fca38da3b7ba5ce962c3da62b330e088.png

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

前言

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

14879a8d4b8d79603dcf0303742485e7.png

Q1

为什么使用飞桨PaddleOCR?

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

 

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

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

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

实现效果

2473fa6f1b65801fc9efddd049208f2f.png

识别的图片

40f98e22be814fda7d28e4516ba67cc3.png

识别效果

安装布署

d9faff3177bccf6173df32cdcdfcae8c.png

微卡智享

系统环境

  • 操作系统: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.推理模型下载

ce28183f01c3aac2581e1cc938257216.png

地址也是上面的源码地址,点开里面的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预测库

d45bd8985303857925196b2d554f70d5.png

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

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

7222e5fb8b8ce41b8fb4f66727da7df6.png

01

解压PaddleOCR源码

98fd9a2e4555f6287263bed76ea682ab.png

将PaddleOCR2.1版本解压后

3c80f28341101ee47d951427c1538c7f.png

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

02

解压并拷贝预测库

8f53226c640473f738304f477c2519ce.png

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

50e7d9fa8f910d37511a46766cda9989.png

复制里面的所有文件

a3d44e97071230c313f7136812b82233.png

拷贝到PaddleOCR的源码下

03

使用VS编译PaddleOCR源码

bcd6af1380736bca99ee2e9aeb4a8636.png

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

e11ee700a1f118a384fb42f4ae955cf9.png

打开CPP相关的CmakeLists.txt

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

17596eaefab3d00179015e83a45c8ca7.png

点击项目中的CMake设置

7533e4d284704bb201f5ec77ede58616.png

配置名称和类型改为Release

5f03c9254a7012cd576644e54ffec013.png

配置OpenCV_DIR和PADDLE_LIB

53781c0496047b3d38858c760754e9ba.png

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

f8623453163aea533a6ab8aa417d2425.png

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

3e875c8e03630c0224d9dd20fe9c55b6.png

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

560e99c45061616667739b8436512175.png

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

fe3ba800936ed7cb8c2446b6e9bdebe9.png

04

拷贝相关文件

fd7fcb46b48168bef4e7e18d7ae65a70.png

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

0eb4365b0f900a22dc08ff112cc980c7.png

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

dc9428adfb71aed8cf459c1c358b7615.png

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

d65abda24aa986c4980b5ebd35f5b9e4.png

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

9a1b6a61b8152c0f828934329f97bab0.png

02e788135d6da48bb0633adb38546f6f.png

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

950899915042fbf79944a3ab7b93603c.png

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

05

配置Config.txt

9a462c46d1413be3ae19ef03860f78d7.png

打开目录下的config.txt文件

7fcc686ce89bae5f4898f0605fdbed3a.png

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

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

cbc11d94bfb9672592a8a2c5d879e4e4.png

程序运行

646ae78a8ded9586007bb136db57a863.png

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

.\ocr_system.exe D:\PersonalStudio\PaddlePaddle\PaddleOCRReleaseFinal\config.txt E:\DCIM\ts3.jpg

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

6c364e6089aaa18ece748f70b5902475.png

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

f7c2e02f43476fc8ed9320cde7aae1eb.png

扫描二维码

获取更多精彩

微卡智享

c9226e318459ece28f4aa6913a87e99f.png

「 往期文章 」

C++ OpenCV检测并提取数字华容道棋盘

C++ OpenCV使用大津法求自适应阈值

OpenCV旋转矩形RotatedRect的Points函数遇到的问题

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值