【Python应用】自制截图取词小工具-- 解锁文字识别新姿势
大家好 我是Yhen
很久不见呀
今天给大家分享一个自制的小工具—截图取词 及其制作过程
本工具是用Python写的
程序及代码的获取方式会在文末
文章目录
- 一.创作缘由
- 二.项目简介
- 三.思路分析
- 四.代码演示
- 五.程序及源代码获取方式
一.创作缘由
为什么会想到写这么一个小程序?
因为最近我经常会有文字识别的需求
每次文字识别都需要将文字截图选取下来
再使用文字识别工具读取截图进行识别
最后复制识别后的文字
整个过程给我的感觉就很繁琐 很累
如果需要频繁操作的话人估计要崩溃了
于是就萌生了一个想法
能否实现截图后自动帮我识别程序中的文字 我只需要直接粘贴就可以了呢
一顿倒腾以后 写出了这个 截图取词 程序
话不多说 马上开始今天的制作之旅
二.项目简介
名称:截图取词
功能:
1.截图后自动识别图像中的文字并将识别结果保存到剪切板中,用户直接粘贴即可。
2.识别成功后会有windows系统弹窗提示识别内容
3.识别结果保存在result文件夹内,用户可随时查取
特点:
①文字识别一步到位
截图自动识别,解决了传统文字识别需要保存图片到本地再读取图片进行识别的繁琐操作
②识别内容自动保存到剪切板 即截即用
文字识别后马上可以粘贴了,无需再手动复制识别内容
③弹窗提示识别结果
调用系统弹窗提示识别内容 识别效果好不好 一眼就知道
综上 我认为这个工具最大的特点就是 高效
视频介绍:
截图取词-自制最高效文字识别工具 即截即粘贴
三.思路分析
首先解剖一下需求及其需要用的python库
①检测并获取剪切板中的图片 ---------------------------------PIL
②调用文字识别接口识别截图中的文字----------------------aip
③识别内容写入剪切板-------------------------------------------win32clipboard
④调用系统弹窗展示识别结果----------------------------------win10toast_click
主要的步骤就是这么几步
接下来就用代码一一将它们实现吧
四.代码演示
首先导包
import os
import time
import requests
import win32con
from PIL import Image, ImageGrab
import win32clipboard
import datetime
from win10toast_click import ToastNotifier
from aip import AipOcr
①检测剪切板中图像内容
使用PIL库的Image和ImageGrab 实现
im = ImageGrab.grabclipboard()
img_path = ".\\img.png"
if isinstance(im, Image.Image):
print('获取到一张截图...')
im.save(img_path)
检测剪切版中的图像内容
若是Image.Image类型的 则将该截图保存到本地
②识别截图中的文字
""" 你的 APPID AK SK """
APP_ID = '你的appid'
API_KEY = '你的api_key'
SECRET_KEY = '你的SECRET_KEY'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content(img_path)
print('正在进行识别...')
""" 调用通用文字识别, 图片参数为本地图片 """
# 高精度版
word = client.basicGeneral(image)
date = datetime.datetime.now().strftime('%Y-%m-%d_%H%M%S')
exist_dir = os.path.exists(save_path)
if exist_dir ==False:
os.mkdir(save_path)
try:
str = word['words_result']
print('识别成功')
for x in str:
data = x['words']
with open(save_path + date+".txt", "a", encoding='utf-8') as f:
f.write(data + '\n')
f.close()
文字识别代用的是百度智能云的api
使用前需要将代码中的appi等字段替换成自己项目的appid
我在这篇文章中介绍了如何创建项目并查看自己的appid等项目信息
如果不熟悉的小伙伴可以看一下
Yhen手把手带你使用百度智能云①----项目的创建
调用文字识别后将识别结果保存到txt文件中,以当前的时间命名,避免覆盖
③识别结果写入到剪切板中
f=open(save_path +date+ ".txt", "r",encoding='utf-8')
text=f.read()
f.close()
print('识别结果:\n'+text+'\n')
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardData(win32con.CF_UNICODETEXT, text)
win32clipboard.CloseClipboard()
④调用系统弹窗展示识别结果
toaster = ToastNotifier()
# showcase
toaster.show_toast(
"识别内容已保存至剪切板",
"识别结果:" + '\n' + text,
icon_path='./tip.ico', #图标路径 需将tip.ico 放在代码同一路径
duration=3,
threaded=True,
)
实现功能的四个步骤的代码就是这样啦
运行后目录下回生成一个result文件夹
里面以时间命名保存着我们每次识别的结果
也方便我们以后去查看
那么今天的分享就到这啦
如果对你有帮助的话 可以点个小赞嘛
让我看到自己的劳动成果还是有人认可的
谢谢啦
我们下期见~
五.程序及源代码获取方式
①程序获取
②源代码获取