python调用百度ai将图片/pdf识别为表格excel

python调用百度ai将图片识别为表格excel

  • 表格文字识别(异步接口)
    • 图片转excel
  • 表格文字识别V2
    • 图片/pdf转excel通用

表格文字识别(异步接口)

图片转excel

百度ai官方文档:https://ai.baidu.com/ai-doc/OCR/Ik3h7y238
使用的是表格文字识别(异步接口),同步接口已经下线

在这里插入图片描述

import requests
import json
import base64
import time
'''
文档:https://ai.baidu.com/ai-doc/OCR/Ik3h7y238
'''# 获取access_token地址:https://console.bce.baidu.com/ai/#/ai/ocr/app/list
def get_access_token():client_id = "xxxxxxxxxxxxxxxxxx" # 你的apikeyclient_secret = "xxxxxxxxxxxxxxxxxxxxxx" # 你的Secret Keyhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}'.format(client_id, client_secret)response = requests.get(host).textdata = json.loads(response)access_token = data['access_token']return access_token# 获取识别结果
def get_info(access_token):request_url = "https://aip.baidubce.com/rest/2.0/solution/v1/form_ocr/request"# 二进制方式打开图片文件f = open('1.jpg', 'rb')img = base64.b64encode(f.read())  # base64编码params = {"image": img}request_url = request_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/x-www-form-urlencoded'}response = requests.post(request_url, data=params, headers=headers)# if response:#     print(response.json())data_1 = response.json()return data_1# 获取exceldef get_excel(requests_id, access_token):headers = {'content-type': 'application/x-www-form-urlencoded'}pargams = {'request_id': requests_id,'result_type': 'excel'}url = 'https://aip.baidubce.com/rest/2.0/solution/v1/form_ocr/get_request_result'url_all = url + "?access_token=" + access_tokenres = requests.post(url_all, headers=headers, params=pargams)  # 访问链接获取excel下载页info_1 = res.json()['result']['ret_msg']excel_url = res.json()['result']['result_data']excel_1 = requests.get(excel_url).contentprint(excel_1)with open('识别结果.xls', 'wb+') as f:f.write(excel_1)print(info_1)def main():print('正在处理中请稍后')access_token = get_access_token()data_1 = get_info(access_token)try:requests_id = data_1['result'][0]['request_id']if requests_id != '':print('识别完成')except:print('识别错误')print('正在获取excel')time.sleep(10)  # 延时十秒让网页图片转excel完毕,excel量多的话,转化会慢,可以延时长一点get_excel(requests_id, access_token)main()

表格文字识别V2

图片/pdf转excel通用

import requests
import json
import base64CLIENT_ID = "xxxxxxxxxxxxxxxxx"  # 你的apikey,需要修改
CLIENT_SECRET = "xxxxxxxxxxxxxxxxxxxxx"  # 你的Secret Key,需要修改# 获取access_token
def get_access_token():auth_url = 'https://aip.baidubce.com/oauth/2.0/token'params = {'grant_type': 'client_credentials','client_id': CLIENT_ID,'client_secret': CLIENT_SECRET,}response = requests.post(auth_url, data=params)data = response.json()access_token = data.get('access_token')if not access_token:raise "请输入正确的client_id 和 client_secret"return access_tokendef save_excel(b64_excel, excel_name):# 将base64编码的excel文件解码并保存为本地文件excel = base64.b64decode(b64_excel)with open(excel_name, 'wb') as f:f.write(excel)def to_excel(file_path, excel_name):access_token = get_access_token()request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/table"# 以二进制方式打开图片文件,并将其转换为base64编码with open(file_path, 'rb') as f:file = base64.b64encode(f.read())ext = file_path.split('.')[-1]if ext in ['jpg', 'jpeg', 'png', 'bmp']:# 图片格式data = {"image": file,"return_excel": 'true',}elif ext == 'pdf':# pdf格式data = {"pdf_file": file,"return_excel": 'true',}headers = {'content-type': 'application/x-www-form-urlencoded'}# 发送POST请求进行表格文字识别response = requests.post(request_url, params={'access_token': access_token}, data=data, headers=headers)if response.ok:data = response.json()# 将返回的excel文件保存到本地save_excel(data.get('excel_file', ''), excel_name)print('转换完成')else:print('转换失败')if __name__ == '__main__':img_path = '1.png'  # 要转换的图片文件名pdf_path = 'table.pdf'  # 要转换的pdf文件名to_excel(file_path=img_path, excel_name='out_pic.xlsx')  # 转换后的excel文件名to_excel(file_path=pdf_path, excel_name='out_pdf.xlsx')  # 转换后的excel文件名

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/13443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C#】微软的Roslyn 是个啥?

一、说明 Roslyn 是微软重写的C#编译器并开源。 Roslyn 是 C# 和 Visual Basic.NET 开源编译器的代号。以下是它如何在过去十年企业Microsoft的最黑暗中开始,并成为所有C#(和VB)的开源,跨平台,公共语言引擎&#xff0c…

springboot+mybatis-plus+vue+element+vant2实现短视频网站,模拟西瓜视频移动端

目录 一、前言 二、管理后台 1.登录 2.登录成功,进入欢迎页 ​编辑 3.视频分类管理 4. 视频标签管理 5.视频管理 6.评论管理 ​编辑 7.用户管理 8.字典管理 (类似于后端的枚举) 9.参数管理(富文本录入) 10.管…

Docker容器监控之 CAdvisor+InfluxDB+Granfana

通过docker stats命令可以很方便的看到当前宿主机上所有容器的CPU,内存以及网络流量等数据,一般小公司够用了。但是,docker stats统计结果只能是当前宿主机的全部容器,数据资料是实时的,没有地方存储、没有健康指标过线预警等功能…

VMware搭建Hadoop集群 for Windows(完整详细,实测可用)

目录 一、VMware 虚拟机安装 (1)虚拟机创建及配置 (2)创建工作文件夹 二、克隆虚拟机 三、配置虚拟机的网络 (1)虚拟网络配置 (2)配置虚拟机 主机名 (3&#xf…

(树) 剑指 Offer 26. 树的子结构 ——【Leetcode每日一题】

❓剑指 Offer 26. 树的子结构 难度:中等 输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。(约定空树不是任意一个树的子结构) B 是 A 的子结构, 即 A 中有出现和B相同的结构和节点值。 例如: 给定的树 A: 3/ \4 5/ \1 2给定的树 B&…

stable-diffusion-webui汉化教程

第一种方法 1.打开stable diffusion webui,进入"Extensions"选项卡 2.点击"Install from URL" 3、注意"URL for extension’s git repository"下方的输入框 4、填入地址:https://github.com/VinsonLaro/stable-diffus…

C++多线程编程(包含c++20内容)

C多线程编程(包含c20内容) 文章目录 C多线程编程(包含c20内容)线程通过函数指针创建线程通过函数对象创建线程通过lambda创建线程通过成员函数创建线程线程本地存储取消线程自动join线程从线程获得结果 原子操作库原子操作原子智能指针原子引用使用原子类型等待原子变量 互斥互…

[JAVAee]文件操作-IO

本文章讲述了通过java对文件进行IO操作 IO:input/output,输入/输出. 建议配合文章末尾实例食用 目录 文件 文件的管理 文件的路径 文件的分类 文件系统的操作 File类的构造方法 File的常用方法 文件内容的读写 FileInputStream读取文件 构造方法 常用方法 Scan…

平均列顺序对列排斥能的影响

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点,AB训练集各由5张二值化的图片组成,让A有6个1,B有4个1,并且让这10个1的位置没有重合。比较迭代次数的顺序。 其中有9组数据 差值结构 A-B 迭代次数 构造平均列 …

使用PyGWalker可视化分析表格型数据

大家好,可以想象一下在Jupyter Notebook中拥有大量数据,想要对其进行分析和可视化。PyGWalker就像一个神奇的工具,能让这项工作变得超级简单。它能获取用户的数据,并将其转化为一种特殊的表格,可以与之交互&#xff0c…

ES6 - promise.all和race方法的用法详解

文章目录 一、前言二、Promise.all()1,第一句:Promise.all()方法接受一个数组作为参数,且每一个都是 Promise 实例2,第二句:如果不是,就会先调Promise.resolve方法,将参数转为 Promise 实例再进…

pytorch的发展历史,与其他框架的联系

我一直是这样以为的:pytorch的底层实现是c(这一点没有问题,见下边的pytorch结构图),然后这个部分顺理成章的被命名为torch,并提供c接口,我们在python中常用的是带有python接口的,所以被称为pytorch。昨天无意中看到Torch是由lua语言写的&…

【如何训练一个中英翻译模型】LSTM机器翻译模型部署(三)

系列文章 【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码(一) 【如何训练一个中英翻译模型】LSTM机器翻译模型训练与保存(二) 【如何训练一个中英翻译模型】LSTM机器翻译模型部署(三) 【如何训…

Windows Server 2012 能使用的playwright版本

由于在harkua_bot里面使用到了playwright,我的服务器又是Windows Server 2012 R2,最新版playwright不支持Windows Server 2012 R2,支持Windows Server 2016以上,所以有了这个需求 https://cdn.npmmirror.com/binaries/playwright…

Hadoop生态体系-HDFS

目录标题 1、Apache Hadoop2、HDFS2.1 设计目标:2.2 特性:2.3 架构2.4 注意点2.5 HDFS基本操作2.5.1 shell命令选项2.5.2 shell常用命令介绍 3、HDFS基本原理3.1 NameNode 概述3.2 Datanode概述 1、Apache Hadoop Hadoop:允许使用简单的编程…

Android Hook 剪切板相关方法

想起之前做过的项目有安全合规要求:主动弹窗获取用户同意了才能调用剪切板相关方法,否则属于违规调用,如果是自己项目的相关调用可以自己加一层if判断 但是一些第三方的jar包里面也有在调用的话,我们就无能为力了,而且…

JPA连接达梦数据库导致auto-ddl失效问题解决

现象: 项目使用了JPA,并且auto-ddl设置的为update,在连接达梦数据库的时候,第一次启动没有问题,但是后面重启就会报错,发现错误为重复建表,也就是说已经建好的表没有检测到,…

JVM类加载

一、类记载过程 1、通过类的全限定名获取存储该类的class文件 2、解析成运行时数据,即instanceKlass实例,存放到方法区 3、在堆区生成该类的class对象,即instanceMirrorKlass实例 二、将.class文件解析成什么?类的元信息在JVM中如何…

ceph集群中RBD的性能测试、性能调优

文章目录 rados benchrbd bench-write测试工具Fio测试ceph rbd块设备的iops性能测试ceph rbd块设备的带宽测试ceph rbd块设备的延迟 性能调优 rados bench 参考:https://blog.csdn.net/Micha_Lu/article/details/126490260 rados bench为ceph自带的基准测试工具&am…

全加器(多位)的实现

一,半加器 定义 半加器(Half Adder)是一种用于执行二进制数相加的简单逻辑电路。它可以将两个输入位的和(Sum)和进位(Carry)计算出来。 半加器有两个输入:A 和 B,分别代表…