百度文字識別+自動投票
阿新 • • 發佈:2018-12-21
下了一個自動投票軟體,如果有驗證碼則不起作用,所有寫了個程式自動抓取驗證碼+識別驗證碼(只支援中文)。
我試了下英文誤識別概率很大。
抓取驗證碼部分:
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); }