Python调用百度云API识别表格识别
- 1.首先我们展示一下效果
- 识别样板
- 识别效果
- 2.好嘞,我们开始(这个调用接口和别的API不一样,他需要用requests库请求三次)
- 我们先去创建一个属于我们的应用
- 之后我们去查看文档帮助
- 第一步我们获取access_token
- 在这里我把文件路径放在了函数里面,可以放在外面,也可以做一个循环,识别一个文件夹里面的所有图片。
- 第二步我们获取是否识别成功的json数据。
- 如果成功识别成功会给你一个request_id,用这个来获取excel表,也可以选择获取json数据(注意图片一点要转为base64编码,支持PNG、JPG、JPEG、BMP、TIFF、PNM、WebP)
- 第三步我们获取excel表。
- 如果你的result_type是excel,则会给你返回一个excel网页连接,如果是json,则会返回json数据
- 附上源代码
- 3. 最后大家也可以结合opencv库,调用摄像头,拍照识别然后转化为excel,来减少自己的工作量,尤其是对那些需要根据文件录入excel的事情,都可以简化它
1.首先我们展示一下效果
识别样板
识别效果
2.好嘞,我们开始(这个调用接口和别的API不一样,他需要用requests库请求三次)
我们先去创建一个属于我们的应用
之后我们去查看文档帮助
第一步我们获取access_token
在这里我把文件路径放在了函数里面,可以放在外面,也可以做一个循环,识别一个文件夹里面的所有图片。
```python
import requests
import json
import base64
import time
def get_access_token():
client_id = '你的apikey'
client_secret = '你的Secret Key'
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = '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).text
data = json.loads(response)
access_token = data['access_token']
return access_token
# 获取返回信息
``
第二步我们获取是否识别成功的json数据。
如果成功识别成功会给你一个request_id,用这个来获取excel表,也可以选择获取json数据(注意图片一点要转为base64编码,支持PNG、JPG、JPEG、BMP、TIFF、PNM、WebP)
#在这里我把文件路径放在了函数里面,可以放在外面,也可以做一个循环,识别一个文件夹里面的所有图片。
def get_info(access_token):
request_url = "https://aip.baidubce.com/rest/2.0/solution/v1/form_ocr/request"
# 二进制方式打开图片文件
f = open('你需要识别的文件', 'rb')
img = base64.b64encode(f.read())#base64编码
params = {"image": img}
request_url = request_url + "?access_token=" + access_token
headers = {'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
第三步我们获取excel表。
如果你的result_type是excel,则会给你返回一个excel网页连接,如果是json,则会返回json数据
def 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_token
res = 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).content
with open('识别结果.xls','wb+') as f:
f.write(excel_1)
print(info_1)
附上源代码
import requests
import json
import base64
import time
#获取access_token
def get_access_token():
client_id = '你的apikey'
client_secret = '你的Secret Key'
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = '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).text
data = 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('你的文件', 'rb')
img = base64.b64encode(f.read())#base64编码
params = {"image": img}
request_url = request_url + "?access_token=" + access_token
headers = {'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
# 获取excel
def 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_token
res = 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).content
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()
3. 最后大家也可以结合opencv库,调用摄像头,拍照识别然后转化为excel,来减少自己的工作量,尤其是对那些需要根据文件录入excel的事情,都可以简化它