版权声明:本文为博主原创文章,需要转载尽管转载。 https://blog.csdn.net/z5976749/article/details/84068895
下了一个自动投票软件,如果有验证码则不起作用,所有写了个程序自动抓取验证码+识别验证码(只支持中文)。
我试了下英文误识别概率很大。
抓取验证码部分:
private static Bitmap GetScreenCapture()
{
//图片大小
Rectangle tScreenRect = new Rectangle(0, 0, 680, 70);
Bitmap tSrcBmp = new Bitmap(680, 70); // 用于屏幕原始图片保存
Graphics gp = Graphics.FromImage(tSrcBmp);
//1200代表屏幕x 882代表屏幕y 从这个位置计算对象size的大小把内容保存
gp.CopyFromScreen(1200, 822, 0, 0, tScreenRect.Size);
gp.DrawImage(tSrcBmp, 0, 0, tScreenRect, GraphicsUnit.Pixel);
return tSrcBmp;
}
百度验证文字部分:
NuGet搜索Baidu.Api安装
代码中定义
var APP_ID = "你的 App ID";
var API_KEY = "你的 Api Key";
var SECRET_KEY = "你的 Secret Key";
var client = new Baidu.Aip.Ocr.Ocr(API_KEY, SECRET_KEY);
client.Timeout = 60000; // 修改超时时间
基础比对方法:
public void GeneralBasicDemo()
{
var image = File.ReadAllBytes(@"f:\\fur.jpg");
// 调用通用文字识别, 图片参数为本地图片,可能会抛出网络等异常,请使用try/catch捕获
var result = client.GeneralBasic(image);
Console.WriteLine(result);
// 如果有可选参数
var options = new Dictionary<string, object>{
{"language_type", "ENG"},
{"detect_direction", "true"},
{"detect_language", "true"},
{"probability", "true"}
};
// 带参数调用通用文字识别, 图片参数为本地图片
result = client.GeneralBasic(image, options);
Console.WriteLine(result);
}