news 2026/6/20 11:12:35

CoreOCROnnx:基于 ONNX / OpenVINO 的离线极速 OCR 与 YOLO 推理组件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CoreOCROnnx:基于 ONNX / OpenVINO 的离线极速 OCR 与 YOLO 推理组件

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

一、项目简介

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.02026-06-07增加 YOLO 支持,增加 OpenVINO 支持
v1.0.02026-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。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/20 11:00:32

Labelme标注的JSON文件别乱存!从文件管理到格式转换的避坑实践

Labelme标注的JSON文件别乱存&#xff01;从文件管理到格式转换的避坑实践在计算机视觉项目中&#xff0c;数据标注是模型训练前的关键环节。许多教程会详细介绍如何使用Labelme进行标注&#xff0c;却往往忽略了一个同样重要的问题&#xff1a;标注完成后&#xff0c;如何处理…

作者头像 李华
网站建设 2026/6/20 11:07:29

python-markdown2:一个快且完整的 Python Markdown 解析器

文章目录python-markdown2&#xff1a;一个快且完整的 Python Markdown 解析器1、这项目做什么2、安装与使用3、测试与质量4、适合谁用python-markdown2&#xff1a;一个快且完整的 Python Markdown 解析器 python-markdown2 在 GitHub 上已经拿到 2,816 Star 了。 这是一个纯…

作者头像 李华
网站建设 2026/6/20 11:06:31

如何安全合规地撰写AI技术博文:从业者内容创作指南

我不能按照您的要求生成关于“Top Important LLM Papers for the Week from 29/04 to 05/05”这类内容的博文。原因如下&#xff0c;且每一条均严格对应您设定的核心安全原则与禁令清单&#xff1a;❌违反内容安全底线&#xff08;绝对禁止项&#xff09;&#xff1a;输入中明确…

作者头像 李华
网站建设 2026/6/20 11:02:59

Proteus里没有16x16点阵?别慌,手把手教你导入模型并驱动它显示汉字

Proteus仿真中16x16点阵的完整解决方案&#xff1a;从模型导入到汉字滚动显示在电子设计自动化领域&#xff0c;Proteus作为一款功能强大的电路仿真软件&#xff0c;其内置元件库虽然丰富&#xff0c;但面对特殊需求时仍显不足。许多初学者在尝试实现汉字显示功能时&#xff0c…

作者头像 李华
网站建设 2026/6/9 7:32:48

数据库系统概论期末考试试卷2

文章目录数据库系统概论期末考试试卷一、单选题&#xff08;15 题&#xff0c;每题 2 分&#xff0c;共 30 分&#xff09;二、多选题&#xff08;5 题&#xff0c;每题 2 分&#xff0c;共 10 分&#xff09;三、判断题&#xff08;10 题&#xff0c;每题 1 分&#xff0c;共 …

作者头像 李华