基于C#winform部署PPOCRv6的onnx模型openvino版
PaddleOCR v6 ONNX 部署演示
基于 OpenVINO + PaddleOCR v6 的桌面端 OCR 文字识别演示程序,通过 C# Windows Forms 实现模型的在线下载、图片上传、OCR 推理、检测框可视化及耗时统计。

一、算法原理
1.1 PaddleOCR v6 整体架构
PaddleOCR v6 采用三阶段串联的 OCR 流水线设计:
输入图片
↓
┌─────────────────────────┐
│ 文本检测(DB / DB++) │ ← 定位文字区域,输出旋转矩形框
└────────────┬────────────┘
↓
┌─────────────────────────┐
│ 方向分类(轻量分类器) │ ← 判断文字是否旋转 180°,按需翻转
└────────────┬────────────┘
↓
┌─────────────────────────┐
│ 文字识别(CRNN / SVTR) │ ← 对每个检测框识别出文字内容及置信度
└────────────┬────────────┘
↓
输出:文字内容 + 置信度 + 检测框坐标
1.2 各阶段详解
| 阶段 | 算法 | 作用 |
|---|---|---|
| 文本检测 | DB(Differentiable Binarization) | 基于可微分二值化的分割网络,输出文字区域的旋转矩形框(RotatedRect) |
| 方向分类 | 轻量级 MobileNet 分类器 | 对检测到的文字块进行 0°/180° 方向判别,解决倒置文字识别问题 |
| 文字识别 | CRNN + CTC / SVTR | 对归一化后的文字图像块进行序列识别,输出文字字符串和置信度分数 |
1.3 OpenVINO 推理后端
本项目使用 Intel OpenVINO 作为推理引擎,替代 PaddlePaddle 原生推理,具有以下优势:
- 对 Intel CPU / GPU / NPU 进行了深度优化
- 通过
openvino_c.dll(C API)供 C# 层调用 - 模型格式为 ONNX,通过 OpenVINO 的 ONNX Frontend 直接加载
1.4 检测框可视化原理
每个识别区域对应一个 RotatedRect(旋转矩形),包含中心点、宽高和旋转角度。绘制时:
- 调用
Cv2.BoxPoints(rect)计算旋转矩形的 4 个顶点坐标(Point2f[]) - 使用
Cv2.Polylines在图片上绘制绿色四边形轮廓 - 使用
Cv2.PutText在框的左上角标注蓝色置信度分数
二、环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10 / 11(x64) |
| IDE | Visual Studio 2019 或以上 |
| .NET 框架 | .NET Framework 4.7.2 |
| C# 语法版本 | C# 6.0(禁止使用 C# 6.0 以上语法特性) |
| 编译平台 | x64(必须选择 x64 平台,不支持 AnyCPU / x86) |
| VC++ 运行时 | Microsoft Visual C++ 2015-2022 Redistributable (x64) |
| 网络 | 首次运行需联网下载模型(约 100 MB) |
主要依赖库版本
| 库名 | 版本 | 说明 |
|---|---|---|
Sdcb.OpenVINO |
0.7.1 | OpenVINO C# 封装 |
Sdcb.OpenVINO.PaddleOCR |
0.8.0 | PaddleOCR 推理封装 |
Sdcb.OpenVINO.PaddleOCR.Models.Online |
0.8.0 | 在线模型下载 |
Sdcb.OpenVINO.runtime.win-x64 |
2026.2.0 | OpenVINO Windows x64 原生运行时 |
OpenCvSharp4 |
4.11.0 | 图像处理库 |
OpenCvSharp4.Extensions |
4.11.0 | Mat ↔ Bitmap 转换扩展 |
三、安装步骤
3.1 安装 Visual Studio 2019
- 下载并安装 Visual Studio 2019
- 工作负载勾选 “.NET 桌面开发”
- 确保安装 .NET Framework 4.7.2 Targeting Pack
3.2 安装 VC++ Redistributable
必须安装,否则 OpenVINO 原生 DLL(
openvino_c.dll)无法加载,会报TypeInitializationException。
3.3 克隆或下载项目
git clone firc-projects
# 或直接下载 ZIP 解压
3.4 还原 NuGet 包
在 Visual Studio 中打开解决方案后,右键解决方案 → 还原 NuGet 程序包,或通过命令行:
nuget restore FIRC.sln
四、运行步骤
4.1 编译项目
- 打开
FIRC.sln - 在工具栏将平台切换为 x64(不要选择 AnyCPU)
- 配置选择 Debug
- 按
Ctrl+Shift+B生成项目
4.2 启动程序
按 F5 运行,界面如下:
┌─────────────────────────────────────────────────┐
│ ppocrv6的onnx部署演示视频 │
├───────────────┬─────────────────────────────────┤
│ [加载模型] │ │
│ 模型状态:... │ (图片预览区域) │
│ [上传图片] │ │
│ 图片:... ├─────────────────────────────────┤
│ [开始推理] │ │
│ 耗时:-- ms │ (识别结果文本区域) │
│ │ │
└───────────────┴─────────────────────────────────┘
4.3 操作流程
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 点击 “加载模型” | 自动下载 ChineseV6Tiny 模型(首次需联网,后续使用缓存) |
| 2 | 点击 “上传图片” | 选择 JPG / PNG / BMP / TIFF 格式图片 |
| 3 | 点击 “开始推理” | 执行 OCR 识别,图片上绘制绿色检测框,结果框显示文字及置信度 |
4.4 识别结果格式
结果文本框每行格式如下:
[1] (0.987) 识别出的文字内容
[2] (0.952) 第二段文字
...
其中:
[序号]— 检测区域编号(置信度)— 识别置信度,范围 0~1- 后续为该区域识别出的文字
五、注意事项
5.1 平台必须选择 x64
OpenVINO 原生运行时仅提供 x64 版本,选择 AnyCPU 或 x86 将导致 DllNotFoundException 或 TypeInitializationException。
5.2 VC++ Redistributable 缺失问题
若启动时弹出 "原生 DLL 加载失败" 窗口,说明 VC++ 运行时未安装,请安装后重启电脑。
5.3 首次模型下载
- 首次点击"加载模型"会自动从网络下载 PaddleOCR ChineseV6Tiny 模型(约 100 MB)
- 下载完成后会缓存到本地,后续启动无需重复下载
- 若网络不稳定,可配置代理或手动下载后放入缓存目录
5.4 C# 语法限制
本项目严格使用 C# 6.0 语法,以下特性不可使用:
$""字符串插值(C# 6.0 可用,但项目内已统一使用string.Format)?.空条件运算符(C# 6.0 可用,但需注意)??=空合并赋值(C# 8.0)- 可空引用类型
string?(C# 8.0) switch表达式(C# 8.0)record类型(C# 9.0)
5.5 System.Drawing 与 OpenCvSharp 命名冲突
两个库都定义了 Point、Size、Rectangle 等类型,使用时需加完整命名空间限定:
// 正确
OpenCvSharp.Point pt = new OpenCvSharp.Point(10, 20);
System.Drawing.Point pt2 = new System.Drawing.Point(10, 20);
// 错误(编译报错 CS0104:歧义引用)
Point pt = new Point(10, 20); // 不明确是哪一个
5.6 图片格式支持
支持的图片格式:.jpg、.jpeg、.png、.bmp、.tiff、.tif
六、文件夹结构
FIRC/
├── FIRC.sln # Visual Studio 解决方案文件
├── FIRC.csproj # 项目文件(目标框架、引用、编译配置)
├── packages.config # NuGet 包版本清单
├── App.config # 应用配置文件
│
├── Program.cs # 程序入口:预加载 openvino_c.dll,启动窗体
├── Form1.cs # 主窗体逻辑:模型加载、图片上传、OCR 推理、结果可视化
├── Form1.Designer.cs # 窗体 UI 设计器代码(控件布局与样式定义)
├── Form1.resx # 窗体资源文件
│
├── Properties/ # 项目属性
│ ├── AssemblyInfo.cs # 程序集元数据(版本号、公司名称等)
│ ├── Resources.resx # 嵌入资源定义
│ ├── Resources.Designer.cs # 资源访问代码(自动生成)
│ ├── Settings.settings # 应用设置定义
│ └── Settings.Designer.cs # 设置访问代码(自动生成)
│
├── packages/ # NuGet 包本地缓存
│ ├── Sdcb.OpenVINO.0.7.1/ # OpenVINO C# 封装
│ ├── Sdcb.OpenVINO.PaddleOCR.0.8.0/ # PaddleOCR 推理封装
│ ├── Sdcb.OpenVINO.PaddleOCR.Models.Online.0.8.0/ # 在线模型下载
│ ├── Sdcb.OpenVINO.runtime.win-x64.2026.2.0/ # OpenVINO Windows x64 原生运行时
│ ├── OpenCvSharp4.4.11.0.20250507/ # OpenCvSharp 图像处理库
│ ├── OpenCvSharp4.Extensions.4.11.0.20250507/ # Mat ↔ Bitmap 转换扩展
│ └── ... # 其他系统依赖包
│
└── bin/
└── x64/
└── Debug/ # x64 Debug 编译输出目录
├── FIRC.exe # 主程序可执行文件
├── FIRC.exe.config # 运行时配置
├── FIRC.pdb # 调试符号文件
├── Sdcb.OpenVINO.dll # OpenVINO 托管程序集
├── Sdcb.OpenVINO.PaddleOCR.dll # PaddleOCR 推理托管程序集
├── OpenCvSharp.dll # OpenCvSharp 托管程序集
├── openvino_c.dll # OpenVINO C 原生接口 DLL
├── openvino.dll # OpenVINO 核心原生 DLL
├── tbb12.dll # Intel TBB 多线程库
└── dll/
├── win-x64/ # OpenVINO 原生 DLL(运行时复制)
│ ├── openvino.dll
│ ├── openvino_c.dll
│ ├── openvino_intel_cpu_plugin.dll
│ ├── openvino_intel_gpu_plugin.dll
│ ├── tbb12.dll
│ └── ...
├── x64/ # OpenCvSharp x64 原生 DLL
│ └── OpenCvSharpExtern.dll
└── x86/ # OpenCvSharp x86 原生 DLL(本项目未使用)
└── OpenCvSharpExtern.dll
源码地址:https://download.csdn.net/download/FL1623863129/90010787
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)