在腾讯收购阅文之后,微信读书的无限卡已经不能免费看书了,这时白嫖微信读书每日一答的书币成了不错的选择。严重偏科又手速垃圾的我在等级升高下逐渐力不从心,于是突然有了这个想法,写个能快速识别问题文字的小程序,因为现有的识别文字等程序(如QQ)会出现识别速度慢、手动框选识别区域的问题。
1 环境准备
系统:WIN10
python version:3.6
所需要的库:pyautogui,keyboard,PILLOW,baidu-aip
2 获取屏幕位置
既然是对屏幕制定区域进行截图,必须要知道该区域在屏幕上的坐标,因此需要使用pyautogui大三方库,windows上不需要安装其他依赖模块。
import pyautogui
print('Press Ctrl-C to quit.')
try:
while True:
# Get and print the mouse coordinates.
x, y = pyautogui.position()
positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
print(positionStr, end='')
print('\b' * len(positionStr), end='', flush=True)
except KeyboardInterrupt:
#按ctrl+c结束程序
print('\nDone.')
3 指定区域屏幕截图
需要使用PILLOW第三方库,安装方法自行百度。实现的操作是对制定区域截图,并保存到目标文件夹中,之后以二进制只读方式打开该图片,返回其结果。每次保存图片会自动覆盖之前的图片,具体代码如下:
from PIL import ImageGrab
def get_file_content():
#左上坐标点(x1,y1),右上坐标点(x2,y2),box = (x1,y1,x2,y2)
box = (1450,267,1850,365)
#截图
image = ImageGrab.grab(box)
while True:
try:
#保存图片
filepath = "C:/Users/MAIBENBEN/Desktop/1.jpg"
image.save(filepath)
break
except:
continue
4 文字识别
在此需要用到百度AI开放平台文字识别技术,因此需要注册百度智能云账号/百度账号,注册过程十分简单,一分钟完成,具体步骤可以参考。
为了使用该功能,需要安装baidu-aip第三方库,很小巧且好用的一个库,识别速度很快,2秒左右。具体代码如下:
from aip import AipOcr
def word_identify():
#输入自己的应用的信息
APP_ID = '***'
API_KEY = '***'
SECRET_KEY = '***'
client= AipOcr(APP_ID, API_KEY, SECRET_KEY)
#读取图片信息,返回二进制结果
img = get_file_content()
#返回识别结果
res = client.basicGeneral(img)
print(res)
#返回识别结果中的文字信息
return ''.join([word['words'] for word in res['words_result']])
5 按键识别并保存到剪贴板
实现功能为,当程序运行后,按下某键就进行截图和文字识别操作,按下某键退出程序,按其他键无反应,需要用到keyboard第三方库。还需将识别结果保存到剪贴板中,需要使用第三方库pyperclip。程序运行后按b键进行截图识别,按q键结束程序,具体代码如下:
import keyboard
import pyperclip
while True:
try:
print('Press and release a shortcut(b): ')
#捕捉按键状态
shortcut = keyboard.read_key()
print('Shortcut selected:', shortcut)
if shortcut == 'b':
words = word_identify()
print(words)
#识别结果保存到剪贴板
pyperclip.copy(words)
elif shortcut == 'q':
break
else:
continue
except KeyboardInterrupt:
#防止出现按ctrl+c结束程序的情况
print("\n")
continue
第一次用CSDN投稿,若代码有错误可在评论区交流。
最后,祝你白嫖开心!
PS:之后有时间可能会做如下更新:
1.使用selenium模块自动打开浏览器进行搜索。
2.对问题进行精细化处理,使其更便于搜索。
3.自动捕获窗口坐标位置,在此基础上进行截图操作。
4.添加题库,从题库对比寻找答案,没有则自行搜索。