教你巧玩 [冲顶大会] 答题类游戏

2018 年 1 月 13 日 CocoaChina Skye_kh

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



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

随手 Star ^ ^


灵感来自:


微信跳一跳辅助


程序员如何玩转《冲顶大会》?


具体做法


1.使用 ADB 获取手机截屏


adb shell screencap -p /sdcard/screenshot.png

adb pull /sdcard/screenshot.png .


2.OCR 识别题目与选项文字


分别通过代码截取题目区域与选项区域,再进行文字识别



文字识别两个方法:


  • 谷歌 Tesseract ,安装软件即可,接下来主要使用这个方法

  • 百度 OCR livc ,需要注册百度 API,每天调用次数有限


3.搜索判断


结果判断方式


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



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


3.只用题目进行搜索,统计结果页面代码中包含选项的词频


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




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


主要代码


验证思路的主要代码是实现截图,识别,调用浏览器搜索。其实很简单,具体可以参考我的 github 库中简单版本代码


def pull_screenshot():

    os.system('adb shell screencap -p /sdcard/screenshot.png')

    os.system('adb pull /sdcard/screenshot.png .')


pull_screenshot()

img = Image.open("./screenshot.png")


# 切割题目位置,左上角坐标和右下角坐标,自行测试分辨率

question = img.crop((50, 350, 1000, 560)) # 坚果 pro1

choices = img.crop((75, 535, 990, 1150))

#region = img.crop((75, 315, 1167, 789)) # iPhone 7P


# tesseract 路径

pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract'

# 语言包目录

tessdata_dir_config = '--tessdata-dir "C:\\Program Files (x86)\\Tesseract-OCR\\tessdata"'


# lang 指定中文简体

text = pytesseract.image_to_string(question, lang='chi_sim', config=tessdata_dir_config)

text = text.replace("\n", "")[2:]


print(text)

webbrowser.open('https://baidu.com/s?wd='+text)


总结


写完简单版本想一想,怕是还没有 Hi ,Siri来的方便,不过好在识别准确,查询快,后来又加了几个方法辅助决策。文字识别加搜索,在这类游戏中并不能完全做对,想要实现完全对,可能还是得抓包? 或者存储题库,不过这就太费时间了。有了 ADB 截图,怕是各种小辅助都可以玩了,大家可以发挥想象力。python 写小脚本真的很方便。接下来可以尝试文字识别后 nlp 处理一下关系,然后搜索不同选择结果,增加准确率等等。不玩了不玩了,得写 paper 去了。


登录查看更多
0

相关内容

利用计算机自动识别字符的技术,是模式识别应用的一个重要领域。人们在生产和生活中,要处理大量的文字、报表和文本。为了减轻人们的劳动,提高处理效率,50年代开始探讨一般文字识别方法,并研制出光学字符识别器。60年代出现了采用磁性墨水和特殊字体的实用机器。60年代后期,出现了多种字体和手写体文字识别机,其识别精度和机器性能都基本上能满足要求。如用于信函分拣的手写体数字识别机和印刷体英文数字识别机。70年代主要研究文字识别的基本理论和研制高性能的文字识别机,并着重于汉字识别的研究。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
Gartner:2020年十大战略性技术趋势, 47页pdf
专知会员服务
74+阅读 · 2020年3月10日
【阿里巴巴】 AI编译器,AI Compiler @ Alibaba,21页ppt
专知会员服务
43+阅读 · 2019年12月22日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
谷歌足球游戏环境使用介绍
CreateAMind
31+阅读 · 2019年6月27日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
百万英雄直播答题辅助系统,非OCR实现
数据挖掘入门与实战
4+阅读 · 2018年1月31日
AI 玩跳一跳的正确姿势,跳一跳 Auto-Jump 算法详解
Python开发者
5+阅读 · 2018年1月16日
【干货】利用ENVI从航空影像中提取DEM
无人机
14+阅读 · 2018年1月8日
如何用人工智能秒杀超级马里奥游戏
CSDN
4+阅读 · 2018年1月7日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Learning to See Through Obstructions
Arxiv
7+阅读 · 2020年4月2日
Arxiv
7+阅读 · 2019年10月6日
Local Relation Networks for Image Recognition
Arxiv
4+阅读 · 2019年4月25日
ViZDoom Competitions: Playing Doom from Pixels
Arxiv
5+阅读 · 2018年9月10日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关资讯
谷歌足球游戏环境使用介绍
CreateAMind
31+阅读 · 2019年6月27日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
百万英雄直播答题辅助系统,非OCR实现
数据挖掘入门与实战
4+阅读 · 2018年1月31日
AI 玩跳一跳的正确姿势,跳一跳 Auto-Jump 算法详解
Python开发者
5+阅读 · 2018年1月16日
【干货】利用ENVI从航空影像中提取DEM
无人机
14+阅读 · 2018年1月8日
如何用人工智能秒杀超级马里奥游戏
CSDN
4+阅读 · 2018年1月7日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
Top
微信扫码咨询专知VIP会员