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(旋转矩形),包含中心点、宽高和旋转角度。绘制时:

  1. 调用 Cv2.BoxPoints(rect) 计算旋转矩形的 4 个顶点坐标Point2f[]
  2. 使用 Cv2.Polylines 在图片上绘制绿色四边形轮廓
  3. 使用 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

  1. 下载并安装 Visual Studio 2019
  2. 工作负载勾选 “.NET 桌面开发”
  3. 确保安装 .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 编译项目

  1. 打开 FIRC.sln
  2. 在工具栏将平台切换为 x64(不要选择 AnyCPU)
  3. 配置选择 Debug
  4. 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 将导致 DllNotFoundExceptionTypeInitializationException

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 命名冲突

两个库都定义了 PointSizeRectangle 等类型,使用时需加完整命名空间限定:

// 正确
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

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐