1. 程式人生 > >百度文字識別+自動投票

百度文字識別+自動投票

下了一個自動投票軟體,如果有驗證碼則不起作用,所有寫了個程式自動抓取驗證碼+識別驗證碼(只支援中文)。

我試了下英文誤識別概率很大。

抓取驗證碼部分:

   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);
        }