baiduApiVersion | 2 days ago | |
common | 15 hours ago | |
config | 2 days ago | |
resources | 15 hours ago | |
simpleVersion | 4 days ago | |
.gitignore | 15 hours ago | |
GetImgTool.py | 4 days ago | |
GetQuestionTessAndroid.py | 13 hours ago | |
GetQuestionTessIos.py | 3 days ago | |
README.md | 13 hours ago | |
__init__.py | 4 days ago | |
screenshot.png | 15 hours ago |
答题辅助
这两天冲顶大会直播答题 APP 突然火了起来,萌生了使用截图,文字识别,搜索来做个小辅助的想法。使用文字识别搜索,只能增加准确率,保证不了全对。
非常感谢关注,欢迎大家 PR 新的想法和优化。
灵感来自:
更新日志
- 2018.01.12
- 修复 windows 命令行颜色乱码,处理一些识别错误
- 2018.01.11
- 修复搜索可能的乱码等一些问题,多线程加快执行
- 2018.01.10
- 增加循环,无需重复加载,优化逻辑和显示 来自 issue #7。增加部分手机截图设置
- 增加了截图传输效率,修改了识别参数,对图像进行灰度转化,去干扰,增加了识别准确率。结果判断使用了三种方式,对不同问题可以参考不同结果。
版本说明
具体做法
- ADB 获取手机截屏
adb shell screencap -p /sdcard/screenshot.png adb pull /sdcard/screenshot.png .
- OCR 识别题目与选项文字
两个方法:
- 搜索判断
结果判断方式
以下为两个示例结果
参考了 I Hacked HQ Trivia But Here’s How They Can Stop Me
Tesseract)
使用步骤 (谷歌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. 安装 python 3
3. 安装所需 python 包
命令行:
pip install pytesseract
pip install pillow
pip install requests
pip install colorama
4. 安装 谷歌 Tesseract
Windows 下链接: 推荐使用安装版,在安装时选择增加中文简体语言包
- 安装版: https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-3.05.01.exe
- 免安装版: https://github.com/parrot-office/tesseract/releases/download/3.5.1/tesseract-Win64.zip 免安装版需要下载中文语言包,放置到 Tesseract 的
tessdata
目录下
其他系统: https://github.com/tesseract-ocr/tesseract/wiki
common/ocr.py
代码相应目录信息
5. 修改 # win 环境
# tesseract 路径
pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract'
# 语言包目录和参数
tessdata_dir_config = '--tessdata-dir "C:\\Program Files (x86)\\Tesseract-OCR\\tessdata" --psm 6'
# mac 环境 记得自己安装训练文件
# tesseract 路径
#pytesseract.pytesseract.tesseract_cmd = '/usr/local/Cellar/tesseract/3.05.01/bin/tesseract'
# 语言包目录和参数
#tessdata_dir_config = '--tessdata-dir "/usr/local/Cellar/tesseract/3.05.01/share/tessdata/" --psm 6'
6. 运行脚本
python GetQuestionTessAndroid.py
会自动识别文字并打开浏览器
注: 可以用 GetImgTool.py
调整题目截取位置 可以到这里查看部分手机截图设置 若屏幕分辨率不同,请在 ocr.py
中自行修改代码即可
# 切割题目和选项位置,左上角坐标和右下角坐标,自行测试分辨率
question_im = image.crop((50, 350, 1000, 560)) # 坚果 pro1
choices_im = image.crop((75, 535, 990, 1150))
# question = img.crop((75, 315, 1167, 789)) # iPhone 7P
IOS
部分朋友成功
- 需要安装 WDA 进行截图,参考
- 安装 python-wda
- 其他步骤相同。
python GetQuestionTessIos.py
使用步骤 (百度 OCR)
请移步,链接
其它
- Tesseract 参数,若识别有问题可以更改参数解决 https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc
- 三种方法可以选择,可以加#注释掉只保留一个方法
- windows 命令行有很多乱码问题,建议使用 cmder 作为命令工具,可以支持 linux 命令
- 建了个 Q 群
565159762
有兴趣的朋友可以互相交流互相帮助
总结
有了 ADB 截图,怕是各种小辅助都可以玩了。python 写小脚本真的很方便。
Next
- 文字识别后 nlp 处理一下关系,然后搜索不同选择结果