题外话
刚开始在微信公众号写文章,操作生疏,导致上一篇格式、链接都很乱,在此重新编辑,并添加实测视频和反馈收到的改进。
现在貌似类似的程序、代码出现了很多,利用它们答题之余,希望大家可以多探究下它们的原理逻辑,为自己以后学习编程或开发设计积累些小经验。
至于答题,个人感觉还是组团靠谱,组个智囊团一起享受答题乐趣,同时利用下搜索小功能,学习各种知识点,比孤军奋战强大太多~
可以关注本公众号,回复“答题”或“自动搜题”获取原创Python搜题代码,此篇面向新手小白进行解析,助你成功运行自动搜提的Python程序。任何相关问题都可以留言,我的目的就是尽力帮你实现代码运行,享受Python的乐趣~
思路和步骤
本代码的思路比较简单:利用现有的手机和电脑“共享屏幕”(说白了就是在电脑屏幕上实时显示手机屏幕内容的)应用,直接电脑端对屏幕截图从而节省从手机端获取截图的时间;之后利用Python现有的功能库识别截图中文字,完成打开浏览器自动搜索的功能。不用adb获取手机截图、不抓取搜索结果显示的原因是我们要节省时间,只要最短时间内得到结果来答题。接下来说大致步骤:
首先是获取题目截图,例如:
之后是读取截图中文字内容,像这样:
最终打开浏览器自动搜索题目,上图:
预期是3-5秒内要完成全过程,经过1月11日中午1点实测,网络良好时,搜完结果回剩余大约5秒的答题时间,还是很高效的~!
下载功能包
我的设备和Python版本是:win10系统电脑,安卓手机,Python3.6
我是用的安卓手机和Windows系统电脑,为了快速获取题目截图,我的做法是把手机屏幕同步到电脑屏幕上,然后利用电脑截取屏幕上题目位置的内容。所以首先要能够实现手机屏幕内容能够共享到电脑屏幕上,我是用的360手机助手,其中的360演示功能,其余型号的手机电脑请自行搜索实现吧~
实现了同步屏幕,接下来要做电脑端的屏幕截图,这里要用到可以快速实现的Windows API,需要下载pywin32模块,pip 的安装命令是pip install pypiwin32,相关参考链接请点击原文查找下。
拿到题目截图,下面要实现对图片中文字的读取,要安装PIL和pytesseract还有最新版的识别中文的引擎包tesseract-ocr,前两个可以通过pip install Pillow和pip install pytesseract安装,之后的ocr可以官网下载最新版4.0版,也可以阅读原文链接中寻找下我提供的网盘下载,安装ocr时请参考链接勾选中文和数学选项。
获取了题目内容,要通过webbrowser模块实现自动打开浏览器搜索,该模块自带不用下载。
校准截图位置
运行代码,根据生成的截图内容判断截图所在屏幕上的位置,调整代码中的w,h来改变截图大小,(20,140)处坐标改变截图初始位置,对应屏幕中手机屏幕显示位置,使截图恰好落在手机直播答题时出现题目的位置。
此外,直播答题时,可以使用Python自带的IDLE来打开代码,按F5快捷键直接运行节省时间,同时提前打开好浏览器分配好位置,避免答题时浏览器跳出阻挡截图位置。
代码解析
点击阅读原文,相关知乎文章中包含代码的逐句解析,由于公众号文章还没研究好怎么展示代码,就先不在这展示了。不看解析也没关系,不影响执行。
实测视频
上文中提到的第六题:
代码功能介绍:
成功的第一题:
希望大家看到此处的时候已经可以成功运行代码了~
关注公众号回复“答题”或“自动搜题”便可获取代码下载地址~
点击阅读原文可以查看附有代码详解的发在知乎上的参考~
人生苦短,我用Python! 期待认识更多喜欢Python的朋友~大家周末愉快!