首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

随手 Star ^ ^

具体做法

1.使用 ADB 获取手机截屏

adb shell screencap -p /sdcard/screenshot.png

adb pull /sdcard/screenshot.png .

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

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

文字识别两个方法:

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

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

3.搜索判断

结果判断方式

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

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

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

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

主要代码

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 路径

# 语言包目录

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 去了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180113B049IG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券