前两天在博客园看到 .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,你和我都会多一次复活机会。