【算法介绍】

ddddocr是一个强大的Python OCR(光学字符识别)库,特别适用于验证码识别。它利用深度学习技术,如卷积神经网络(CNN)和循环神经网络(RNN),对图像中的文字进行高效准确的识别。虽然ddddocr本身是一个Python库,但你可以通过一些方法将其功能集成到Winform应用程序中,以进行验证码识别、文字识别和文字检测。

要在Winform中部署ddddocr的ONNX模型进行验证码识别等任务,你可以考虑以下步骤:

  1. 环境准备:确保你的Winform应用程序可以调用Python脚本或库。这通常涉及安装Python解释器和相关的Python库。
  2. 安装ddddocr:在你的Python环境中安装ddddocr库。
  3. 模型准备:如果ddddocr使用了ONNX模型,确保该模型已正确下载并可在Python环境中加载。
  4. 集成Python和Winform:你可以通过C#的Python.NET库或其他类似工具来调用Python脚本或函数,从而在Winform中集成ddddocr的功能。
  5. 编写代码:在Winform应用程序中编写代码,调用ddddocr的API进行验证码识别、文字识别或文字检测。
  6. 测试和调试:确保集成的功能正常工作,并根据需要进行调整和优化。

请注意,由于ddddocr是一个Python库,直接在Winform中部署其ONNX模型可能需要一些额外的工作。因此,建议详细阅读ddddocr的文档,并考虑使用Python和C#之间的桥梁工具来实现集成。

【源码地址】

github.com/sml2h3/ddddocr

【界面设计】

[C#]使用winform部署ddddocr的onnx模型进行验证码识别文字识别文字检测_Click

【项目编号】mbd.pub/o/bread/mbd-Z5yZm59r

【效果展示】

文本识别结果可以在控制台查看

[C#]使用winform部署ddddocr的onnx模型进行验证码识别文字识别文字检测_System_02

滑块识别目前效果不佳,暂时放弃研究,因为我们主要用于文字检测识别比较多。

【调用代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;
 
namespace FIRC
{
    public partial class Form1 : Form
    {
        string videoPath = null;
       
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Mat ocr = new Mat(Application.StartupPath + "\\images\\ocr.jpg", ImreadModes.AnyColor);
            DDDDOCR ddddOcrOcrOld = new DDDDOCR(Application.StartupPath + "\\weights\\common_old.onnx", DdddOcrMode.ClassifyOld);
            var OcrOldResult = ddddOcrOcrOld.Classify(ocr.ToBytes());
            Console.WriteLine("旧版本文本识别结果:" + OcrOldResult);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Mat ocr = new Mat(Application.StartupPath + "\\images\\ocr.jpg", ImreadModes.AnyColor);
            DDDDOCR ddddOcrOcrNew = new DDDDOCR(Application.StartupPath + "\\weights\\common.onnx", DdddOcrMode.ClassifyBeta);
            var OcrNewResult = ddddOcrOcrNew.Classify(ocr.ToBytes());
            Console.WriteLine("新版本文本识别结果:" + OcrNewResult);
 
 
 
 
 
           
 
 
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
          
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
         
            Mat det = new Mat(Application.StartupPath + "\\images\\det.png", ImreadModes.AnyColor);
            DDDDOCR ddddOcrDet = new DDDDOCR(Application.StartupPath + "\\weights\\common_det.onnx", DdddOcrMode.Detect);
            var Detresult = ddddOcrDet.Detect(det.ToBytes());
            foreach (var item in Detresult)
            {
                det.Rectangle(item, new Scalar(0, 0, 255), 2);
            }
 
            Console.WriteLine("目标识别到的坐标为:" + JsonSerializer.Serialize(Detresult));
            pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(det);
 
 
 
 
          
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            //效果不佳,暂时不开发
            Mat tg = new Mat(Application.StartupPath + "\\images\\tg1.png", ImreadModes.AnyColor);
            Mat bg = new Mat(Application.StartupPath + "\\images\\bg1.png", ImreadModes.AnyColor);
            var (target_y, rect) = DDDDOCR.SlideMatch(tg, bg, 44, true);
            Console.WriteLine("SlideMatch滑块的Y坐标为:" + target_y + "\r\nSlideMatch滑块缺口方框为:" + JsonSerializer.Serialize<Rect>(rect));
            bg.Rectangle(rect, new Scalar(0, 255, 255), 2);
            pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(bg);
 
        }
    }
}

【测试环境】

vs2019

netframework4.7.2

opencvsharp==4.8.0

onnxruntime==1.16.3

【运行步骤】

下载源码后使用vs2019打开,打开前确保vs安装的没问题并且C#模块安装好了。选择x64 debug即可直接运行看效果。如果报错可能DLL引用问题,可以参考我的其他博文。