Skip to content

RapidAI/RapidOcrCpp

Repository files navigation

RapidOcrCpp

介绍

该项目通过MNN(Alibaba)/Ncnn(Tencent)/OnnxRuntime(Microsoft)等推理引擎,通过DbNet/AngleNet/CrnnNet,通过引擎携带转换器转换paddle(百度飞浆)模型来识别OCR文字

软件架构

项目目前只是利用各引擎的CPU部分来识别,降低学习门坎,通过简单注册工厂模式,将引擎打包到动态、静态库,方便调用

/include/RapidOcr               //源码.h目录
/include/RapidOcr/Core              //核心.h目录 
/include/RapidOcr/Provider          //引擎.h目录
/src                            //源码.cpp目录
/src/Core                           //核心.cpp目录
/src/Provider                       //引擎.cpp文件目录
/cmake                          //cmake脚本目录
/cmake/RapidOcrConfig.cmake.in      //项目发布cmake配置模板
/cmake/RapicOcr.pc.in               //项目发布pkgconfig配置模板
/cmake/RapidOcrSourceConfig.cmake   //源码配置脚本
/cmake/FindDepsPath.cmake           //封装按cmake目录规则,查找依赖目录
/cmake/FindDepend.cmake             //依赖查找脚本
/cmake/RapidOcrBuild.cmake          //编译脚本
/cmake/RapidOcrInstall.cmake        //安装脚本
/deps                           //依赖库目录
/deps/Ncnn                          //依赖库Ncnn目录
/deps/MNN                           //依赖库MNN目录
/deps/OnnxRuntime                   //依赖库OnnxRuntime目录
/models                         //模型目录
/models/Ncnn                        //Ncnn模型目录
/models/MNN                         //MNN模型目录
/models/OnnxRuntime                 //OnnxRuntime模型目录
/CMakeLists.txt         //cmake主文件

/test                   //单文件测试目录

安装教程

  1. 下载源码
    git clone https://gitee.com/A_knife/RapidOcrCpp
  1. 编译依赖
    在deps目录下各依赖有ReadMe.md文件,根据提示编译即可,不同平台可自行填加编译参数
    在window下如果使用官方依赖.dll,请自行按cmake标准目录存放,制件依赖xxxxConfig.cmake
    ├── deps/                  # ===== 第三方依赖 =====
    │   ├── onnxruntime/
    │   │   ├── Linux/
    │   │   ├── macOs/
    │   │   └── Windows/
    │   │       ├── include/
    │   │       │   └── onnxruntime/
    │   │       ├── lib/cmake/onnxruntime/onnxruntimeConfig.cmake
    │   │       └── bin/
    │   │
    │   ├── ncnn/
    │   │   ├── Linux/
    │   │   ├── macOs/
    │   │   └── Windows/
    │   │       ├── include/
    │   │       │   └── ncnn/
    │   │       ├── lib/cmake/ncnn/ncnnConfig.cmake
    │   │       └── bin/
    │   │
    │   ├── MNN/
    │   │   ├── Linux/
    │   │   ├── macOs/
    │   │   └── Windows/
    │   │       ├── include/
    │   │       │   └── MNN/
    │   │       ├── lib/cmake/MNN/MNNConfig.cmake
    │   │       └── bin/
    │   │
    注:项目中cmake/FindDepsPath中列出了常见目录结构,在Cmake构建时会给出[DEBUG]提示

  1. 选择项目引擎
    在项目根目录下CMakeLists.txt中有
    BUILD_WITH_ONNXRUNTIME=ON(启用OnnxRuntime引擎)
    BUILD_WITH_NCNN=ON(启用Ncnn引擎)
    BUILD_WITH_MNN(启用MNN引擎),
    注,引擎可编译时选择一个、二个,三个打包
  1. 其它编译参数说明 -DDEPS_PATH=指定存放依赖的目录,默认/deps -DCMAKE_BUILD_TYPE=Release | Debug 暂不持其它方式 -DBUILD_SHARED_LIBS=ON | OFF 默认ON,输出libRapidOcr.so/RapidOcr.dll -DBUILD_WITH_JNI=ON | OFF 默认OFF,ON输出libRapidOcr_jni.so/RapidOcr_jni.dll -DBUILD_OUTPUT_BIN=ON | OFF 默认ON,输出带调试信息的二进制可执行控制台代码 -DBUILD_OUTPUT_TEST=ON | OFF 默认OFF,编译/test目录下的c/cxx调用RapidOCR的测试代码 -DCMAKE_INSTALL_PREFIX=指定安装目录 将生成的库和二进制代码+头文件,安装到指定目录,实现下游调用

使用说明

  1. 项目代码编译可生成静态库、动态库和二进制测试可执行
  2. 安装后的RapidOcr遵循cmake标准目录结构,供下游find_package使用,也可以支持pkg调用
  3. 以RapidOcr为中间件的,参考/test目录下的使用方式
  4. RapidOcr不做中间件的,/src/Core/Main.cpp可以直接输出二进制

项目引用

依赖与致谢 (Dependencies & Acknowledgements)

本项目使用了以下优秀的推理框架来实现模型部署:

OCR 推理模块 (Fork)

本项目 Fork 并定制

  1. RapidAI/RapidOcrOnnx
  2. RapidAI/RapidOcrNcnn

    修改内容

    • 去除原项目中GPU部分
    • 合并两个项目共有部分,相近部分代码做了调整
    • 重构目录结构和重新制作CMAKE编译,暂不对 FOR Windows 编译/MT方式支持

(C++ OCR 推理引擎,基于 ONNX Runtime,底层模型为 PP-OCRv3 系列 ONNX 格式):

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

Releases

No releases published

Contributors