前兩天在博客園看到 .NET開發一個微信跳一跳輔助程式, 原來可以通過C#連接手機操作。正好朋友圈有人分享“沖頂大會”。沖頂大會是一個線上答題APP。每次12道題,每道題有10秒鐘的答題時間,全對者瓜分1萬或10萬獎金。於是試著答了一次,大部分題目都不算難,即便不知道但通過關鍵詞搜索應該也很容易找到 ...
前兩天在博客園看到 .NET開發一個微信跳一跳輔助程式, 原來可以通過C#連接手機操作。正好朋友圈有人分享“沖頂大會”。沖頂大會是一個線上答題APP。每次12道題,每道題有10秒鐘的答題時間,全對者瓜分1萬或10萬獎金。於是試著答了一次,大部分題目都不算難,即便不知道但通過關鍵詞搜索應該也很容易找到答案的。但限制是只有10秒鐘答題時間,基本來不及輸入問題。於是試著寫了一個答題的輔助工具,基本思路是通過adb手機截圖,然後用百度圖像識別開發包識別問題,再自動搜索。
截圖
參考中國.NET研究協會在.NET開發一個微信跳一跳輔助程式的代碼。adb截圖命令如下:
adb shell /system/bin/screencap -p /sdcard/screenshot.png(保存到SDCard) adb pull /sdcard/screenshot.png d:/screenshot.png(保存到電腦)
附adb驅動下載地址:
http://adbdriver.com/downloads/
adb shell下載地址:
http://adbshell.com/downloads
圖像識別
註冊百度AI開發平臺。
在NuGet中搜索 Baidu.AI並安裝.代碼很簡單:
// 設置APPID/AK/SK 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); public void GeneralBasicDemo() { var image = File.ReadAllBytes("圖片文件路徑"); // 調用通用文字識別, 圖片參數為本地圖片,可能會拋出網路等異常,請使用try/catch捕獲 var result = client.GeneralBasic(image); Console.WriteLine(result); // 如果有可選參數 var options = new Dictionary<string, object>{ {"language_type", "CHN_ENG"}, {"detect_direction", "true"}, {"detect_language", "true"}, {"probability", "true"} }; // 帶參數調用通用文字識別, 圖片參數為本地圖片 result = client.GeneralBasic(image, options); Console.WriteLine(result); }
參考http://ai.baidu.com/docs#/OCR-Csharp-SDK/top
搜索
裡面的題目更多都中國“內事”,所以選擇用百度搜索。但百度搜索好像沒喲介面提供,所以使用直接打開網頁http://www.baidu.com/s?wd=關鍵字&cl=3的方式。
最好附上效果圖
和代碼:https://gitee.com/roytec/BaiduOCRDemo
註:本文僅限學習adb,Baidu OCR和交流之用。目前還有許多局限性,比如從截圖到識別再到搜索大概需要4,5秒的時間,還需要快速在網頁上辨別答案,剩下供選擇的時間幾乎很少。另外有些答案直接搜索是沒法搜到的,比如“下麵那些景點不在北京?”
如有同學想下載APP試玩的請加邀請碼580805,你和我都會多一次複活機會。