基于 PaddleOCR v5/v6 的winform OCR 识别系统演示程序

项目简介

这是一个基于 C# Windows Forms 的桌面端 OCR(光学字符识别)应用程序,通过集成百度 PaddleOCR v5/v6 系列的onnx模型,利用 OpenVINO 推理引擎在本地实现高效的文字检测与识别。用户可通过图形界面选择图片,一键完成文字识别,并在界面上直观查看识别结果与标注框。


在这里插入图片描述

算法原理

整体 OCR 流水线

本项目采用经典的 三阶段 OCR 流水线 架构:

输入图片 → 文字检测(Det) → 方向分类(Cls,可选) → 文字识别(Rec) → 输出结果
1. 文字检测(Detection)

使用 DB(Differentiable Binarization) 算法进行文字区域检测:

  1. 将输入图片缩放到指定尺寸(limit_side_len = 960),保持长宽比
  2. 通过轻量级 CNN 骨干网络(如 MobileNetV3 / ResNet)提取多尺度特征
  3. 使用 FPN(Feature Pyramid Network)融合多尺度特征图
  4. 输出概率图(Probability Map),通过阈值化(det_db_thresh = 0.3)生成二值图
  5. 对二值图进行轮廓检测,使用 Vatti 裁剪算法进行膨胀(det_db_unclip_ratio = 1.6)得到最终文字区域多边形框
  6. 过滤置信度低于 det_db_box_thresh = 0.6 的框
2. 方向分类(Classification,可选)
  • 仅 PPOCRv5 Mobile 模型启用此阶段
  • 使用轻量级分类模型判断文字区域是否需要旋转 180°
  • 分类阈值 cls_thresh = 0.9
3. 文字识别(Recognition)

使用 CRNN + CTC / Attention 架构进行文字识别:

  1. 将检测到的文字区域裁剪并缩放到统一高度(rec_img_h = 48
  2. 通过 CNN 提取视觉特征序列
  3. 使用 RNN(BiLSTM)编码序列上下文
  4. 通过 CTC(Connectionist Temporal Classification)解码输出文字
  5. 支持批量推理(rec_batch_num = 4)提升效率

推理引擎

项目通过C++封装库C#调用 Intel OpenVINO 推理引擎,支持:

  • ONNX 模型格式直接加载
  • CPU 推理(默认)
  • 多线程推理(predictor_num = 4

支持的模型

模型名称 检测模型 识别模型 方向分类 说明
PPOCRv5 Mobile PP-OCRv5_mobile_det PP-OCRv5_mobile_rec 支持 轻量级,适合移动端/嵌入式
PPOCRv5 Server PP-OCRv5_server_det PP-OCRv5_server_rec 不支持 高精度,适合服务器部署
PPOCRv6 Tiny PP-OCRv6_tiny_det PP-OCRv6_tiny_rec 不支持 最小体积,速度最快
PPOCRv6 Small PP-OCRv6_small_det PP-OCRv6_small_rec 不支持 平衡精度与速度(推荐)
PPOCRv6 Medium PP-OCRv6_medium_det PP-OCRv6_medium_rec 不支持 较高精度

环境要求

项目 要求
操作系统 Windows 10/11 x64
开发工具 Visual Studio 2019 及以上
.NET 版本 .NET Framework 4.8
平台架构 x64(必须)
C# 语法版本 C# 7.3
推理引擎 Intel OpenVINO(已内置 DLL)

依赖库

  • opencv_world500.dll:OpenCV 5.0 运行时库(图像处理)
  • Newtonsoft.Json 13.0.1:JSON 序列化/反序列化
  • Intel OpenVINO 运行时 DLL:openvino_c.dll、openvino_intel_cpu_plugin.dll 等

安装步骤

1. 克隆/下载项目

git clone firc-projects from github
cd FIRC

2. 安装 Visual Studio

确保已安装 Visual Studio 2019 或更高版本,并勾选以下工作负载:

  • .NET 桌面开发

3. 打开项目

双击 FIRC.sln 文件,使用 Visual Studio 打开解决方案。

4. 配置构建平台

在 Visual Studio 顶部工具栏中:

  • 将解决方案平台切换为 x64
  • 将解决方案配置切换为 DebugRelease(需要将Debug文件全部复制到Release文件夹)

5. 确认依赖文件

确保 bin\x64\Debug\ 目录下包含以下关键文件:

  • opencv_world500.dll
  • openvino_c.dll 及其他 OpenVINO 运行时 DLL
  • Newtonsoft.Json.dll
  • inference/ 文件夹(包含所有 ONNX 模型和字典文件)

运行步骤

1. 编译运行

在 Visual Studio 中按 F5 或点击 启动 按钮编译运行项目。

2. 选择模型

在主界面的 “模型选择” 分组框中选择要使用的 OCR 模型:

  • ppocrv5 mobile:轻量级移动端模型,支持方向分类
  • ppocrv5 server:高精度服务器模型
  • ppocrv6 tiny:最小体积 v6 模型
  • ppocrv6 small:平衡型 v6 模型(默认选中)
  • ppocrv6 medium:中等精度 v6 模型

3. 加载模型

点击 “加载模型” 按钮,等待状态栏显示 模型加载成功 信息。首次加载可能需要数秒。

4. 上传图片

点击 “上传图片” 按钮,从文件对话框中选择待识别的图片文件。支持的格式:

  • BMP、JPG/JPEG、PNG、TIFF/TIF

5. 执行识别

  • 选择图片后会自动触发识别(也可手动点击 “开始推理” 按钮)
  • 识别完成后,左侧图片区域会显示带有红色文字检测框的标注图
  • 右侧文本区域显示识别结果及耗时

6. 释放模型

  • 点击 “加载模型” 按钮可重新初始化(先释放再加载)
  • 关闭窗口时会自动释放模型资源

注意事项

  1. 必须使用 x64 平台:所有依赖 DLL(OpenVINO、OpenCV)均为 64 位,不支持 x86 平台构建。

  2. 模型文件完整性bin\x64\Debug\inference\ 目录下的 ONNX 模型文件和字典文件必须完整,缺失任一将导致模型加载失败。

  3. 工作目录:程序会从可执行文件所在目录查找 inference/ 文件夹,因此请确保从正确的输出目录运行。

  4. 内存使用:Server 模型和 Medium 模型体积较大,内存占用相应更高。如内存不足,建议使用 Tiny 或 Small 模型。

  5. 图片格式:程序内部将图片转换为 24 位 BGR 格式送入推理引擎,支持常见图片格式,建议使用清晰、无过度压缩的图片以获得最佳识别效果。

  6. CPU 推理性能:默认使用 CPU 推理,对于大尺寸图片,推理时间可能较长。可通过调整 limit_side_lenrec_batch_numpredictor_num 等参数优化性能。

  7. 模型切换:切换模型后需要重新点击 “加载模型” 按钮使新模型生效。

  8. PPOCRv5 Mobile 方向分类:仅 PPOCRv5 Mobile 模型启用了方向分类(Cls)功能,其他模型不启用。如文档存在倒置/旋转文字,建议使用 PPOCRv5 Mobile 模型。


文件夹结构

FIRC/
├── .vs/                          # Visual Studio 项目配置(自动生成)
├── Properties/                   # 项目属性文件
│   ├── AssemblyInfo.cs           # 程序集信息(版本号、版权等)
│   ├── Resources.Designer.cs     # 资源文件设计器代码
│   ├── Resources.resx            # 资源文件
│   ├── Settings.Designer.cs      # 设置文件设计器代码
│   └── Settings.settings         # 应用程序设置
├── bin/
│   └── x64/
│       └── Debug/                # 编译输出目录(x64 Debug)
│           ├── inference/        # OCR 模型文件目录
│           ├── FIRC.exe          # 主程序可执行文件
│           ├── FIRC.exe.config   # 程序配置文件
│           ├── opencv_world500.dll         # OpenCV 运行时库
│           ├── openvino_c.dll             # OpenVINO C API 库
│           ├── openvino_intel_cpu_plugin.dll  # OpenVINO CPU 推理插件
│           ├── openvino_intel_gpu_plugin.dll  # OpenVINO GPU 推理插件
│           ├── openvino_intel_npu_plugin.dll  # OpenVINO NPU 推理插件
│           ├── Newtonsoft.Json.dll        # JSON 处理库
│           ├── tbb12.dll                  # Intel TBB 多线程库
│           └── ... (其他 OpenVINO/TBB 运行时 DLL)
├── imgs/                         # 示例测试图片目录
│   ├── 00006737.jpg              # 示例图片
│   ├── 00009282.jpg
│   ├── 00015504.jpg
│   └── ... (更多示例图片)
├── App.config                    # .NET 应用程序配置文件
├── FIRC.csproj                   # C# 项目文件
├── FIRC.sln                      # Visual Studio 解决方案文件
├── Form1.cs                      # 主窗体业务逻辑
├── Form1.Designer.cs             # 主窗体界面设计代码
├── Form1.resx                    # 主窗体资源文件
├── OCRResult.cs                  # OCR 识别结果数据模型
└── Program.cs                    # 程序入口点

许可证

本项目仅供学习参考使用。

Logo

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

更多推荐