冲顶大会等竞答游戏的辅助工具,介绍请移步开源周报2018年第3期

关于游戏

冲顶大会:游戏过程中由一名主持人出题,在线注册观众答题,每期 12 道题,题目范围将涵盖科学、文化、综艺、艺术等各个领域,有 10 秒作答时间。每天有两次游戏机会,通常为中午 1 点和晚上 9 点。全答对的人能分得奖金。

关于ADB

全名为 Android Debug Bridge ,直译过来就是安卓调试桥,其实它的作用也就是搭起你的 android设备与 pc间的桥梁,让你能用你的 pc操作管理你的 android设备或者模拟器。在这个项目中主要用来获取截屏。

注:IOS使用的是 WDA ,详情自行谷歌。

关于谷歌 Tesseract

开源 OCR 引擎,使用 c 和 c++ 编写而成,主要用于识别图像中的文本,目前已支持世界上大部分使用较广的语言。当然,你也可以自己进行训练。

OCR:Optical Character Recognition,光学字符识别,顾名思义,不加赘述。

Wiki: https://en.wikipedia.org/wiki/Tesseract_(software)

而该项目使用的是 Python-tesseract:封装过的Tesseract

https://github.com/madmaze/pytesseract

关于百度 OCR

功能相仿,但使用它需要到百度平台上创建应用申请 API Key 和 Secret Key ,所以还是建议使用 Tesseract (=w=)。

工作原理

使用 ADB 截屏

代码链接:https://github.com/Skyexu/TopSup/blob/master/common/screenshot.py

使用 OCR 识别文本

代码链接:https://github.com/Skyexu/TopSup/blob/master/common/ocr.py

除了 Tesseract 的部分以外,还使用了灰度转化的方法增加了识别准确率。

获取结果,官方文档对三种方式的介绍:

  1. 直接打开浏览器搜索问题
  2. 题目+每个选项都通过搜索引擎搜索,从网页代码中提取搜索结果计数
  3. 只用题目进行搜索,统计结果页面代码中包含选项的词频

代码链接:https://github.com/Skyexu/TopSup/blob/master/common/methods.py

然后,因为没法使用(某些特殊原因),所以没有截图,按照官方的说法,可能会识别错误导致你与胜利失之交臂,也有可能无法识别,总之,在有些时候,它可能还不如你使用语音搜索来的快。