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

  • 简介
  • 步骤
    • 安装百度AI库
    • 注册百度AI开放平台
    • 调用AipOcr库识别表格文字
      • 可能遇到的问题
    • 批量操作

简介

Python免费调用百度AI实现图片上面的表格识别

步骤

安装百度AI库

!pip install baidu-aip

注册百度AI开放平台

先注册百度AI,获得ID和密钥。注册方法可参考:注册方法 只需走到 “1.6 获取密钥” 即可。然后记录下自己的APP_ID、API_KEY、SECRET_KEY,就可以开始了。

调用AipOcr库识别表格文字

from aip import AipOcr #导入AipOcr模块,用于做文字识别APP_ID = '*********' # 你申请的
API_KEY = '*********'# 你申请的
SECRET_KEY = '*********'# 你申请的
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

选择的图片为某化学方程式表(来源于网络)

以二进制方式打开图片,读取:

file = "表格图片\\化学方程式表.jpg"
pic = open(file,'rb') #以二进制方式打开图片
img = pic.read() #读取
table = client.tableRecognitionAsync(img)    #调用表格识别模块
print(table)

然后调用表格识别模块tableRecognitionAsync(),并将返回值存入变量table中并查看:

table是一个字典,其中有2个键,一个叫result,一个叫log_id。我们需要的是result中的request_id,可以通过如下语句获取:

request_id = table['result'][0]['request_id']
request_id


通过这个ID,可以获取识别完成后所保存的Excel表格的下载地址。将request_id传入getTableRecognitionResult()就能获取结果。

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

打印一下结果result,就能看到下面的内容。其中result_data对应的那个网址就是Excel表格的下载地址。

调用webbrowser库使用webbrowser.open(url)语句自动打开网址进行下载:

url = result['result']['result_data']import webbrowser # 打开浏览器
webbrowser.open(url)

参考资料:Python 通过浏览器 打开指定网址

识别结果如下:

这个Excel文件有6张工作表,具体包含与图片中表格内容的对应关系如下。body储存表格部分的内容,header储存表头的文字,footer储存表尾的文字。

识别效果并非完美,但是整体看来还行,当然,原稿越清晰,识别效果越好。

可能遇到的问题

在开始前,需要检查图片的大小,必须在1K~4M之间,不然会报错“‘error_msg’: ‘image size error, image is too big or too small, upper limit 4M, lower limit 1k, please check your param’”。

批量操作

先获取所有图片的路径,存入pictures列表。结果如下。

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

然后将所有图片逐个传入表格识别接口,获取其请求ID及存有识别结果的Excel文件的下载地址。在提取Excel下载路径之前,需要先判断识别是否完成。这是通过识别结果返回的字典中的’ret_msg’对应的值来判断的。只有当它是“已完成”时,才能获得下载链接。此处用了while循环,每隔2秒刷新一下状态,直到状态是“已完成”时,才提取链接。然后使用requests.get()获取下载链接信息,写入Excel文件。Excel自动命名及下载结果如图。

from aip import AipOcr  #导入AipOcr模块,用于做文字识别
import time #时间模块
import requests #用于HTTP请求APP_ID = '24800359' # 你申请的
API_KEY = 'PrmTtmrqkeaqhvxOPEN4eZVt'# 你申请的
SECRET_KEY = 'LOFpCH6wpLV7xZPG0DTcvV4x1Sqyvmk9'# 你申请的
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开放平台 调用glob库 调用AipOcr库识别文字 可能会遇到的问题 批量操作 简介 Python免费调用百度 ...

  2. python调用百度AI提取图片文字

    python本身也有识别图片转文字的框架,但是相比调用接口,识别的精度就略显不行了: 这是 百度AI 的网站: https://ai.baidu.com/ ; 点击右上角的 控制台 ,申请或者登陆: ...

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

    python调用百度AI识别文字和表格 获取账户信息 1.需要先注册百度AI,获得ID和密钥.百度AI社区关于注册的详细说明:https://ai.baidu.com/forum/topic/show ...

  4. python利用百度AI进行图片识别与分类

    python利用百度AI进行图片识别与分类 声明 此博客纯属记录我学习的过程,是本人的一次大作业,如果程序中有问题或者有更好的实现方法希望各位前辈多多指点 背景 大多数人的相册都是乱七八糟的,动物的照 ...

  5. 小福利,通过python利用百度ai实现图片识别

    大家好,我是天空之城,今天给大家带来小福利,通过python利用百度ai实现图片识别.有兴趣加qq群,纯学习,1098016198. 至于api接口的APP_ID ,API_KEY ,SECRECT_ ...

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

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

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

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

  8. 调用百度AI平台API进行文字识别和图片识别

    写在前面 这应该是本年度的最后一篇技术博客了,今年在CSDN上总共发表了20篇博客,除掉几篇LeetCode的博客,都是个人工作的总结,总体来说,收获不少,随手记录的习惯也养成了.希望来年持之以恒. ...

  9. Python调用百度AI接口用以实现在线语音合成 并创建简单的GUI界面 生成可执行应用程序

    调用百度AI接口用以实现在线语音合成 并创建简单的GUI界面 生成可执行应用程序 1. 实验环境 Python3.8.Pycharm.window10 2.实验过程 1.首先登陆百度智能云:https ...

最新文章

  1. python中Json、os、sys、hashlib等内置模块
  2. 《Go语言圣经》学习笔记 第八章 Groroutines和Channels
  3. 我的 atom 开发工具
  4. Spring之RMI 远程方法调用 (Remote Method Invocation)
  5. 用python做数学题_「文山玩Python做测试」用python做算术题,很简单
  6. Spring异步切面源码解析
  7. 在R中使用Primer3和NCBI-BLAST进行高通量引物设计
  8. CAD2007输出高清图片
  9. 喜忧参半的电子烟 究竟是不是一个靠谱的创业机会?
  10. 基于边缘计算网关的PLC设备远程监控系统
  11. S32K144烧写程序记录
  12. 分享一款老照片修复神器
  13. 单机版swarm安装
  14. 不锈钢常识 - Powered by Discuz!
  15. 关于AES:加密方式,让你的APK无懈可击(1),死磕原理
  16. 《Linux运维总结:安装OpenEuler20.03系统时卡在Reached target Basic System》
  17. howler.js_Howler.js可能是周围最好JavaScript音频库
  18. 客户案例|AI如何助力快消行业降本增效
  19. L1-059 敲笨钟(分数 20)
  20. c++ SFML 获取ftp某个目录下所有的文件或者文件夹

热门文章

  1. C语言最大公约数和最小公倍数(辗转相除法)
  2. 怎么恢复三星全智能手机数据
  3. C语言 位运算符详解 (使用二进制实例深入学习理解位运算符使用原理)
  4. Sa-token SSO单点登录机制【源码】
  5. 【redis-02】redis的五种数据类型和对应的操作方法,补充RedisUtil模板
  6. source命令用法
  7. intentfilter匹配规则
  8. 克莱因瓶在现实中为什么不存在
  9. 电脑重启bootmgr_bootmgr丢失如何解决
  10. 几种典型的重介质选煤工艺