Python调用百度AI实现图片上文字识别功能实例
作者:鱼尾努力淦饭 发布时间:2022-07-27 11:02:44
简介
Python免费调用百度AI实现图片上面的文字识别
步骤
安装百度AI库
!pip install baidu-aip
注册百度AI开放平台
先注册百度AI,获得ID和密钥。注册方法可参考:注册方法 只需走到 “1.6 获取密钥” 即可。然后记录下自己的APP_ID、API_KEY、SECRET_KEY,就可以开始了。
调用glob库
glob库用于获得指定路径下的指定后缀的文件,图片使用的是《数学模型》pdf扫描版,部分如下:
import glob
path = "数学模型\\"
glob.glob(path+"*.png")
指定文件夹中的指定的.png后缀的文件,全部提取出来了:
选取第一张图片 “数学模型1.png” 做测试:
files = glob.glob(path+"*.png")
file = files[0]
调用AipOcr库识别文字
导入AipOcr模块,这个模块是用于做文字识别的(OCR即Optical Character Recognition,光学字符识别)。填入你申请的ID和KEY,client = AipOcr()
是固定写法。先用二进制方式rb打开,然后读取,再调用百度AI进行识别,并将识别结果存入message变量。
from aip import AipOcr #导入AipOcr模块,用于做文字识别
import glob
APP_ID = '*********' # 你申请的
API_KEY = '*********'# 你申请的
SECRET_KEY = '*********'# 你申请的
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
pic = open(file,'rb')# 以二进制(rb)打开
img = pic.read() # 读取
message = client.basicGeneral(img) # 调用百度AI识别图片中的文字
查看message参数,结果如下:
可见,message参数的结果为 “大字典” 形式,其中的键 words_result
所对应的值为一个 “大列表” ,这个列表里又有很多键值对,键都是words,值就是AI从图片上识别出来的内容。使用语句message['words_result'][0...n]['words']
可以筛选出该页的标题:
message['words_result'][1]['words']
for循环逐行提取:
for words in message['words_result']:
word = words['words'] # 提取文字
print(word)
识别效果图:
识别也不是完美的,有很多识别错误与未识别出的文字。当然,原图字体越清晰,识别度越高。
可能会遇到的问题
识别过程中可能会遇到类似识别错误(无法识别)问题,原因是未领取免费识别次数,解决过程如下:
百度OCR API识别失败:Open api qps request limit reached 错误 解决方法
几个月前,用Python写了个小工具,主要是用到了百度的OCR API做了个文字识别的小工具,前面一直能用,然而今天,在使用的时候,报错了。
错误如下:Open api qps request limit reached
最后终于找到了解决方法,原来,现在要自己去领取免费的测试额度了!!!
领取免费测试额度的地址:(或者你在你原来那个调用的那个项目里也可以找到免费领取测试额度,见下图)
https://console.bce.baidu.com/ai/#/ai/ocr/overview/resource/getFree
领取完之后,还是用原来项目的appID,apiKey,secretKey即可。
然后等领取额度到账后,重新运行就行了。
批量操作
批量操作的核心为for循环,txt_file = open('数学模型.txt', 'a')
指打开名字为“数学模型”的文本文件(若不存在则自动新建),模式为添加模式,即'a'模式。添加模式是指,如果文本中已经有一些内容,则接着往下写,不会影响原来的内容。如果是'w'模式,则会将之前的内容全部覆盖。然后遍历待处理的图片,逐个处理:
from aip import AipOcr #导入AipOcr模块,用于做文字识别
import glob
APP_ID = '*********' # 你申请的
API_KEY = '*********'# 你申请的
SECRET_KEY = '*********'# 你申请的
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
path = "数学模型\\"
files = glob.glob(path+"*.png")
txt_file = open('数学模型.txt', 'a')
for file in files:
pic = open(file,'rb')# 以二进制(rb)打开
img = pic.read() # 读取
message = client.basicGeneral(img) # 调用百度AI识别图片中的文字
for words in message['words_result']:
word = words['words'] # 提取文字
print(word)
txt_file.write(word) # 将文字写入文本文件
txt_file.close() # 关闭文本文件
来源:https://blog.csdn.net/weixin_47282404/article/details/120104272
猜你喜欢
- mysql误删数据使用delete语句误删数据行使用drop table或者truncate table误删数据表使用drop databa
- 本文介绍了Python日期的加减等操作的示例,分享给大家,也给自己留个笔记1. 日期输出格式化所有日期、时间的api都在datetime模块
- 今天一同事需要整理http://ics.cnvd.org.cn/工控漏洞库里面的信息,一看960多个要整理到什么时候才结束。所以我决定写个爬
- 方法一:1、将ORACLE软件拷贝到硬盘。 2、将 硬盘目录文件\stage\Components\oracle.swd.jre
- 如果没有读过上面内容的读者,有兴趣的可以一阅。在上面的使用JdbcTemplate一文中,主要通过spring提供的JdbcTemplate
- 这是个郁闷的问题。主级获得ID列表 select ID from FS_SD_Address where PID=0
- 一、Go的内建类型errorerror类型其实是一个接口类型,也是GO语言的内建类型;在这个接口类型的声明中只包含了一个方法Error;Er
- 这两天为用bottle+mongodb写的一个项目加上登录功能,无奈怎么都获取不到保存的cookie,文档给出让我们这样操作cookie的代
- 一、安装约定 mysql安装路径: /usr/local/mysql
- 钉钉设置机器人首先在钉钉设置钉钉机器人群设置—> 智能群助手—>添加机器人—>自定义添加完成,得到一个Webhook AP
- 在NumPy中,矩阵是 ndarray 的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat 、 matrix 以
- 需求:小程序端拍照调用python训练好的图片分类模型。实现图片分类识别的功能。微信小程序端:重点在chooseImage函数中,根据图片路
- 制作这个播放器的目的是为了将下载下来的mp3文件进行随机或是顺序的播放。选择需要播放的音乐的路径,选择播放方式,经过测试可以完美的播放本地音
- 01 什么是pocPoC(全称: Proof of Concept), 中文译作概念验证。在安全界,你可以理解成为漏洞验证程序。和一些应用程
- 天气真的是越来越冷啦,有时候我们想翻看网页新闻,但是又冷的不想把手拿出来,移动鼠标翻看。这时候,是不是特别想电脑像讲故事一样,给我们念出来呢
- <td width="15%" align="left">是否为分包人&l
- 本文实例讲述了c#操作附加数据库的方法。分享给大家供大家参考。具体如下:/// <summary>/// 附加数据库/// &l
- 前言在日常工作中,可能需要结合网上现在的一些API或者公司提供的数据接口来得到相应的数据或者实现对应的功能。因此API的调用和数据接口的访问
- 什么是setuptoolssetuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包
- 最近学习了一点python,那就试着做一做简单的编程练习。 首先是这个编程的指导图,如下:对的,类似一个简单区块链的模拟。 代码如下:cla