CoreOCROnnx:离线极速 OCR + YOLO + ONNX / OpenVINO 双后端

大家好,最升级了一个更偏轻量、高速部署方向的 OCR 开源项目:CoreOCROnnx

如果说 PaddleOCRApi 更偏完整 Paddle 推理库封装,那么 CoreOCROnnx 的定位就是:

使用 ONNX / OpenVINO 运行时,提供更轻量的离线 OCR 和 YOLO 推理能力。

项目地址:

  • GitHub:https://github.com/PaddleOCRCore/CoreOCROnnx
  • Release:https://github.com/PaddleOCRCore/CoreOCROnnx/releases

网盘下载:https://pan.baidu.com/s/1h8tyeGzG0dukzMVDUwPqWQ?pwd=bejk
在这里插入图片描述


一、项目简介

CoreOCROnnx 是一个免费离线 OCR 组件,核心推理能力由 PaddleOCROnnx.dll 提供。它基于 C++ 动态库封装,并提供 C# SDK、WebAPI 服务以及多语言调用示例,方便在不同业务系统中快速集成。

当前项目支持:

  • PP-OCRv5 mobile / server 模型
  • 向下兼容 PP-OCRv4 / PP-OCRv3 模型
  • ONNX Runtime 后端
  • OpenVINO 后端
  • CPU / GPU 推理
  • OCR 检测、方向分类、文字识别
  • YOLO detect / pose / classification / segmentation / obb
  • C# / C++ / Java / Python / Go 等多语言调用
  • WebAPI 服务化部署
  • WinForms Demo 调试体验

项目采用 Apache-2.0 License,欢迎大家使用、二次开发和贡献。


二、为什么做 ONNX 版本?

很多 OCR 项目在实际落地时,会遇到几个很现实的问题:

  • 部署包太重
  • 推理环境复杂
  • 业务系统只需要 OCR 基础能力,不一定需要完整推理框架
  • 希望用统一接口调用 OCR 和 YOLO
  • 希望在 Windows x64 环境中快速交付
  • 希望前端或其他业务系统通过 HTTP 直接调用

CoreOCROnnx 主要解决的就是这些问题。

它把 OCR 推理能力封装为 PaddleOCROnnx.dll,C# 端只需要通过 SDK 或 WebAPI 调用即可。对于业务系统来说,调用方式更接近普通组件,不需要关心底层 C++ 推理细节。


三、v4.0.0 版本重点更新

当前版本:v4.0.0

本次版本主要新增两个方向:

1. 增加 YOLO 支持

CoreOCROnnx 不再只是 OCR 组件,现在也支持 YOLO 推理。

SDK 中已经提供了 YOLO 初始化与检测接口:

  • YoloInitJson
  • YoloDetect
  • YoloDetectByte
  • YoloDetectMat
  • YoloDetectBase64
  • YoloDetectTensor
  • YoloDetectByteTensor
  • YoloDetectMatTensor
  • YoloDetectBase64Tensor
  • YoloFreeEngine

适合用于:

  • 通用目标检测
  • 姿态检测
  • 图像分类
  • 分割任务
  • OBB 旋转框检测
  • OCR 前置区域检测
  • 业务图片结构化分析

2. 增加 OpenVINO 后端支持

除了 ONNX Runtime 后端,v4.0.0 也提供了 OpenVINO 后端运行时包。

OpenVINO 后端支持:

  • PaddleOCR 检测、方向分类、文字识别
  • YOLO detect / pose / classification / seg / obb
  • 现有 Tensor 接口

对于 Intel CPU / Intel GPU 场景,OpenVINO 后端会更有部署价值。

需要注意:OpenVINO 后端中的 use_gpu=true 表示使用 OpenVINO 的 Intel GPU 设备,不是 CUDA,也不是 DirectML。


四、运行时包说明

v4.0.0 Release 提供两个运行时包,可按需选择:

  • ONNX Runtime 后端:OCRRuntimeOnnx_v4.0.0.zip
  • OpenVINO 后端:OCRRuntimeOpenVino_v4.0.0.zip

下载地址:

https://github.com/PaddleOCRCore/CoreOCROnnx/releases

部署时,将运行时包中的 PaddleOCROnnx.dll 和同目录依赖文件复制到 C# 程序运行目录即可。

当前发布包为 Windows x64,因此 C# 项目建议使用 x64 运行。


五、OpenVINO 后端部署注意事项

OpenVINO 后端不要只复制 PaddleOCROnnx.dll,还需要一起复制 OpenVINO 依赖文件。

CPU 版至少包含:

PaddleOCROnnx.dll
openvino.dll
openvino_c.dll
openvino_intel_cpu_plugin.dll
openvino_ir_frontend.dll
openvino_onnx_frontend.dll
plugins.xml

如果发布包包含 GPU 插件,还会包含:

openvino_intel_gpu_plugin.dll
cache.json

OpenVINO 后端支持两类模型路径:

  • ONNX 模型:传入 .onnx 文件路径
  • OpenVINO IR 模型:传入 .xml 文件路径,旁边必须有同名 .bin

例如 PaddleOCR 的 OpenVINO IR 模型配置:

det_infer = models\PP-OCRv5_mobile_det_ov\inference.xml
cls_infer = models\PP-OCRv5_mobile_cls_ov\inference.xml
rec_infer = models\PP-OCRv5_mobile_rec_ov\inference.xml
keys      = models\keys.txt

注意不要把模型目录直接传给 Init / Initjson

错误写法:

models\PP-OCRv5_mobile_det_ov

正确写法:

models\PP-OCRv5_mobile_det_ov\inference.xml

如果错误信息中出现 model format: "",通常就是传入了目录,或者路径没有模型扩展名。


六、WebAPI 服务能力

CoreOCROnnx.WebApi 提供 HTTP 接口,方便前端、Java、Python、Go 或其他系统直接调用 OCR 服务。

当前 WebAPI 项目目标框架为:

net10.0

WebAPI 服务启动后,可访问:

http://localhost:5000
http://localhost:5000/scalar

也可以通过项目中的启动脚本运行:

  • StartOCRApi.bat
  • StartOCRApi.sh

主要接口包括:

接口 功能 输入
/OCRService/Get 检查服务状态 GET
/OCRService/GetIdCard 身份证识别 Base64
/OCRService/GetOCRText 通用 OCR 识别 Base64
/OCRService/GetOCRFile 通用 OCR 识别 图片文件
/OCRService/GetOCRJsonFile 通用 OCR 识别,返回 JSON 图片文件

Base64 OCR 请求示例

{
  "Base64String": "<图片Base64字符串>",
  "ResultType": "text"
}

返回示例:

{
  "status": 200,
  "data": "识别出的文字内容",
  "errorMessage": ""
}

如果 ResultType 设置为 json,则返回 OCR 结构化 JSON 结果。


七、SDK 能力说明

CoreOCROnnx.SDK 对底层 DLL 做了进一步封装,主要能力包括:

OCR 初始化

支持通过实体参数或 JSON 参数初始化 OCR:

  • Init
  • InitDefaultOCREngine

支持配置:

  • 检测模型路径
  • 方向分类模型路径
  • 识别模型路径
  • 字典文件路径
  • CPU 线程数
  • CPU 内存限制
  • GPU 开关
  • 图像 padding
  • 最大边长缩放
  • 文字框阈值
  • 方向检测
  • 可视化输出
  • 日志输出

OCR 识别

支持多种输入方式:

  • Detect(string imagefile)
  • Detect(byte[] imagebyte)
  • DetectMat(IntPtr ptr_cvmat)
  • DetectBase64(string base64)

YOLO 推理

YOLO 同样支持多种输入方式:

  • 图片文件
  • 图片字节
  • OpenCV Mat
  • Base64 图片
  • JSON 结果输出
  • Tensor 原始结果输出

这让 CoreOCROnnx 不只是 OCR 组件,也可以作为一个轻量视觉推理组件来使用。


八、配置示例

WebAPI 的 appsettings.json 中可以配置 OCR 模型和推理参数:

{
  "OCRConfig": {
    "det_infer": "ch_PP-OCRv5_mobile_det.onnx",
    "rec_infer": "ch_PP-OCRv5_rec_mobile_infer.onnx",
    "cls_infer": "ch_ppocr_mobile_v2.0_cls_infer.onnx",
    "keyFile": "ppocrv5_dict.txt",
    "cpu_mem": -1,
    "cpu_threads": 30,
    "use_gpu": false,
    "gpu_id": 0,
    "gpu_mem": 4000,
    "padding": 20,
    "maxSideLen": 1024,
    "boxScoreThresh": 0.5,
    "boxThresh": 0.3,
    "unClipRatio": 1.6,
    "doAngle": true,
    "mostAngle": true,
    "visualize": false,
    "enable_log": false,
    "isOutputConsole": true
  }
}

说明:

  • PP-OCRv5 和 PP-OCRv4 的字典文件不通用,需要按模型版本选择
  • cpu_threads 可根据服务器核心数调整
  • maxSideLen 可控制长边缩放,影响速度和识别效果
  • padding 可改善文字框未完整覆盖文字的问题
  • use_gpu 在 OpenVINO 后端表示 Intel GPU

九、适用场景

CoreOCROnnx 适合以下场景:

  • 内网 OCR 服务
  • 桌面软件 OCR 集成
  • 轻量 WebAPI OCR 服务
  • 图片文字提取
  • 身份证、票据、表单识别
  • OCR + YOLO 联合视觉分析
  • 自动化系统中的图像识别
  • 工业检测前置识别
  • Intel CPU / Intel GPU 环境部署
  • 不希望引入完整 Paddle 推理库的轻量项目

如果你的项目需要 OCR-VL、PP-Structure 等更完整的文档理解能力,可以使用 PaddleOCRApi;如果你的项目更关注轻量、速度、ONNX/OpenVINO 部署和 YOLO 推理,那么 CoreOCROnnx 会更合适。


十、项目结构

PaddleOCROnnxWebApi/
├─ CoreOCROnnx.SDK/        # C# SDK 封装
│  ├─ Services/            # OCR / YOLO 服务封装
│  ├─ Interface/           # IOCRService 接口
│  ├─ Models/              # OCR / YOLO 结果模型
│  └─ OCRRuntime/          # Demo 图片、模型说明等资源
│
├─ CoreOCROnnx.WebApi/     # WebAPI 服务
│  ├─ Controllers/         # OCR 接口
│  ├─ Services/            # OCR 引擎服务
│  ├─ Views/               # 首页视图
│  ├─ wwwroot/             # 静态资源
│  └─ appsettings.json     # OCR 配置
│
├─ Demo/                   # 多语言 Demo
│  ├─ WinFormsOnnx/
│  ├─ WinFormsOV/
│  ├─ Python/
│  └─ GoDemo/
│
└─ CoreOCROnnx.sln         # Visual Studio 解决方案

十一、版本路线

版本 日期 重点
v4.0.0 2026-06-07 增加 YOLO 支持,增加 OpenVINO 支持
v1.0.0 2026-01-18 初版发行 CoreOCROnnx.WebApi

十二、总结

CoreOCROnnx 是一个面向实际部署的轻量 OCR / 视觉推理组件。

它的核心优势是:

  • 离线运行
  • 部署轻量
  • 支持 PP-OCRv5
  • 支持 ONNX Runtime / OpenVINO 后端
  • 支持 OCR 和 YOLO
  • 支持 WebAPI 服务化
  • 支持多语言调用
  • C# 端调用方式简单

如果你正在做 OCR 服务、桌面软件文字识别、图像自动化识别,或者希望在 Intel 硬件上尝试 OpenVINO 部署,可以关注这个项目。

项目地址:

  • GitHub:https://github.com/PaddleOCRCore/CoreOCROnnx
  • Release:https://github.com/PaddleOCRCore/CoreOCROnnx/releases

如果项目对你有帮助,欢迎点一个免费的 Star。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐