前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 C++ 项目中,通过源码使用 PaddlePaddle 实现 OCR 功能

在 C++ 项目中,通过源码使用 PaddlePaddle 实现 OCR 功能

作者头像
绿巨人
发布2024-03-01 14:05:14
4830
发布2024-03-01 14:05:14
举报
文章被收录于专栏:绿巨人专栏绿巨人专栏

My-PaddleOCR

介绍

如何在 C++ 项目中,通过源码使用 PaddlePaddle 实现 OCR 功能。 本项目的所有源码:gitee: paddleocr

目前,官方提供使用 PaddleOcr 的方案有:

  • 在 Python 项目中,调用 paddlepaddle + paddleocr 包。
  • 在 C++项目中,调用一个可执行文件。(由编译 PaddleOCR 中的 deploy/cpp_infer 下的代码形成) Paddle OCR 提供了一个通过编译 deploy/cpp_infer 下的代码为 ppocr.exe,然后通过命令行调用获取 OCR 的结果。 具体过程见: 服务器端 C++预测

其它方法:

  • 使用 Python 写一个 RESTful 服务,然后让 C++项目调用这个服务功能。

这里主要介绍一个更加直接的方法:

  • deploy/cpp_infer 的源码引入到我们的 C++项目。
  • 做适当修改后,我们就可以直接使用这些 API。
  • 当然,如果你愿意的话,也可以将这些源码形成一个新的项目,编译成一个 dll。(这里并不介绍) 说明:
  • 下面的方法只在 release 版中有效。可能是因为paddle_inference.dll 只支持 release 版。 如果要支持 debug 版,可能需要重新编译 PaddlePaddle。

Paddle OCR C++ 源码

Paddle OCR 的仓库,在github: PaddleOCR 或者 gitee: PaddleOCR C++ 相关的代码在目录 deploy/cpp_infer 里。

如何引入 Paddle OCR C++ 源码

需要安装的组件

  • opencv 我在 opencv 4.6 版本上测试通过。 注意:opencv 4.5 版本存在一些问题,会导致功能异常。 设置环境变量:
  • paddle_inference 我用的是 2.6 版。 设置环境变量:
  • cuda (optional) 你应该懂得。
  • cudnn (optional) 你应该懂得。

创建 C++项目

  • 创建一个空的 C++ 项目。
  • 在项目中创建文件:OpenCVDebug.props
  • 在项目中创建文件:OpenCVRelease.props
  • 在项目中创建文件:PaddleDebug.props
  • 在项目中创建文件:PaddleRelease.props
  • 修改 C++项目文件:my-paddleocr.vcxproj

引入 Paddle OCR C++ 源码

  • 克隆 Paddle OCR 仓库到本地。
  • 切换到分支 release/2.6
  • deploy/cpp_infer 目录下的 includesrc两个目录的内容复制到我们的 C++ 项目中。
  • 修改新的 src 目录名称为 ocr
  • 删除ocr/main.cpp
  • include目录下创建ocr_flags.h文件,内容如下:

这个文件是为了替换 google 的 gflags 库的使用。

  • 修改include/args.h文件,内容如下:

不使用 gflags/gflags.h 注释行 // #include <gflags/gflags.h> 增加行 #include "ocr_flags.h"

  • 修改ocr/args.cpp文件,内容如下:

不使用 gflags/gflags.h 注释行 // #include <gflags/gflags.h> 增加行 #include "include/ocr_flags.h"

  • 修改include/paddleocr.cpp文件,内容如下:

不使用 auto_log/autolog.h 注释行 // #include "auto_log/autolog.h" 注释方法 PPOCR::benchmark_log 的内容。

  • 修改include/paddlestructure.cpp文件,内容如下:

不使用 auto_log/autolog.h 注释行 // #include "auto_log/autolog.h" 注释方法 PPOCR::benchmark_log 的内容。

  • 修改include/utility.cpp文件,内容如下:

不使用 dirent.h 注释行 // #include <dirent.h> 注释方法 Utility::GetAllFiles 的内容。

编写调用程序

  • 在项目中创建文件:paddle_util.h 内容如下:
  • 在项目中创建文件:paddle_util.cpp 内容如下:
  • 在项目中创建主程序文件:my-paddleocr.cpp 内容如下:

编译运行

  • 在 Visual Studio 中使用 Release 版本编译。
  • 运行 copy_paddle_dll.bat,复制 paddle_inference.dll 到输出目录。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • My-PaddleOCR
    • 介绍
      • Paddle OCR C++ 源码
        • 如何引入 Paddle OCR C++ 源码
          • 需要安装的组件
          • 创建 C++项目
          • 引入 Paddle OCR C++ 源码
        • 编写调用程序
          • 编译运行
          相关产品与服务
          AI 应用产品
          文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档