python打造实时截图识别OCR

一、Snipaste

一、方法一:pytesseract

二、方法二:baidu-aip

三、小问题

一、Snipaste

一款巨好用的截图工具。

二、方法一:pytesseract

第一步:

pip install pytesseract

第二步:

pip install keyboard

第三步:

配置环境变量:

配置完成之后打开cmd,输入命令:tesseract -v 可以查看版本信息。

第四步:

修改pytesseract.py文件,这个在你的python安装目录的./lib/site-packages下

第五步:下载字体

注意:字体的版本一定要和tesseract版本一致。

下载完成之后解压。将chisim.traineddata放到D:\Tesseract-OCR\tessdata目录下,如果要进行识别其他种类语言,也要将语言包放在这个目录下。比如chi_tra中文繁体等等。

第六步:源码解析

from PIL import Image
from PIL import ImageGrab
import keyboard
import pytesseract
import time
# 1.截图
keyboard.wait(hotkey="f1") # 输入键盘的触发事件
keyboard.wait(hotkey="ctrl+c")
time.sleep(0.1)
# 2.保存图片
image = ImageGrab.grabclipboard() # 把图片从剪切板保存到当前路径
image.save("screen.png")
# 3.识别图片上的内容
# 法一
text = pytesseract.image_to_string(Image.open("screen.png"), lang='chi_sim')
print(text)

第七步:效果图展示

评价:

优点:免费,易用缺点:识别效果很一般,准确率不高。有点low

三、方法二:百度API接口

第一步:

点击控制台,注册百度智能云账号,或者直接手机短信快捷登录。绑定邮箱。登录成功之后创建一个应用:输入应用名称和应用描述即可,每天的免费次数,对于一般用户来说足够了。

创建完成之后,点击管理应用

从这里获取AppID,API Key,Secret Key。

第二步:pip install baidu-aip

第三步:源码解析

from aip import AipOcr
from PIL import ImageGrab
import keyboard
import time
def screenshot():
keyboard.wait(hotkey="f1") # 输入键盘的触发事件
keyboard.wait(hotkey="ctrl+c")
# 2.保存图片
image = ImageGrab.grabclipboard() # 把图片从剪切板保存到当前路径
image.save("screen.png")
def baidu_aip(client):
with open("screen.png", 'rb') as f:
image = f.read()
# 调用百度API通用文字识别(高精度版),提取图片中的内容
text = client.basicAccurate(image)
result = text["words_result"]
for i in result:
print(i["words"])
if __name__ == '__main__':
print("copyright@Kanghui Zhang, welecome to you! ")
print("please use snipaste to screenshot:")
APP_ID = '18564461'
API_KEY = 'nqOGNmheLphxjDglQepsM7TZ'
SECRET_KEY = 'szlEHqNfHVxwBgYxh2TD74vzC43de1dC'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
while True:
screenshot()
time.sleep(0.1)
baidu_aip(client)

第四步:实时效果展示

再重启截一张试一下:

评价:牛逼就完事!

四、小问题

本来是打算封装成一个exe,使用的,但是发现一个小问题,没搞定,先放这把,这个问题解决了在封装。

问题描述:

当循环截图的时候,f1截图,ctrl+c,成功识别。再次f1截图,ctrl+c,识别的是上一次截图的结果。

总感觉这里先保存图片再打开有点呆,但又不知道怎么改,就先这样吧~