答题类游戏

2019-10-08 21:27栏目:www.5596.com
TAG:

那二日冲顶大会之类的直播答题 APP突然火了四起,不得不钦佩网络厂商的想象力,那么程序猿怎么用分歧的艺术玩转答题游戏吗。此前微信的跳一跳小游戏刷爆交际圈,已经有为数不菲相爱的人写出了自动化的台本协助,一见到答题游戏就及时想到能够用周围的法子来写贰个轻巧易行的本子。笔者发掘早就有心上人做了个调用百度 api 的,自身就再写个平昔用识别库的呢,代码思路轻易,能够用在各种答题游戏中。使用文字识别加检索,只能起到救助决策的机能,能够参见结果,扩大准确率,也保证持续全对。

screenshot.PNG

实际代码和境遇及应用请戳:https://github.com/Skyexu/TopSup
随手 Star ^ ^

灵感来源:

微信跳一跳支持

技术员怎样玩转《冲顶大会》?

具体做法

  1. 采纳 ADB 获取手提式有线电话机截屏
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png .
  1. OCSportage 识别标题与选拔文字
    分级通过代码截取标题区域与选用区域,再开展文字识别
cut.png

文字识别四个章程:

  • 谷歌 Tesseract ,安装软件就可以,接下去主要选择这么些办法
  • 百度 OCR livc ,须要注册百度 API,天天调用次数有限
  1. 追寻剖断

结果决断格局

  1. 从来张开浏览器搜索难点
result.png
  1. 标题+每一种选项都由此搜寻引擎举办查找,从网页代码中领取寻觅结果的数目

  2. 只用难点进行查找,计算结果页面代码中蕴藏选项的词频

以下为八个示范结果,能够看出上边两道题,七个办法有分化的结果,可以依照标题项目实行不相同的表决。

result2.png

result3.png

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

版权声明:本文由澳门萄京官网最大平台发布于www.5596.com,转载请注明出处:答题类游戏