哈喽,大家好,我是一条。 好久没出python的教程了,今天教大家做个好玩又实用的。 点赞,收藏准备好。
前言
不知道大家工作中有没有遇到这种情况
- 产品不知道从哪搞来的截图就这么粘在需求文档上,你还得一个一个敲,气的我这……
- 网上有个资料,死活就是不让你复制,气的我这……
- 有篇技术文章,代码全是截图,气的我这……
ok。别气了,求人不如求自己,一条教你自制带文字识别
的截图工具。
成品展示
现已将文件设置成开机自启动,并一直在后台运行; 当监听到有截屏操作时,保存剪切板的文件; 调用百度开放API进行文字识别; 将识别出的内容写入剪贴板;
可以看到,大约占20M的内存
待识别的图片
识别出的内容
代码语言:javascript复制现已将文件设置成开机自启动,并一直在后台运行;
当监听到有截屏操作时,保存剪切板的文件;
调用百度开放AP进行文字识别;
将识别出的内容写入剪切板;
不得不说,百度的准确率还是很高的。下面跟着一条来完成它吧
snipaste
我们需要借助这款好用的截图工具,微软商店和官网都可以下载。
完成后可以参考一条设置一下快捷键。
- 截屏:shift S
- 截屏后自动复制到剪贴板:shift A
- 截屏后贴图:shift T
监听键盘
下面就是监听键盘的截屏快捷键
shift A
因为我们想做到截屏后自动识别文字,不需手工做任何处理。
代码如下
代码语言:javascript复制import keyboard
import time
keyboard.wait(hotkey="shift a")
time.sleep(2)
sleep2秒是为了等待截图的过程。
这是肯定有人会有问题:如果我只想截图不想识别文字呢?
一条已经想到了,不想识别文字,可以用shift S
呀
保存截图
代码语言:javascript复制如何从剪贴板获取截图呢 上代码
from PIL import ImageGrab
image = ImageGrab.grabclipboard()
image.save("screen.png")
百度文字识别
有了图片,就可以用百度文字识别了 怎么用呢?
创建应用
AI开放平台文档中心 https://ai.baidu.com/ai-doc
登陆后,到控制台建立一个自己的文字识别应用
创建应用后一定要记得领取免费资源
然后在管理应用找到自己的app_id
把这三个值复制下来,写代码需要用。
调用API
代码语言:javascript复制接下来就是发送一个request请求,调用百度的开放接口。 为了调用方便,需要引入一个封装好的库。
pip install baidu_aip
安装好之后,写代码
代码语言:javascript复制from aip import AipOcr
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
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"])
写入剪贴板
代码语言:javascript复制识别完了,怎么用呢 连复制都免了,直接写入到剪贴板
import pyperclip
clipstr=''
# 读取图片
with open("screen.png", 'rb') as f:
image = f.read()
# 调用百度API通用文字识别(高精度版),提取图片中的内容
text = client.basicAccurate(image)
result = text["words_result"]
for i in result:
clipstr=clipstr i["words"] "n"
pyperclip.copy(clipstr)
后台执行
想到要做就做绝,如何让他在后台一直执行,又不能影响我其他工作。 通过
ocr.bat ocr.vbs
新建ocr.bat
写入(ocr.py要和ocr.bat在同一目录)
代码语言:javascript复制python ocr.py
新建ocr.vbs
同样,写入。主要作用是不显示控制台窗口
代码语言:javascript复制Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c ocr.bat",0
开机自启动
要做,就让他完全自动化
win R
,输入shell:startup
,回车
将上面的三个文件全部复制进去
ok,大功告成!
源码
想直接拿到源码就可以用的小伙伴