基于C#winform使用openvino部署PP-OCRv5的onnx模型paddleocrv5模型部署

作品简介

# PP-OCRv5 OpenVINO部署教程


本教程将指导您如何使用OpenVINO在C# WinForm项目中部署PP-OCRv5模型。


## 环境要求


- Windows 10/11

- Visual Studio 2019或更高版本

- .NET Framework 4.7.2或更高版本

- OpenVINO 2025.0.0.1

- OpenCVSharp 4.11.0


## 项目依赖


项目使用以下NuGet包:

- OpenCvSharp4 (4.11.0.20250507)

- OpenCvSharp4.Extensions (4.11.0.20250507)

- OpenCvSharp4.runtime.win (4.11.0.20250507)

- OpenVINO.CSharp.API (2025.0.0.1)

- OpenVINO.CSharp.API.Extensions (1.0.2)

- OpenVINO.CSharp.API.Extensions.PaddleOCR (1.0.3)

- OpenVINO.runtime.win (2025.0.0.1)


## 模型文件准备


1. 下载PP-OCRv5模型文件:

  - 检测模型:PP-OCRv5_mobile_det_onnx.onnx

  - 分类模型:PP-OCRv5_mobile_cls_onnx.onnx

  - 识别模型:PP-OCRv5_mobile_rec_onnx.onnx

  - 字典文件:ppocrv5_dict.txt


2. 在项目根目录创建`weights`文件夹,将上述文件放入其中。


## 项目结构说明


```

项目根目录/

├── weights/

│  ├── PP-OCRv5_mobile_det_onnx.onnx

│  ├── PP-OCRv5_mobile_cls_onnx.onnx

│  ├── PP-OCRv5_mobile_rec_onnx.onnx

│  └── ppocrv5_dict.txt

├── Form1.cs

├── Form1.Designer.cs

└── Program.cs

```


## 代码实现说明


### 1. 模型初始化


在Form1.cs中,我们定义了模型路径和初始化OCR预测器:


```csharp

private string det_model = Application.StartupPath + "\\weights\\PP-OCRv5_mobile_det_onnx.onnx";

private string cls_model = Application.StartupPath + "\\weights\\PP-OCRv5_mobile_cls_onnx.onnx";

private string rec_model = Application.StartupPath + "\\weights\\PP-OCRv5_mobile_rec_onnx.onnx";

private string key_path = Application.StartupPath + "\\weights\\ppocrv5_dict.txt";

private OCRPredictor ocr = null;

```


### 2. 模型加载


在Form1_Load事件中初始化模型:


```csharp

RuntimeOption.RecOption.label_path = key_path;

ocr = new OCRPredictor(det_model, cls_model, rec_model);

```


### 3. 图像处理流程


1. 图像加载:

  - 使用OpenFileDialog选择图片

  - 使用OpenCV读取图像

  - 在PictureBox中显示原图


2. OCR识别:

  - 调用ocr.ocr()方法进行识别

  - 参数说明:

   - 第一个参数:输入图像

   - 第二个参数:是否进行方向分类

   - 第三个参数:是否进行检测

   - 第四个参数:是否进行识别


3. 结果处理:

  - 获取识别文本和置信度

  - 在TextBox中显示识别结果

  - 使用PaddleOcrUtility.visualize_bboxes()可视化检测框


## 使用说明


1. 运行程序后,点击"选择图片"按钮选择要识别的图片

2. 点击"开始识别"按钮进行OCR识别

3. 识别结果将显示在文本框中,并在右侧图片框中显示带有检测框的可视化结果

## 注意事项

1. 确保weights文件夹中包含所有必需的模型文件

2. 模型文件路径使用相对路径,确保程序运行时能找到模型文件

3. 图片格式支持:jpg、png、jpeg、bmp

4. 识别过程在后台线程中进行,不会阻塞UI

5. 识别结果包含文本内容和置信度信息


## 常见问题解决


1. 如果出现"模型文件不存在"错误:

  - 检查weights文件夹是否在正确位置

  - 确认所有模型文件名是否正确


2. 如果出现"无法读取图片文件"错误:

  - 检查图片格式是否支持

  - 确认图片文件是否完整


3. 如果识别结果不准确:

  - 检查图片质量是否清晰

  - 确认图片中的文字是否清晰可见

  - 可以尝试调整图片亮度和对比度


## 性能优化建议


1. 对于大量图片处理:

  - 考虑使用批处理模式

  - 可以预先加载模型到内存中


2. 内存管理:

  - 及时释放不需要的Mat对象

  - 使用using语句管理资源


3. 图像预处理:

  - 可以添加图像预处理步骤提高识别准确率

  - 考虑添加图像缩放功能处理大图片


创作时间: