python调用百度AI识别文字和表格

获取账户信息

1、需要先注册百度AI,获得ID和密钥。百度AI社区关于注册的详细说明:https://ai.baidu.com/forum/topic/show/867951

只需走到“1.6 获取密钥”即可。然后记录下自己的APP_ID、API_KEY、SECRET_KEY,就可以开始了。界面如下。每个ID每天可免费识别200次

关于免费额度的详细说明连接
2、安装 百度AI库。电脑运行cmd, 输入 “pip install baidu-aip”

文字识别

glob库用于获得指定路径下的指定后缀的文件,比如如下指定了.png后缀的文件,并全部提取出来了。

填入你申请的ID和KEY,client = AipOcr()是固定写法。
然后遍历待处理的图片,逐个处理。先用二进制方式rb打开,然后读取
再调用百度AI进行识别,并将识别结果存入message变量。
message是一个大字典,我们需要的内容在键'words_result'对应的值里,它的值是一个大列表,列表里又有N多键值对,键都是“words”,值就是AI从图片上识别出来的内容。通过message['words_result'][0]['words']就能提取第一行文字了。逐行提取,并存入文本文件。

from aip import AipOcr   #导入AipOcr模块,用于做文字识别
import globAPP_ID = '按上面操作申请'
API_KEY = '按上面操作申请'
SECRET_KEY = '按上面操作申请'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)files = glob.glob(r'.\data\图片集1\*.png')txt_file = open('.\data\图片集1文本.txt', 'a')i=0
for file in files:pic = open(file,'rb')  #以二进制(rb)打开img = pic.read()       #读取message = client.basicGeneral(img)  #调用百度AI识别图片中的文字i+=1print('------------第{}页-------------'.format(i))txt_file.write('------------第{}页-------------\n'.format(i)) for words in message['words_result']:word = words['words']   #提取文字print(word,'\n')txt_file.write(word+'\n')txt_file.close()

表格识别

百度人工智能的tableRecognitionAsync接口。接口说明网址:https://cloud.baidu.com/doc/OCR/s/3k3h7yeqa 。
用Python调用表格识别模块识别表格文档的扫描件。在开始前,需要检查图片的大小,必须在1K~4M之间,不然会报错“‘error_msg’: ‘image size error, image is too big or too small, upper limit 4M, lower limit 1k, please check your param’”。

from aip import AipOcr
APP_ID = '按上面操作申请'
API_KEY = '按上面操作申请'
SECRET_KEY = '按上面操作申请'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)pic = open("./data/表格图片.jpg",'rb') #以二进制方式打开图片
img = pic.read() #读取
table = client.tableRecognitionAsync(img)    #调用表格识别模块
print(table)


调用表格识别模块tableRecognitionAsync(),并将返回值存入变量table中。得到table是一个字典,其中有2个键,一个叫result,一个叫log_id。我们需要的是result中的request_id,通过这个ID,可以获取识别完成后所保存的Excel表格的下载地址。提取request_id。

request_id = table['result'][0]['request_id']
request_id
#'24937115_2892703'

然后,就可以通过request_id查询Excel表格的下载地址了。将request_id传入getTableRecognitionResult()就能获取结果。打印一下结果result,就能看到下面的内容。其中result_data对应的那个网址就是Excel表格的下载地址。将那个网址复制粘贴到浏览器,就能下载包含识别结果的Excel文件了。这个Excel文件有6张工作表,具体包含与图片中表格内容的对应关系如下。body储存表格部分的内容,header储存表头的文字,footer储存表尾的文字。

就可以通过request_id查询Excel表格的下载地址了。将request_id传入getTableRecognitionResult()就能获取结果。打印一下结果result,就能看到下面的内容。其中result_data对应的那个网址就是Excel表格的下载地址。将那个网址复制粘贴到浏览器,就能下载包含识别结果的Excel文件了。这个Excel文件有6张工作表,具体包含与图片中表格内容的对应关系如下。body储存表格部分的内容,header储存表头的文字,footer储存表尾的文字。

result = client.getTableRecognitionResult(request_id)
print(result)

批量识别和Excel文件的自动下载

#获取路径下所有图片文件,并存入列表
import os
work_path = "data\图片\\"
pictures=[] # 存储文件夹内所有文件的路径(包括子目录内的文件)
for root, dirs, files in os.walk(work_path):path = [os.path.join(root, name) for name in files]pictures.extend(path)
pictures

在提取Excel下载路径之前,需要先判断识别是否完成。这是通过识别结果返回的字典中的’ret_msg’对应的值来判断的。只有当它是“已完成”时,才能获得下载链接。此处用了while循环,每隔2秒刷新一下状态,直到状态是“已完成”时,才提取链接。然后使用requests.get()获取下载链接信息。

from aip import AipOcr  #导入AipOcr模块,用于做文字识别
import time #时间模块
import requests #用于HTTP请求APP_ID = '按上面操作申请'
API_KEY = '按上面操作申请'
SECRET_KEY = '按上面操作申请'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)#提交识别请求,并储存所有请求ID
for picture in pictures:pic = open(picture,'rb') #以二进制方式打开图片img = pic.read() #读取table = client.tableRecognitionAsync(img)    #调用表格识别模块request_id = table['result'][0]['request_id']#判断识别是否完成,直到完成才根据请求ID获取Excel下载路径result = client.getTableRecognitionResult(request_id)  #通过ID获取识别结果while result['result']['ret_msg'] != '已完成': #如果状态是“已完成”,才能获取下载地址time.sleep(2) #暂停2秒再刷新result = client.getTableRecognitionResult(request_id) #持续刷新,直到满足条件download_path = result['result']['result_data']#下载并将Excel文件名设为图片名excel_name = picture.split(".")[0] + ".xls" #让excel文件的名字与图片相同excel = requests.get(download_path) #抓取下载链接file = open(excel_name, 'wb') #新建excel文件file.write(excel.content) #写入excel文件并保存

python调用百度AI识别文字和表格相关推荐

  1. 【应用】Python调用百度AI实现图片上表格识别

    [应用]Python调用百度AI实现图片上表格识别 简介 步骤 安装百度AI库 注册百度AI开放平台 调用AipOcr库识别表格文字 可能遇到的问题 批量操作 简介 Python免费调用百度AI实现图 ...

  2. Python调用百度AI识别身份证

    本文介绍应用百度AI的文字识别功能对身份证进行识别,感兴趣的朋友一起来看看效果吧.    一.安装baidu-aip模块    按win+R打开cmd,在里面输入 pip3 install baidu ...

  3. Python——调用百度AI实现图片上文字识别

    Python--调用百度AI实现图片上文字识别 简介 步骤 安装百度AI库 注册百度AI开放平台 调用glob库 调用AipOcr库识别文字 可能会遇到的问题 批量操作 简介 Python免费调用百度 ...

  4. ai图像识别python的项目_Python3调用百度AI识别图片中的文字功能示例【测试可用】...

    本文实例讲述了Python3调用百度AI识别图片中的文字功能.分享给大家供大家参考,具体如下: 首先pip install命令安装baidu-aip模块,如下图所示(这里使用pip3 install ...

  5. python 利用百度AI实现文字识别(cv2 + aip module)

    python 利用百度AI实现文字识别(cv2 + aip module) (该案例将利用cv2,aip等模块,详细的安装以及使用的方法将在后文进行简单的介绍.) 一.KNN算法的简介(机器学习算法之 ...

  6. python调用百度OCR识别证件+操作excel表格

    python调用百度OCR识别证件+操作excel表格 如果要操作文件的话最好让程序知道文件存不存在,因为做了GUI界面,报错不会直接弹出来,异常捕获就用得比较频繁 因为面向对象没学好,GUI是用工具 ...

  7. Python用百度AI识别车牌号教程(超详细)

    Python用百度AI识别车牌号教程 创建API接口 用浏览器打开http://ai.baidu.com/ 点击右上角的"控制台" 登录账号(没有就注册一个) 点击 产品服务> ...

  8. python调用百度AI接口识别营业执照

    上一篇文章介绍了应用python中的pytesseract库和OCR识别软件进行文字识别.本文介绍应用百度AI的文字识别功能对营业执照进行识别,感兴趣的朋友一起来看看效果吧.    一.安装baidu ...

  9. python调用百度AI自动识别并提取图片上指定位置的文字信息

    这是一个三个月前的项目需求,需要识别多张图片上固定位置的信息并提取.说到python 上文字识别,可能有些人想用 pytesseract 来做,怎么说呢,识别精准度相对较低,而且对于数量较大的图片来说 ...

最新文章

  1. “机器人之夜”看猎豹跑得快还是五款机器人价格降得快?“鸿门宴”正式上演
  2. Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP。
  3. 彻底卸载VS 2013
  4. datatables 展开 折叠_【图说新机】9月折叠屏、屏下摄像头新机同时上市,该怎么选?...
  5. 计算机编程要哪方面天赋,编程要哪门子天赋
  6. cpprestsdk编译安装linux,使用C++ REST SDK开发简单的Web(HTTP)服务
  7. 用python编写daemon监控进程并自动恢复(附Shell版)
  8. ARM学习篇 中断定时理解
  9. 哔哩哔哩---WPF入门基础教程(合集)
  10. 论坛之家-免费论坛申请-3分钟建立自己的个性化论坛
  11. 国家行政区划数据结构化入库
  12. python k线斜率计算_python求线性回归斜率
  13. 齐齐哈尔计算机应用软件学校,黑龙江齐齐哈尔计算机应用技术课程
  14. 20个最佳的flash游戏教程
  15. Python 面试题
  16. 学java应该学什么
  17. python利用列表计算斐波那契数列前30项_使用python计算斐波那契数列
  18. mongodb 基本介绍
  19. 小黄车编程 考试试题
  20. ubuntu有线网卡RTL8111/8168/8411安装驱动

热门文章

  1. VMWare共享windows文件夹到Ubuntu虚拟机
  2. Laravel 教程:使用Fast Excel解决导出超大 XLSX 文件(千万级)带来的内存问题
  3. 【spark基础】之client模式下--conf读取外部文件
  4. zigbee终端入网
  5. 用d2rq转换MySQL为RDF数据
  6. java毕设项目车牌号码识别系统开源了,很好玩,建议尝试
  7. Unity UI跟随鼠标移动
  8. NASM汇编语言与计算机系统10-中断向量表0号中断(cli/sti/iret/hlt)
  9. elasticsearch ingest node
  10. 绝对水题(一些没有被穷举遗忘的角落)