
使用纯opencv实现PaddleOCR v5/v6 OCR识别项目简介这是一个基于 C# Windows Forms 的桌面端 OCR光学字符识别应用程序通过集成百度 PaddleOCR v5/v6 系列模型利用 OpenCV DNN 推理引擎在本地实现高效的文字检测与识别。用户可通过图形界面选择图片一键完成文字识别并在界面上直观查看识别结果与文字区域标注框。算法原理整体 OCR 流水线本项目采用经典的三阶段 OCR 流水线架构输入图片 → 文字检测Det → 方向分类Cls可选 → 文字识别Rec → 输出结果1. 文字检测Detection使用 DBDifferentiable Binarization算法进行文字区域检测主要步骤如下将输入图片按比例缩放使最长边不超过limit_side_len默认 960 像素保持原始长宽比通过轻量级 CNN 骨干网络提取多尺度特征使用 FPNFeature Pyramid Network融合多尺度特征图输出概率图Probability Map对概率图以阈值det_db_thresh默认 0.3进行二值化处理对二值图进行轮廓检测使用 Vatti 裁剪算法按det_db_unclip_ratio默认 1.6进行膨胀扩张得到完整的文字区域多边形框过滤置信度低于det_db_box_thresh默认 0.6的检测框得到最终检测结果2. 方向分类Classification可选仅在勾选cls复选框后启用默认关闭使用轻量级分类模型PP-OCRv5_mobile_cls_onnx.onnx判断文字区域是否存在 180° 倒置分类阈值cls_thresh 0.9高于该阈值时执行翻转校正批量处理数量由cls_batch_num默认 8控制3. 文字识别Recognition使用 CRNN CTC 架构进行端到端文字识别主要步骤如下将每个检测到的文字区域裁剪并缩放到统一尺寸高度rec_img_h 48宽度rec_img_w 320通过 CNN 骨干网络提取视觉特征序列使用 BiLSTM双向长短期记忆网络编码序列上下文信息通过 CTCConnectionist Temporal Classification解码输出最终识别文字支持批量推理批次大小由rec_batch_num默认 4控制提升多行文字的处理效率多 Predictor 并行推理数量由rec_predictor_num默认 4控制推理引擎项目通过C DLL封装库C#调用OpenCV DNN 模块作为推理后端直接加载 ONNX 格式模型具有以下特点无需额外安装 OpenVINO、CUDA 等推理框架部署简单原生支持 CPU 推理兼容性强通过 C# P/Invoke 调用 C 原生接口性能接近原生水平图像数据以 BGR 24位格式直接传入避免不必要的格式转换开销支持的模型模型选项检测模型识别模型方向分类字典文件说明v5 mobilePP-OCRv5_mobile_det_onnx.onnxPP-OCRv5_mobile_rec_onnx.onnx支持可选ppocrv5_dict.txt轻量级支持方向分类v5 serverPP-OCRv5_server_det_infer.onnxPP-OCRv5_server_rec_infer.onnx不支持ppocrv5_dict.txt高精度大模型v6 tinyPP-OCRv6_tiny_det.onnxPP-OCRv6_tiny_rec.onnx不支持PP-OCRv6_tiny_rec_dict.txt体积最小速度最快默认v6 smallPP-OCRv6_small_det.onnxPP-OCRv6_small_rec.onnx不支持PP-OCRv6_small_rec_dict.txt精度与速度均衡环境要求项目要求操作系统Windows 10 / 1164位开发工具Visual Studio 2019 及以上版本.NET 版本.NET Framework 4.8平台架构x64强制要求C# 语法版本C# 7.3核心依赖库文件说明opencv_world500.dllOpenCV 5.0 运行时库包含 DNN 推理模块Newtonsoft.Json.dll13.0.1JSON 序列化/反序列化库安装步骤1. 下载项目源码gitclone firc-projectscdFIRC2. 安装 Visual Studio确保已安装 Visual Studio 2019 或更高版本并勾选.NET 桌面开发工作负载。3. 打开解决方案双击FIRC.sln文件在 Visual Studio 中打开项目。4. 配置构建平台在 Visual Studio 顶部工具栏中进行以下设置将解决方案平台切换为x64必须不支持 x86将解决方案配置切换为Debug或Release5. 确认运行时依赖文件确保编译输出目录bin\x64\Debug\中包含以下关键文件bin\x64\Debug\ ├── opencv_world500.dll # OpenCV 运行时 ├── Newtonsoft.Json.dll # JSON 库 ├── FIRC.exe # 主程序 └── inference/ # 模型文件夹必须完整如依赖文件缺失请从发布包或原始编译目录中复制补充。运行步骤1. 编译启动在 Visual Studio 中按F5编译运行或直接运行已编译的FIRC.exe。2. 选择 OCR 模型在主界面左上角“ocr”分组框中选择模型v5 mobilePPOCRv5 轻量移动端模型支持方向分类v5 serverPPOCRv5 高精度服务器模型v6 smallPPOCRv6 平衡型模型v6 tinyPPOCRv6 最小体积模型默认选中3. 调整推理参数可选主界面提供以下可调参数分组det检测参数det_db_thresh检测二值化阈值默认 0.3det_db_box_thresh检测框置信度阈值默认 0.6det_db_unclip_ratio文字框膨胀比例默认 1.6rec识别参数rec_batch_num识别批次大小默认 4rec_predictor_numPredictor 并行数量默认 4cls分类参数仅 v5 mobile 生效cls是否启用方向分类默认关闭cls_batch_num分类批次大小默认 84. 加载模型点击右上角“初始化”按钮等待日志区域显示模型加载成功信息。首次加载大模型可能需要数秒Server 模型加载时间更长。5. 选择并识别图片点击“选择图片”按钮从文件对话框中选择待识别图片支持 BMP、JPG/JPEG、PNG、TIFF/TIF 格式选择图片后会自动触发识别也可手动点击“识别”按钮重新执行识别完成后左侧图片区域显示带有红色文字检测多边形框的标注图右侧文本区域显示识别文字结果及耗时毫秒勾选“显示全部信息”可查看完整的 JSON 格式结果含坐标、置信度等详细信息6. 释放模型资源再次点击“初始化”按钮可先释放再重新加载模型关闭窗口时程序会自动释放模型资源注意事项强制 x64 平台opencv_world500.dll为 64 位库项目必须以 x64 平台编译运行不支持 x86。模型文件完整性inference/目录下的 ONNX 模型文件和字典文件必须完整缺失任一将导致对应模型初始化失败。工作目录程序从FIRC.exe所在目录查找inference/文件夹请确保从正确的编译输出目录运行或将模型文件复制到可执行文件同级目录。内存占用v5 server 模型文件较大检测模型约 84MB识别模型约 80MB加载后内存占用较高建议在内存充足的环境下使用。图片输入格式程序内部将图片转换为 24 位 BGR 格式OpenCV 标准格式送入推理引擎建议使用清晰、无过度压缩的图片以获得最佳识别效果。参数调节建议det_db_thresh降低可检出更多文字区域但可能增加误检det_db_box_thresh降低可保留更多低置信度检测框det_db_unclip_ratio增大可扩大文字框范围适合模糊文字调整参数后需重新点击“初始化”使参数生效方向分类限制cls方向分类功能仅对 v5 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 # .NET 应用配置文件 │ ├── FIRC.pdb # 调试符号文件 │ ├── opencv_world500.dll # OpenCV 5.0 运行时库 │ ├── Newtonsoft.Json.dll # JSON 处理库 │ ├── 1.jpg # 示例图片 │ └── 3.jpg # 默认加载的示例图片 ├── imgs/ # 示例测试图片目录 │ ├── 00006737.jpg # 测试样本图片 │ ├── 00009282.jpg │ ├── 00015504.jpg │ ├── 00018069.jpg │ └── ... # 更多测试样本 ├── App.config # .NET 应用程序配置文件 ├── FIRC.csproj # C# 项目文件.NET Framework 4.8x64 ├── FIRC.sln # Visual Studio 解决方案文件 ├── Form1.cs # 主窗体业务逻辑模型加载、推理、结果显示 ├── Form1.Designer.cs # 主窗体 UI 界面设计代码 ├── Form1.resx # 主窗体资源文件 ├── OCRResult.cs # OCR 识别结果数据模型text、score、坐标点 └── Program.cs # 程序入口点