写了个冲顶大会类答题游戏辅助,有兴趣的朋友可以试试

2018-01-10 01:54:36 +08:00
 SkyeX

这两天冲顶大会之类的直播答题 APP 突然火了起来,不得不佩服互联网公司的想象力,那么程序员怎么用不同的方式玩转答题游戏呢。之前微信的跳一跳小游戏刷报朋友圈,已经有很多朋友写出了自动化的脚本辅助,一看到答题游戏就马上想到可以用类似的方式来写一个简单的脚本。我发现已经有朋友做了个调用百度 api 的,自己就再写个直接用识别库的吧,代码思路简单,可以用在各类答题游戏中。使用文字识别加搜索,只能辅助增加准确率,保证不了全对。

目前版本增加了截图传输效率,修改了识别参数,对图像进行灰度转化,去干扰增加了识别准确率。结果判断使用了三种方式,对不同问题可以参考不同结果。

具体代码和环境及使用请戳https://github.com/Skyexu/TopSup

具体做法

  1. 使用 ADB 获取手机截屏
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png .
  1. OCR 识别题目与选项文字 分别通过代码截取题目区域与选项区域,再进行文字识别

文字识别两个方法:

  1. 搜索判断

结果判断方式

  1. 直接打开浏览器搜索问题

  2. 题目+每个选项都通过浏览器进行搜索,从网页代码中提取搜索结果计数

  3. 只用题目搜索结果页面代码中包含选项的词频计数法

以下为两个示例结果,可以看出下面两道题,两个方法有不同的结果,可以更具问题类型进行不同的决策。

参考了 I Hacked HQ Trivia But Here ’ s How They Can Stop Me

写完简单版本想一想,怕是还没有 Hi ,Siri来的方便,不过好在识别准确,查询快,后来又加了几个方法辅助决策。不玩了,写 paper 去了

11459 次点击
所在节点    分享创造
62 条回复
SkyeX
2018-01-10 11:11:08 +08:00
@cnwtex 差不多 3 秒内完成吧,也就辅助一下
SkyeX
2018-01-10 11:14:38 +08:00
@marlboros 不是很理解你的想法。这个原理也就是百度一下题目,我不会做百度一下没问题吧,也就是玩玩。说到题目价值,即使是答题真人秀很多也是背的题库吧。这些 APP 出现也就是为了刷流量,做题增长知识提升效果也没多大吧。。。。
ljbljb007
2018-01-10 11:42:14 +08:00
pip install PIL 这个安装不上啊
提示
Could not find a version that satisfies the requirement PIL (from versions: )
No matching distribution found for PIL
怎么搞?
ysanne
2018-01-10 11:47:59 +08:00
@LanAiFaZuo 公司电脑写的,并不能挂到 github 上。
ysanne
2018-01-10 11:48:51 +08:00
楼主你的代码耗时怎么样?我这边 adb 截图 1s,ocr1s,google 大概 2s。时间上还是有点紧。
yuanfnadi
2018-01-10 11:58:11 +08:00
@SkyeX 全部答对每个人 100.开 5 个模拟器。20 分钟 500.这个收益还不错了。
cdwyd
2018-01-10 12:11:17 +08:00
@ysanne
我这边 ocr 要 5 秒。。。
ljbljb007
2018-01-10 12:21:18 +08:00
好用了 谢谢楼主 不过方法 2 好用 方法 3 不好用 可以自己把方法 3 删掉吗?
SorryChen
2018-01-10 12:25:21 +08:00
@ljbljb007 pip install pillow
huijian222
2018-01-10 12:34:02 +08:00
@yuanfnadi #26 可是。。真的能全对吗。。
SkyeX
2018-01-10 12:37:25 +08:00
@ljbljb007 代码前面加一个#注释掉就可以了
SkyeX
2018-01-10 12:38:07 +08:00
@cdwyd 可能和电脑配置有关吧,可以尝试用百度 api 看看
jamev5
2018-01-10 12:50:42 +08:00
@SkyeX #31 命令行里正确识别了中文,可是在浏览器搜索的时候是乱码。
ysanne
2018-01-10 13:37:02 +08:00
@cdwyd 我用的 tess4j,自己编译的 mac lib。你有对 adb 截屏的图片再截取一次吗?
jason19659
2018-01-10 13:41:21 +08:00
@jamev5 #33 methods.py 里面改一下
from urllib.request import quote

然后
'https://baidu.com/s?wd=' + quote(question)
sangmong
2018-01-10 13:59:18 +08:00
马克思
moxiaonai
2018-01-10 15:18:43 +08:00
有点慢
cdwyd
2018-01-10 16:37:50 +08:00
@ysanne 再截取一次是什么意思

为了压缩时间,改成了语音播放建议的搜索答案,这样就不用在手机和和显示器之间来回切换了
NicholasYX
2018-01-10 16:40:05 +08:00
请问如何找坐标?我想用它来搜头脑王者的题试一下
qwjhb
2018-01-10 16:41:51 +08:00
@NicholasYX 截图用画图都可以把

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/421544

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX