2025年3月22日 星期六 甲辰(龙)年 月廿一 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

python+百度API识别图片中表格并保存到excel

时间:04-07来源:作者:点击数:62

简介

以图片形式的EXCEL表格为例,信息读取我们使用百度文字识别OCR来实现,百度接口提供了免费额度,基本满足日常使用,下面来具体看一下如何使用百度Excel识别。

准备工作

baidu-aip 安装

Python 版的 SDK 安装很简单

  • pip install baidu-aip

注册百度AI开放平台

创建应用需要一个百度或百度云账号,注册登录地址为:https://login.bce.baidu.com/

登录后将鼠标移到登录头像位置,在弹出菜单中点击用户中心

如图所示:

进入需选一下相应信息,如图所示:

选完之后点保存即可。

接着将鼠标移到左侧>符号位置,再选人工智能,点击文字识别,如图所示:

点击之后会进到如下所示图中:

现在,我们就可以点击创建应用了,之后进到如下所示图中:

从上图中我们可以看出百度文字识别OCR能够识别的信息类别非常多,也就是说不只是识别表格。

如果你有其他信息识别的需求也是可以通过它来快速实现的。

这里我们填一下应用名称应用描述,填完之后点立即创建即可。

创建完成后返回应用列表,如下图所示:

记下一下AppID&API Key&Secret Key这三个值,调用接口时使用。

代码实现

原始图片

处理后图片

导入所需模块

  • # 图片识别
  • from aip import AipOcr
  • # 时间模块
  • import time
  • # 网页获取
  • import requests
  • # 操作系统接口模块
  • import os

为了能够对图片进行批量处理,定义get_image(image_path)函数获取对应文件夹中所有图片。

  • # 获取文件夹中所有图片
  • def get_image(image_path):
  • images=[] # 存储文件夹内所有文件的路径(包括子目录内的文件)
  • for root, dirs, files in os.walk(work_path):
  • path = [os.path.join(root, name) for name in files]
  • images.extend(path)
  • return images

定义Image_Excel(APP_ID,API_KEY,SECRET_KEY)函数,获取图片中表格

  • def Image_Excel(APP_ID,API_KEY,SECRET_KEY):
  • # 调用百度AI接口
  • client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
  • # 循环遍历文件家中图片
  • images=get_image(image_path)
  • for image in images:
  • # 以二进制方式打开图片
  • img_open=open(image,'rb')
  • # 读取图片
  • img_read = img_open.read()
  • # 调用表格识别模块识别图片
  • table = client.tableRecognitionAsync(img_read)
  • # 获取请求ID
  • request_id = table['result'][0]['request_id']
  • #获取表格处理结果
  • result = client.getTableRecognitionResult(request_id)
  • # 处理状态是“已完成”,获取下载地址
  • while result['result']['ret_msg'] != '已完成':
  • time.sleep(2) # 暂停2秒再刷新
  • result = client.getTableRecognitionResult(request_id)
  • download_url = result['result']['result_data']
  • print(download_url)
  • # 获取表格数据
  • excel_data = requests.get(download_url)
  • # 根据图片名字命名表格名称
  • xlsx_name = image.split(".")[0] + ".xlsx"
  • # 新建excel文件
  • xlsx = open(xlsx_name, 'wb')
  • # 将数据写入excel文件并保存
  • xlsx.write(excel_data.content)

主函数定义

  • if __name__=='__main__':
  • image_path = input('请输入图片所在文件夹路径:')
  • APP_ID=input('APP_ID:')
  • API_KEY=input('API_KEY:')
  • SECRET_KEY=input('SECRET_KEY')
  • Image_Excel(APP_ID,API_KEY,SECRET_KEY)

总结

到此这篇关于Python调用百度AI实现图片表格识别功能的文章就介绍到这了。

注意

在开始前,需要检查图片的大小,必须在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
  • # 时间模块
  • import time
  • # 网页获取
  • import requests
  • # 操作系统接口模块
  • import os
  • image_path=''
  • # 获取文件夹中所有图片
  • def get_image():
  • images=[] # 存储文件夹内所有文件的路径(包括子目录内的文件)
  • for root, dirs, files in os.walk(image_path):
  • path = [os.path.join(root, name) for name in files]
  • images.extend(path)
  • return images
  • def Image_Excel(APP_ID,API_KEY,SECRET_KEY):
  • # 调用百度AI接口
  • client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
  • # 循环遍历文件家中图片
  • images=get_image()
  • for image in images:
  • # 以二进制方式打开图片
  • img_open=open(image,'rb')
  • # 读取图片
  • img_read = img_open.read()
  • # 调用表格识别模块识别图片
  • table = client.tableRecognitionAsync(img_read)
  • # 获取请求ID
  • request_id = table['result'][0]['request_id']
  • #获取表格处理结果
  • result = client.getTableRecognitionResult(request_id)
  • # 处理状态是“已完成”,获取下载地址
  • while result['result']['ret_msg'] != '已完成':
  • time.sleep(2) # 暂停2秒再刷新
  • result = client.getTableRecognitionResult(request_id)
  • download_url = result['result']['result_data']
  • print(download_url)
  • # 获取表格数据
  • excel_data = requests.get(download_url)
  • # 根据图片名字命名表格名称
  • xlsx_name = image.split(".")[0] + ".xls"
  • # 新建excel文件
  • xlsx = open(xlsx_name, 'wb')
  • # 将数据写入excel文件并保存
  • xlsx.write(excel_data.content)
  • if __name__=='__main__':
  • image_path = input('请输入图片所在文件夹路径:')
  • APP_ID=input('APP_ID:')
  • API_KEY=input('API_KEY:')
  • SECRET_KEY=input('SECRET_KEY:')
  • Image_Excel(APP_ID,API_KEY,SECRET_KEY)
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门