调用博主最近登录时间
生活中的HYGGE
csharp调用OCR和DDDDOCR的DLL进行验证码识别

csharp调用OCR和DDDDOCR的DLL进行验证码识别

hygge
2022-11-09 / 0 评论 / 1,200 阅读 / 正在检测是否收录...

一、方式1:使用OCR.dll

参考了一下精易论坛的这个易语言版的例程:https://bbs.125.la/forum.php?mod=viewthread&tid=14273813

效果图:
ocr.gif

工具类代码:

public class OCR
    {
        [DllImport("ocr.dll", EntryPoint = "init")]
        public static extern int Init();

        [DllImport("ocr.dll", EntryPoint = "ocr")]
        public extern static string ocr(byte[] img, int imgLength);
    }
}

ocr.dll放在项目工程的bin\Debug目录下即可。

Winform程序中使用:

// 1.OCR初始化,全局初始化一次即可,建议放在Program.cs的Main方法中
OCR.Init();
// 2.请求验证码图片
byte[] tmp = "https://passport2.chaoxing.com/num/code"
    .WithHeader("User-Agent", Constant.USER_AGENT)
    .WithCookies(out cookies)
    .GetBytesAsync().Result;
// 3.调用DLL进行识别
code = OCR.ocr(tmp, tmp.Length);

分流下载链接:

二、方式2:使用DDDDOCR

之前写过一篇python调用这个库的文章:记录一次调用OCR验证码识别库的过程,识别率不是很高,最终没有采用

今天看到网络上有大神打成了DLL包:ddddocr 单dll版本,记录一下使用,算是多一种验证码的解决方案。

效果图:

ddddocr.gif

工具类代码:

public class OCR
    {
        [DllImport("ddocr_qs.dll", EntryPoint = "InitModel")]
        public static extern int Init(int threadnum);

        [DllImport("ddocr_qs.dll", EntryPoint = "Identify")]
        public extern static string ocr(byte[] img, int length);

        [DllImport("ddocr_qs.dll", EntryPoint = "FreeModel")]
        public extern static void FreeModel();
    }
}

ddocr_qs.dll放在项目工程的bin\Debug目录下即可。

Winform程序中使用:

// 1.OCR初始化,全局初始化一次即可,建议放在Program.cs的Main方法中
// 这里的参数是Thread Number
OCR.Init(1);
// 2.请求验证码图片
byte[] tmp = "https://passport2.chaoxing.com/num/code"
    .WithHeader("User-Agent", Constant.USER_AGENT)
    .WithCookies(out cookies)
    .GetBytesAsync().Result;
// 3.调用DLL进行识别
code = OCR.ocr(tmp, tmp.Length);

三、附:查看DLL中的可用函数

本小白第一次在csharp中调用DLL中的函数,刚拿到OCR.dll后不知道怎么写调用的代码

于是上网查了一下,有推荐使用DependencyDependencies这两个工具,都有下载使用,感觉上还是后者更强

打开GUI界面后直接将OCR.DLL拖入,可以看到函数名这样子

la9cyi8f.png

但是参数和类型是看不到的 = =,似乎只能问开发者中获取

引用

1.C#调用论坛发布过的一个OCR.dll崩溃(易语言调用没问题):https://bbs.125.la/forum.php?mod=viewthread&tid=14451756&highlight=ocr.dll

2.几百种网站的本地验证码识别源码(字母和数字通杀):https://bbs.125.la/forum.php?mod=viewthread&tid=14273813

3.ddddocr 单dll版本https://bbs.125.la/forum.php?mod=viewthread&tid=14732838

4.好工具推荐系列:VC++开发必备神器 -- Dependencies,查看依赖库DLL,支持win10,比depends更好用:https://blog.csdn.net/libaineu2004/article/details/89670726

5.Dependency Walker 2.2:http://www.dependencywalker.com/

6.Dependencies GITHUB : https://github.com/lucasg/Dependencies

1

评论 (0)

取消