当前位置: 首页 > news >正文

【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文件夹

在这里插入图片描述
里面以时间命名保存着我们每次识别的结果
也方便我们以后去查看
在这里插入图片描述
那么今天的分享就到这啦
如果对你有帮助的话 可以点个小赞嘛
让我看到自己的劳动成果还是有人认可的
谢谢啦
我们下期见~

五.程序及源代码获取方式

①程序获取

扫码关注我的微信公众号 Yhen杂文铺
后台回复关键词 截图取词即可获取哦.

在这里插入图片描述

②源代码获取

扫码关注我的微信公众号 Yhen杂文铺
后台回复关键词 截图取词源码即可获取哦.

在这里插入图片描述

相关文章:

  • vue elementui el-table表格 点击单元格添加选中样式
  • 微信小程序详解
  • C++ | Leetcode C++题解之第55题跳跃游戏
  • QSqlTableModel的canFetchMore、fetchMore效率太低,需替换
  • 2024 年最好的免费数据恢复软件,您可以尝试的几个数据恢复软件
  • 粒子群算法与优化储能策略python实践
  • 前端Vue篇之什么是 mixin ?mixin 和 mixins 区别
  • 计算机网络—ENSP常用指令
  • VUE基础知识九 ElementUI项目
  • 使用Node.js开发一个文件上传功能
  • 【亚马逊云】跨AWS账号创建复制规则同步S3存储桶中的数据
  • 【数据结构】OJ面试题《设计循环队列》(题库+代码)
  • MYSQL学习笔记(DDL[数据定义]、DML[数据操作]、DQL[数据查询])
  • SpringCloud学习笔记
  • FFT 快速傅里叶变换 NTT 快速数论变换
  • 王传福赚嗨了!比亚迪单季利润超50亿 还大量出口到欧洲
  • 带你趣学算法
  • 设计模式(四)—— 装饰者模式
  • [架构之路-48]:目标系统 - 系统软件 - Linux下的网络通信-4-快速数据平面开发套件DPDK-工作原理
  • 创意电子学00课:需要准备的材料汇总
  • 什么是轨到轨?这种运放和普通运放比有什么特点和优点?
  • 面试官:小伙子,说说C/C++是如何进行内存管理的?我:……
  • STL容器 —— map和set的模拟实现
  • 软考知识点---06文件管理与作业管理---01文件管理
  • API网关基础认知
  • 腾讯云Ubuntu18.04配置深度学习环境
  • 反常积分敛散性的比较判别法专题(及常用反常积分)
  • pythond大屏可视化
  • 知识图谱-生物信息学-医学论文(Chip-2022)-BCKG-基于临床指南的中国乳腺癌知识图谱的构建与应用
  • 力扣 每日一题 902. 最大为 N 的数字组合【难度:困难,rating: 1989】(数学 / 数位dp)
  • 奇迹mu服务器安全和优化设置
  • OC 基础 导航栏UITabBarController的使用(源码)