Python 代码实现在线答题的自动搜索
这算是一个小插曲吧,即使mobilenet V2论文公布了,还是抵挡不了答题致富的幻想,,哈哈哈 。。
言归正传。因为一些答题外挂延迟太高,故自己操刀写了一个Python代码来实现自动搜索。算法的主要流程是:先对手机进行截屏,下载到电脑上;再对截屏进行裁剪,以获得题*分的图片;接着OCR对题干图片进行字符识别并处理;最后获得url,使用baidu进行搜索。主要使用的工具有adb和tesseract-ocr。adb下载后直接放在main,py文件夹下,或者加入到系统环境变量也行。需要安装的Python库主要有pillow , pytesseract。在安装pytesseract注意设置tesseract路径为系统环境变量,还有pytesseract.py源码需要进行一些修改,否则会报错。
贴出代码:
import os from PIL import Image import pytesseract import webbrowser def get_image(): #获得截屏 os.system('adb shell screencap -p /sdcard/image.png') os.system('adb pull /sdcard/image.png .') xigua_size = (150,530,1800,800) #百万英雄的题干位置,其它的可以任意修改 while True: if raw_input("please input ."+'\n') == '.': #触发条件 get_image() img=Image.open('image.png') img_que = img.crop(xigua_size) question=pytesseract.image_to_string(img_que,lang='chi_sim')#识别文字 question=question.replace(' ','').replace('\n','') que = question[question.find('.')+1: question.find('?')]#选取题干的切片 url = "https://www.baidu.com/s?wd=" +que webbrowser.open(url)
整个过程大致需要4s.
后续可以对代码进行完善,比如说抓取url界面的信息,再识别出截屏中的题*分,统计处题干信息在搜索页面的出现次数打印在屏幕上,给予推荐答案。做起来应该不复杂,需要对代码进行如下修改:
1. list一个列表,包含题干和选项的size。现代码中的识别部分重新def一个函数来完成题干和选项的文字识别;
2. Python抓取百度搜索的内容;
3. 3个for循环遍历,估计for的速度会很慢,但是个人感觉这是无法转化为array的,所以没办法咯。
估计添加完功能后,一整套下来得7-8s,所以不太想做了。。还是回归“正道”吧,接下来两天更新出mobilenet v2的论文笔记~
上一篇: ASP.net入门知识
下一篇: PHP类中的七种语法说明