Golang 写的问答 APP 自动答题助手

2018-01-22 15:49:32 +08:00
 henson

项目地址:

https://github.com/henson/Answer

https://gitee.com/henson/Answer

欢迎试用,顺便给个星,谢谢!

Answer

问答 APP 自动答题助手,适用于 百万英雄 / 芝士超人 / 冲顶大会 / 花椒百万赢家 等多个直播答题类 APP,支持 iOS、Android 手机和模拟器,3 秒出结果,可以自动答题。

目录

特点

更新日志

方法原理

  1. ADB 获取手机截屏
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png .
adb shell screencap -p
  1. OCR 识别题目与选项文字

​ 两个方法:

  1. 申请百度 OCR

  1. 通过算法对搜索结果进行筛选、判断

    目前用到的算法:

文本关联相似度算法

(参考 github.com/smileboywtu/MillionHeroAssistant

通过分别统计问题与三个答案的关联度来选择正确的答案,在集合相当大的情况下,关联度会呈现正相关。

假设题目是:

中国历史上著名的科举制度开始于那个朝代?

我们先用百度分别搜索汉朝唐朝隋朝,得到如下数据:

朝代 | 搜索出的数量(来自百度为您找到相关结果约) ---- | ------------------------------------------ 汉朝 | 17900000 唐朝 | 30500000 隋朝 | 16600000

然后我们在用题目 + 答案的方式,搜索示例:

中国历史上著名的科举制度开始于那个朝代? 汉朝 得到三次的搜索结果:

关键字 | 搜索出的数量(来自百度为您找到相关结果约) -------- | ------------------------------------------ Q + 汉朝 | 602000 Q + 唐朝 | 837000 Q + 隋朝 | 658000

关联度计算方式:

K = count(Q & A) / (count(Q) * count(A))

关联度如下:

答案 | 关联度 ---- | ------ 汉朝 | 0.0336 唐朝 | 0.0274 隋朝 | 0.0396

使用步骤

Android

1. 安装 ADB

windows

下载地址: https://adb.clockworkmod.com/ ,并配置环境变量

Mac

使用 brew 进行安装 brew cask install android-platform-tools

安装完后插入安卓设备且安卓已打开 USB 调试模式,终端输入 adb devices ,显示设备号则表示成功。我手上的机子是坚果 pro1,第一次不成功,查看设备管理器有叹号,使用 handshaker 加载驱动后成功,也可以使用豌豆荚之类的试试。

List of devices attached
6934dc33    device

若不成功,可以参考Android 和 iOS 操作步骤进行修改

2.安装模拟器

windows

adb connect 127.0.0.1:62001

3. 安装谷歌 Tesseract

Windows 下链接: 推荐使用安装版,在安装时选择增加中文简体语言包

其他系统: https://github.com/tesseract-ocr/tesseract/wiki

iOS

1.安装 WDA

iOS 真机如何安装 WebDriverAgent (参考 https://testerhome.com/topics/7220

2.安装 tesseract 以及简体中文包

Mac

brew install tesseract
cd /usr/local/Cellar/tesseract/{version}/share/tessdata
wget https://github.com/tesseract-ocr/tessdata/raw/master/chi_sim.traineddata

配置 Golang 环境

安装 Golang

https://golang.org/doc/

从源码安装本项目

go get -u github.com/henson/Answer

直接下载可执行文件

根据平台直接下载各版本运行文件: releases

运行

  1. 根据实际情况设置配置文件

配置参数说明:

# 是否开始调试模式
debug: true
# 游戏名称, xigua 西瓜视频 /cddh 冲顶大会 /huajiao 花椒 /zscr 芝士超人
app: xigua
# 是否模拟自动答题
automatic: false
# 对应的设备类型:ios or android
device: android
# android 连接地址
adb_address: '127.0.0.1:62001'
# ios 设备连接 wda 的地址
wda_address: '127.0.0.1:8100'
# 西瓜视频裁剪区域:x,y,w,h
xg_q_x: 30
xg_q_y: 240
xg_q_w: 840
xg_q_h: 180
xg_a_x: 30
xg_a_y: 410
xg_a_w: 840
xg_a_h: 450
……
  1. 填入百度 OCR key

修改参数:

# 百度 OCR API 参数
Baidu_API_Key: "**************************"
Baidu_Secret_Key: "**************************"
  1. 程序运行:
./Answer

cd cmd
go run main.go

项目参考

本项目在开发过程中参考了以上开源项目,在此对开源作者表示感谢!

TODO

2252 次点击
所在节点    Go 编程语言
6 条回复
Len1133
2018-01-22 15:58:22 +08:00
赞一个
anasplrt34
2018-01-22 16:44:50 +08:00
这算法能解释下么....
firefox12
2018-01-22 19:23:45 +08:00
相当干活
firefox12
2018-01-22 19:28:15 +08:00
干货 当然最核心的还是百度干了。比如那个句话的意思 。

如果改成这种题型 估计就不行了
下面四句诗 那句是作者小时候的作品?
a b c d 四个答案 那个是
Julio
2018-01-23 09:29:43 +08:00
刚开始就用 node 撸了一个版本,其中的搜索和算法比楼主的还多,但是依然无法保证准确率,对于一些简单的题目,还是很容易搜索和分析的。但是复杂的题目或者数学题就没戏了。还有搜狗的那个也不靠谱。特别对于最后一题,准确率堪忧,坑了我好几次。
zarte
2018-01-23 10:38:16 +08:00
支持下

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

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

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

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

© 2021 V2EX