十行Python代码实现文字识别功能
作者:Corley 发布时间:2024-01-01 14:55:09
今天给大家分享的主题是用百度的接口实现图片的文字识别。
1.环境和配置要求
整体是用Python实现,所需要使用的第三方库包括aip、PIL、keyboard、pyinstaller,如未安装,可在CMD中使用pip install Baidu-AIP/pillow/keyboard/pyinstaller
指令安装。
百度接口
打开网址,如未注册请先注册,然后登录点击管理控制台,点击左侧产品服务→人工智能→文字识别,点击创建应用,输入应用名称如Baidu_OCR,选择用途如学习办公,最后进行简单应用描述,即可点击立即创建。会出现应用列表,包括AppID、API Key、Secret Key等信息,这些稍后会用到。
2.具体实现步骤
整个程序的大致思路是,在用截图软件获得截图之后,交给百度接口识别,并返回结果,当然,也可以是本地图片识别,我用的是QQ自带截图软件,快捷键CTRL+ALT+A
用来打开截图,在选中所截区域后,按Enter键即可保存到粘贴板中,也可用其他截图软件。
获取截图
keyboard类库是用来监听键盘动作的,所以在有快捷键按下之后,便会有相应动作。并用PIL中的ImageGrab来获取到剪切板中的图片并生成本地图片文件。
#1.截图
keyboard.wait('ctrl+alt+a')
print('开始截图')
keyboard.wait('enter')
print('保存截图')
time.sleep(0.1)
#2.保存图片
image = ImageGrab.grabclipboard()
image.save('img.png')
调用Baidu aip识别并打印文字
先用注册时生成的应用的AppID、API Key、Secret Key初始化应用,再读取保存到的图片并打印识别的文字。
with open('img.png', 'rb') as fp:
image = fp.read()
text_list = client.basicAccurate(image)['words_result']
for text in text_list:
print(text['words'])
运行结果如图所示:
我们还可增加一个无限循环使得一直能截图。
调用打包程序生成专属识别文字小程序
用pyinstaller库实现小程序的打包,生成.exe文件,这样就能随时识别文字了。在命令行中用pyinstaller xxx.py
来打包生成exe文件,最后在生成的dist文件夹即可找到xxx.exe文件如下:
最后附上整个源代码:
#引入截图软件,获取文件到本地端,并识别图片文字,最后打包
import keyboard #控制键盘
from PIL import ImageGrab #保存图片
import time
from aip import AipOcr
""" 你的 APPID AK SK """
APP_ID = '17076767'
API_KEY = 'Af3Rj5HALMz5AN8prSgwTH4m'
SECRET_KEY = '******************'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
i = 0
while True:
#1.截图
keyboard.wait('ctrl+alt+a')
print('开始截图')
keyboard.wait('enter')
print('保存截图')
time.sleep(0.1)
#2.保存图片
image = ImageGrab.grabclipboard()
image.save('img{}.png'.format(i))
""" 调用通用文字识别(高精度版) """
with open('img{}.png'.format(i), 'rb') as fp:
image = fp.read()
text_list = client.basicAccurate(image)['words_result']
for text in text_list:
print(text['words'])
i+=1
附图图片识别案例
来源:https://mp.weixin.qq.com/s/qNO3FiW177J4DTp2voo6BA
猜你喜欢
- var a= new Array(new Array(1,2),new Array('b','c')); d
- 为了庆祝自己的博客重新开放,我在这里放一个自己刚刚写的jquery日期插件, 也许人们会说:日期选取插件已
- 1.方法方法描述bbox(item, column=None)返回指定item的框选范围,或者单元格的框选范围column( cid, op
- 我们在设计网站的时候,有的时候需要根据页面元素的属性来制作不同的样式,比如,对于不同的链接类型,显示不同的链接图标。CSS的选择器是个很有用
- Python中的正则表达式要用到re模块,下面先介绍一下正则表达式需要用到的特殊字符和说明常用的RegEx基础语法语法说明\d匹配一个数字字
- 1.触发器概述触发器是SQL Server数据库应用中一个重要工具,是一种特殊类型的存储过程,应用非常广泛。一般存储过程主要通过存储过程名而
- 最近,Analysis with Programming加入了Planet Python。作为该网站的首批特约博客,我这里来分享一下如何通过
- 今天调试某页面样式,发现chrome下出现问题,但是同样基于webkit引擎的safari没有问题,很是郁闷。于是寻找针对google ch
- 利用ASP从远程服务器上接收XML数据<% dim objXML dim objRootElement dim&n
- 需求说明:通过在界面上输入春联的上、下批和横批汉字从而生成春联图像,最后将春联图片保存。有实际需要的还可以将春联打印。实现过程:实现思路是先
- 最近,使用 golang 去管理本地应用的生命周期,期间有几个有趣的点,今天就一起看下。场景一我们来看看下面两个脚本会产
- 1.使用iloc对数据进行批量修改使用iloc最简单的就是将数据批量修改为某个特定的值以下是我随便写入的数据:现在将[‘
- Django crontab定时任务安装pip install django-crontab配置在settings.py中 INSTALLE
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- 处于兴趣,写了一个遍历指定城市五天内的天气预报,并转为华氏度显示。把城市名字写到一个列表里这样可以方便的添加城市。并附有详细注释import
- 本文实例讲述了python通过函数属性实现全局变量的方法。分享给大家供大家参考。具体分析如下:python的函数可以定义属性,而且是全局的,
- 您是否记得关闭所有的XHTML元素,在HTML中一些元素没有必要被关闭。当下一个元素开始的时候,上一个元素就自动被关闭。XHTML中是不允许
- 本文实例讲述了python处理二进制数据的方法。分享给大家供大家参考。具体如下:#!/usr/env/env python #-*- cod
- 有一个网站A想找别的网站作为代理商,在代理商的页面上插入自己的广告。它提供一个注册页面给代理商,代理商注册后,会得到一个ID,
- Summary主要包括以下三种途径:使用独立的函数;使用torch.type()函数;使用type_as(tesnor)将张量转换为给定类型