首页 > 编程语言 >paddleXOCR c++ vs2022编译以及使用

paddleXOCR c++ vs2022编译以及使用

时间:2024-05-29 23:14:02浏览次数:35  
标签:PP OCRv3 c++ paddle paddleXOCR vs2022 cpp com infer

PaddleOCR的使用(C++)——Windows编译篇 - 夕西行 - 博客园 (cnblogs.com) 参考

官方的指导地址,按照他的来很全

PaddleOCR/deploy/cpp_infer/docs/windows_vs2019_build.md at main · PaddlePaddle/PaddleOCR · GitHub

1.opencv 我这里用的4.4(高版本应该也可以)

Releases - OpenCV

2.cmake 3.29.3 (低版本可能不支持2022)

Download CMake

3.vs 2022/2019

下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com)

4.paddle_infer

https://paddleinference.paddlepaddle.org.cn/user_guides/download_lib.html#windows

 框选部分为CPU预测

 

5.模型下载:需求2种模型

1.文字检测:是OCR系统中的关键步骤,旨在从图像中定位并分割出文字区域。

2.文字识别:是将检测到的文字区域转换为可编辑的文本格式的过程。

PP-OCRv3_基础模型_OCR_文字检测-飞桨AI Studio星河社区 (baidu.com)

 

开始编译:

1.下载paddleOCR源码

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

2.cmake 配置 生成vs项目 (我这里没有用GPU,所以没下载CUDA等内容)

 1)找到cpp源码位置 如下图配置源码路径(source code),添加项目生成路径;点击配置(configure),失败

2)依赖库路径(opencv,paddle_infer前面准备的),点击配置(configure) 依旧失败的话 修改

deploy\cpp_infer\external-cmake\auto-log.cmake  中

GIT_REPOSITORY https://gitee.com/Double_V/AutoLog 

 

3)再次configure,完成,generate 生成VS项目

3.打开生成项目 ppocr.sln,将生成目标改为x64 Release

 

 5.生成完成

 

6.使用

 程序运行需求DLL如图,img内存放要识别的图

图1 这是之前旧版的说明书,把人搞蒙的,还是得看官方文档

 图2

 

识别指令:

ppocr.exe system --det_model_dir=C:\gitCode\paddle\deploy\cpp_infer\build2\Release\ch_PP-OCRv3_det_infer --rec_model_dir=C:\gitCode\paddle\deploy\cpp_infer\build2\Release\ch_PP-OCRv3_rec_slim_infer --image_dir=C:\gitCode\paddle\deploy\cpp_infer\build2\Release\img

注意上面的两个模型分别为ch_PP-OCRv3_det_infer 文字位置检测  ;ch_PP-OCRv3_rec_slim_infer文字识别

识别结果:

 

标签:PP,OCRv3,c++,paddle,paddleXOCR,vs2022,cpp,com,infer
From: https://www.cnblogs.com/bang20221103/p/18221246

相关文章

  • C++设计模式的原则
    1、依赖倒置原则(DIP)·高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象稳定)。·抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)。2、开放封闭原则(OCP)·对扩展开放,对更改封闭。·类模块应该是可扩展的,但是不可修改。3、单一职责原......
  • vcpkg在vs2022下integrate install之后仍找不到第三方库的解决方案
    首先是vcpkg的安装,许多其他帖子都有,从github上拉取下来之后运行bootstrap-vcpkg.bat即可。不再赘述。接下来是使用部分,假设需要安装pcl库。在vs2022的开发者powershell中输入vcpkginstallpcl此时下载完成,成功拉取了pcl包。接下来按照教程所说为在vs2022的开发者powershell......
  • [ C++ ] 深入理解模板( 初 阶 )
    函数模板函数模板格式template<typenameT1,typenameT2,......,typenameTn>返回值类型函数名(参数列表){}注意:typename是用来定义模板参数关键字,也可以使用class(切记:不能使用struct代替class)函数模板的实例化模板参数的匹配原则1.一个非模板函数可以和......
  • P9 【力扣+知识点】【算法】【二分查找】C++版
    【704】二分查找(模板题)看到复杂度logN,得想到二分给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在......
  • VSCode配置C++环境
    目录一.环境准备二.编写代码三.直接利用gcc以及gdb编译调试四.配置tasks.json和launch.json五.其他这篇文章讨论一下VSCode配置C++的方法,重点要讨论的是tasks.json和launch.json这两个配置文件,所以很多基础内容会直接略过。一.环境准备1.安装MinGW-w64。为啥要装Min......
  • c++ static const
      ===============================首先得知道为什么要使用静态数据成员:在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。使用静态数据成员......
  • C++ 跨线程 传递指针
    目录在C++中跨线程传递指针时,需要注意线程安全和生命周期管理的问题。以下是一些常见的方法,用于在C++中安全地跨线程传递指针:使用智能指针和线程安全队列结合使用std::shared_ptr和线程安全的队列(如std::queue配合互斥锁)是一种常见的方法。#include<iostream>#include<t......
  • C++:虚表指针、虚表、虚函数和动态多态
    classBase{public:virtualvoidshow(){std::cout<<"Baseshow"<<std::endl;}};classDerived_1:publicBase{public:voidshow()override{std::cout<<"Derivedshow"<<std::endl;}};class......
  • C++ 线程同步condition_variable的使用
    一,condition_variable使用步骤创建一个scondition_variable对象。创建一个互斥量对象mutex。创建两个线程:等待线程和唤醒线程。在等待线程中,使用unique_lock锁定互斥量,并调用wait函数进入等待状态。在唤醒线程lock_guard锁定互斥量,并调用notify_one或notify_all函数唤醒等......
  • C++ std::function和std::bind的六种用法总结
    一,使用funciton和bind的六种方法1,使用function接收普通函数2,使用function接收lambda函数3,使用function函数来接收函数对象4,使用bind函数绑定类中的一般函数5,使用bind函数绑定类中的多态函数6,使用function来实现回调。二,代码实现直接看代码和注释:#include<iostream>#......