欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python 代码实现在线答题的自动搜索

程序员文章站 2022-05-23 18:12:30
这算是一个小插曲吧,即使mobilenet V2论文公布了,还是抵挡不了答题致富的幻想,,哈哈哈 。。 言归正传。因为一些答题外挂延迟太高,故自己操刀写了一个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的论文笔记~