# RapidOcrCpp **Repository Path**: RapidAI/RapidOcrCpp ## Basic Information - **Project Name**: RapidOcrCpp - **Description**: No description available - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2026-05-22 - **Last Updated**: 2026-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RapidOcrCpp [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) RapidOcrCpp 是一个基于 **CPU 推理** 的多引擎 OCR 文字识别 C++ 库, 通过统一的工厂模式封装 **MNN / ncnn / ONNX Runtime** 推理后端, 并使用 **PP-OCR** 系列模型完成文字检测(DbNet)、方向分类(AngleNet)与文字识别(CrnnNet)。 > 本项目由 [RapidAI/RapidOcrOnnx](https://github.com/RapidAI/RapidOcrOnnx) 与 > [RapidAI/RapidOcrNcnn](https://github.com/RapidAI/RapidOcrNcnn) Fork 并重构而来。 --- ## 📖 目录 - [特性](#特性) - [软件架构](#软件架构) - [构建依赖](#构建依赖) - [编译选项](#编译选项) - [快速开始](#快速开始) - [安装与使用](#安装与使用) - [依赖与致谢](#依赖与致谢) - [参与贡献](#参与贡献) - [许可证](#许可证) --- ## ✨ 特性 - ✅ 多推理引擎支持(MNN / ncnn / ONNX Runtime) - ✅ 纯 CPU 推理,跨平台、易部署 - ✅ 工厂模式设计,引擎可自由组合 - ✅ 支持静态库 / 动态库 / 可执行文件 - ✅ CMake Config & pkg-config 标准安装 - ✅ 提供 C++ / JNI 接口(JNI 可选) --- ## 🏗 软件架构 ``` RapidOcrCpp ├── include/ │ └── RapidOcr/ │ ├── Core/ # 核心接口(DbNet / AngleNet / CrnnNet) │ └── Provider/ # 推理引擎抽象层 ├── src/ │ ├── Core/ # 核心实现 │ └── Provider/ # MNN / ncnn / ORT 实现 ├── cmake/ # CMake 构建与安装脚本 │ ├── Config.h.in # 编译期预定义 │ ├── RapidOcrConfig.cmake.in # 项目发布 cmake 配置模板 │ ├── RapidOcr.pc.in # 项目发布 pkgconfig 配置模板 │ ├── RapidOcrSourceConfig.cmake# 源码配置脚本 │ ├── FindDepsPath.cmake # 按 cmake 目录规则查找依赖目录 │ ├── FindDepend.cmake # 依赖查找脚本 │ ├── RapidOcrBuild.cmake # 编译脚本 │ ├── RapidOcrInstall.cmake # 安装脚本 │ └── RapidOcrCRTLinkage.cmake# Windows CRT 编译配置 ├── deps/ # 第三方依赖 │ ├── OpenCV/ # OpenCV 目录 │ ├── MNN/ # MNN 目录 │ ├── ncnn/ # ncnn 目录 │ ├── OnnxRuntime/ # ONNX Runtime 目录 │ ├── OpenVINO/ # OpenVINO 目录 │ └── Paddle/ # Paddle 目录 ├── models/ # 推理模型 │ ├── MNN/ │ ├── ncnn/ │ ├── OnnxRuntime/ │ ├── OpenVINO/ │ └── Paddle/ ├── test/ # 单元测试与示例 └── CMakeLists.txt # CMake 主文件 ``` --- ## 🧰 构建依赖 | 依赖 | 用途 | 是否必须 | 协议 | |------|------|---------|------| | OpenCV | 图像读写、色彩空间转换、仿射变换、结果绘制 | ✅ 必须 | Apache-2.0 | | ONNX Runtime | 跨平台高性能推理 | ⭕ 可选 | MIT | | ncnn | 移动端 / 嵌入式端高性能计算 | ⭕ 可选 | BSD-3-Clause | | MNN | 轻量级端侧推理 | ⭕ 可选 | Apache-2.0 | | OpenVINO | Intel 硬件平台加速 | ⭕ 可选 | Apache-2.0 | | Paddle | 模型训练 / 转换 | ⭕ 可选 | Apache-2.0 | ### 平台构建指南 - **Ubuntu 22.04**:[Ubuntu22.04_Build.md](Ubuntu22.04_Build.md) - **Windows 10 + VS2022**:[Window10_VS2022.md](Window10_VS2022.md) - **Windows 7**:[Window7_build.md](Window7_build.md) --- ## ⚙️ 编译选项 ### 引擎开关 在项目根目录 `CMakeLists.txt` 中控制: ```cmake BUILD_WITH_ONNXRUNTIME=ON # 启用 ONNX Runtime 引擎 BUILD_WITH_NCNN=ON # 启用 ncnn 引擎 BUILD_WITH_MNN=ON # 启用 MNN 引擎 ``` > ✅ 可同时启用多个引擎,运行时动态选择。 ### 常用 CMake 参数 | 参数 | 说明 | 默认值 | |------|------|--------| | `-DDEPS_PATH=` | 第三方依赖根目录 | `deps/` | | `-DCMAKE_BUILD_TYPE=` | `Release` / `Debug` | `Release` | | `-DBUILD_SHARED_LIBS=` | 动态库 / 静态库 | `ON` | | `-DBUILD_WITH_JNI=` | 是否输出 JNI 库 | `OFF` | | `-DBUILD_OUTPUT_BIN=` | 输出 CLI 调试工具 | `ON` | | `-DBUILD_OUTPUT_TEST=` | 编译测试程序 | `OFF` | | `-DCMAKE_INSTALL_PREFIX=` | 安装路径 | `/usr/local` | --- ## 🚀 快速开始 ### 1. 克隆仓库 ```bash # GitHub git clone https://github.com/RapidAI/RapidOcrCpp # Gitee 镜像 git clone https://gitee.com/RapidAI/RapidOcrCpp # Gitee 作者 git clone https://gitee.com/A_knife/RapidOcrCpp cd RapidOcrCpp ``` ### 2. 编译依赖 > **Windows 下使用官方预编译 DLL 时**,请按 CMake 标准目录存放,并制作对应的 `xxxConfig.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` 列出了常见目录结构,CMake 构建时会给出 `[DEBUG]` 提示。 ### 3. 构建主项目(Linux 示例) ```bash mkdir build && cd build cmake .. \ -DBUILD_WITH_ONNXRUNTIME=ON \ -DBUILD_WITH_NCNN=ON \ -DBUILD_WITH_MNN=ON \ -DCMAKE_BUILD_TYPE=Release cmake --build . --config Release ``` ### 4. 安装 ```bash cmake --install . --prefix /usr/local ``` --- ## 📦 安装与使用 安装后遵循 CMake 标准目录结构,可供下游 `find_package` 使用,同时也支持 `pkg-config` 调用。 ### CMake 方式 ```cmake find_package(RapidOcr REQUIRED) target_link_libraries(app PRIVATE RapidOcr::RapidOcr) ``` ### pkg-config 方式 ```bash pkg-config --libs rapidocr ``` ### 使用模式 - **作为中间件 / 库使用**:参考 `test/` 目录下的示例代码 - **直接运行 OCR**:`src/Core/Main.cpp` 可直接编译为命令行 OCR 工具 --- ## 🙏 依赖与致谢 本项目使用了以下优秀的推理框架来实现模型部署: | 项目 | 用途 | 官网 | 协议 | |------|------|------|------| | **OpenCV** | 图像读写、色彩空间转换、仿射变换、结果绘制 | [opencv.org](https://opencv.org) | Apache-2.0 | | **ONNX Runtime** | 跨平台高性能推理 | [onnxruntime.ai](https://onnxruntime.ai) | MIT | | **ncnn** | 移动端 / 嵌入式端高性能计算 | [github.com/Tencent/ncnn](https://github.com/Tencent/ncnn) | BSD-3-Clause | | **MNN** | 轻量级端侧推理 | [mnn.zone](https://www.mnn.zone) | Apache-2.0 | | **OpenVINO™** | Intel 硬件平台加速 | [software.intel.com/openvino](https://software.intel.com/openvino) | Apache-2.0 | | **PaddlePaddle** | OCR 模型训练与转换 | [github.com/PaddlePaddle/Paddle](https://github.com/PaddlePaddle/Paddle) | Apache-2.0 | ### Fork 来源 - [RapidAI/RapidOcrOnnx](https://github.com/RapidAI/RapidOcrOnnx) — 基于 ONNX Runtime 的 C++ OCR 推理引擎 - [RapidAI/RapidOcrNcnn](https://github.com/RapidAI/RapidOcrNcnn) — 基于 ncnn 的 C++ OCR 推理引擎 **主要修改内容:** - 去除原项目中的 GPU 部分,专注于 CPU 推理 - 合并两个项目的共有部分,对相近代码做了统一调整 - 重构目录结构和 CMake 构建系统 - 暂不支持 Windows /MT 编译方式 --- ## 🤝 参与贡献 1. Fork 本仓库 2. 新建功能分支 `Feat_xxx` 3. 提交代码 4. 新建 Pull Request --- ## 📄 许可证 本项目采用 **Apache-2.0 License**,详见 [LICENSE](LICENSE)。