C++部署百度飞桨PaddleOCR最新版本

目录

文章目录

前言

一、paddleocr

二、准备工作

1.paddleocr源程序下载

2.Opencv以及Cmake下载

3.推理库下载

4.推理模型下载

5.整理解压

编译

1.工程编译

2.路径修改

3.dll文件导入

4.运行效果展示

总结



一、paddleocr

PaddleOCR是一个基于百度飞桨的OCR工具库,包含总模型仅8.6M的超轻量级中文OCR1它采用了先进的深度学习技术,包括卷积神经网络(CNN)和循环神经网络(RNN),以实现高精度的文字检测和识别。PaddleOCR广泛应用于各种场景,如车牌识别、文档分析、图像注释等2

二、准备工作

1.paddleocr源程序下载

网址:https://github.com/PaddlePaddle/PaddleOCR

选择下载的版本:2.8.0

点击右上角Code下载源程序压缩包:

2.Opencv以及Cmake下载

Opencv下载地址:https://opencv.org/releases/ 我下载的是4.5.2版本

Cmake下载:https:cmake.org/download  推荐版本3.20.2

Git下载:https://git-scm.com/

下载好以后将这三个软件安装一下,具体安装步骤不在赘述,网上很多教程。

3.推理库下载

下载地址:

https://www.paddlepaddle.org.cn/inference/v3.0/guides/install/download_lib.html#windows

左上角可以选择推理库版本,我下载的是3.0.0-beta1版本

4.推理模型下载

下载地址:https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.8

此处下载的是中英文轻量模型。

5.整理解压

下载完成后所有文件如下图:

新建文件夹model将三个推理模型解压放入其中,新建文件夹inference将推理库解压放入其中,新建release文件夹,将源程序解压放入其中,如下图:

在release目录下找到以下路径:release\PaddleOCR-release-2.8\deploy\cpp_infer,创建新的文件夹buid 如下图:

到此准备工作结束,开始编译.


编译

1.工程编译

1.打开Cmake,将路径 release\PaddleOCR-release-2.8\deploy\cpp_infer下的文件CMakeLists.txt拖入Cmake,Browse Buid选择上面步骤创建的新文件夹buid。

然后点击Configure:

直接点击Finish。配置过程会出现报错是因为找不到Opencv与推理库的路径如下图

由于是配置的CPU版本,只需要在①处配置Opencv路径,②处配置推理库的路径,如下图:

路径配置好后点击Generate,等待编译完成后就可以点击Open Project 就可以打开生成好的项目了。将PPocr设置为启动项,将VS切换为Release。

然后点击生成项目会出现如下报错:

这是由于还缺少一个头文件,官方给出了这个头文件下载地址:https://paddleocr.bj.bcebos.com/deploy/cpp_infer/cpp_files/dirent.h

文件下载好后在buid目录下新建include文件夹,将下载的dirent.h放入其中。

工程包含头文件:

然后点击生成解决方案,有可能会出现以下报错:

这是由于下载的推理库版本问题,新版推理库中不存在mkldnn文件夹,打开推理库会发现是mkldnn文件夹被改成了onednn文件夹。

将生成后事件中mkldnn改为onednn

然后点击生成解决方案,已经可以编译通过了。

2.路径修改

打开args.cpp,将程序中的检测图片路径,和模型路径修改,如下图所示;

3.dll文件导入

将推理库的common.dll与paddle_inference.dll复制到程序执行目录下

将自己电脑安装的opencv_worldxx.dll考入执行目录下:

4.运行效果展示


总结

Paddleocr效果还是很不不错的。由于是纯小白,文中表述不准确的还望多多担待。

### PaddleOCRC++ 实现适配 Jetson 硬件 PaddleOCR 是基于百度飞桨框架开发的一个开源 OCR 工具包,支持多种语言的文字检测与识别功能。对于在嵌入式设备(如 NVIDIA Jetson)上部署 PaddleOCR 的需求,通常需要考虑模型优化、推理引擎的选择以及硬件加速等问题。 #### 1. **Jetson 平台上的环境准备** NVIDIA Jetson 提供了一套完整的工具链来支持深度学习应用的运行。为了使 PaddleOCR 能够顺利运行于 Jetson 设备之上,需完成以下准备工作: - 安装适用于 Jetson 的 CUDA 和 cuDNN 版本[^1]。 - 配置交叉编译器以便构建适合 ARM 架构的目标文件[^2]。 #### 2. **Paddle Inference Library (C++) 使用** PaddlePaddle 社区提供了用于生产环境中高效执行预测任务的轻量级库——Paddle Inference Library。此库允许开发者通过纯 C++ 接口加载预训练好的 paddle 模型并进行前向计算操作[^3]。具体步骤如下: - 下载对应版本的 `paddle_inference_install_dir` 文件夹至目标机器; - 将项目源码链接到该目录下的动态链接库(.so),同时包含头文件路径; - 编写初始化函数设置配置参数比如线程数、GPU ID等; ```cpp #include "paddle_api.h" using namespace paddle; std::shared_ptr<Predictor> predictor; Config config; // 设置模型位置 config.SetModel("path/to/model/__model__", "path/to/model/__params__"); if (FLAGS_use_gpu) { config.EnableUseGpu(100, FLAGS_device_id); } else { config.DisableGpu(); } predictor.reset(new Predictor(config)); ``` 上述代码片段展示了如何利用官方 API 加载已转换成静态图形式的 PaddleOCR 检测/分类子模块,并开启 GPU 支持以充分利用 Jetson NX 或 TX2 这样的 SoC 中集成的强大图形处理能力[^4]。 #### 3. **TRT Optimizations & FP16 Precision** TensorRT 是由英伟达推出的一款专门面向神经网络推断阶段性能调优的产品,在降低延迟时间方面表现优异。如果希望进一步提升效率,则可以尝试将原生 Paddle 模型转为 TensorRT 可读取的形式再导入 TRT Runtime SDK 来做最终部署[^5]: ```bash python -m paddle.jit.export \ --model_dir=/your/local/pd_model_path \ --save_inference_dir=/exported/trt_engine_file \ --enable_tensorrt=True --precision_mode=fp16 ``` 以上命令会把指定目录内的 pdparam 和 pddesc 组合导出成为兼容 tensorrt engine file 结果集,默认采用半精度浮点运算模式(fp16)[^6]。 #### 4. **总结说明** 综上所述,要在 Jetson Nano/Xavier/NX 上成功实施 PaddleOCR 解决方案,除了常规依赖项安装外还需特别关注以下几个要点:一是选取恰当的基础镜像作为操作系统基础层;二是合理调整超参从而平衡功耗同吞吐率之间的关系;三是依据实际应用场景灵活切换不同量化等级策略等等[^7]。 ---
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值