C#实现冲顶大会辅助工具(截图+图像识别+搜索)

前两天在博客园看到 .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的方式。

 

最好附上效果图

1

和代码:https://gitee.com/roytec/BaiduOCRDemo

注:本文仅限学习adb,Baidu OCR和交流之用。目前还有许多局限性,比如从截图到识别再到搜索大概需要4,5秒的时间,还需要快速在网页上辨别答案,剩下供选择的时间几乎很少。另外有些答案直接搜索是没法搜到的,比如“下面那些景点不在北京?”

posted @ 2018-01-15 15:49  维尼熊320  阅读(1102)  评论(0编辑  收藏  举报