百度云接口应用示例

1. 接口介绍

百度云地址:点我访问

百度云上提供了多种的接口服务,包括语音识别、人体识别、人脸识别、文字识别、图像识别、图像搜索等,并且提供了大量的免费接口额度,一般是每天提供几百次的免费额度,我们以文字识别为例,百度云提供了如下接口:

API名称

QPS(每秒请求数)

调用量限制

通用文字识别(标准版)

2

50000次/天免费

通用文字识别(标准含位置版)

2

500次/天免费

通用文字识别(高精度版)

2

500次/天免费

通用文字识别(高精度含位置版)

2

50次/天免费

网络图片文字识别

2

500次/天免费

身份证识别

2

500次/天免费

银行卡识别

2

500次/天免费

驾驶证识别

2

200次/天免费

行驶证识别

2

200次/天免费

营业执照识别

2

200次/天免费

车牌识别

2

200次/天免费

表格文字识别-提交请求

1

50次/天免费

表格文字识别-获取结果

1

无限制

通用票据识别

2

200次/天免费

iOCR通用版(创建自定义识别模板)

2

免费1000次

二维码识别

2

免费1000次

手写文字识别

2

50次/天免费

护照识别

2

免费500次

增值税发票识别

2

500次/天免费

数字识别

2

200次/天免费

名片识别

2

500次/天免费

火车票识别

2

50次/天免费

出租车票识别

2

50次/天免费

VIN码识别

2

免费1000次

定额发票识别

2

500次/天免费

出生证明识别

2

200次/天免费

户口本识别

2

200次/天免费

港澳通行证识别

2

200次/天免费

台湾通行证识别

2

200次/天免费

iOCR财会版

2

免费2000次

行程单识别

2

免费500次

车辆合格证识别

2

200次/天免费

保险单识别

2

免费500次

机动车销售发票识别

2

免费500次

公式识别

2

免费1000次

仪器仪表盘读数识别

2

免费1000次

文档版面分析与识别

2

免费1000次

网络图片文字识别(含位置版)

2

免费1000次

当然,如果有额外的次数需求,或者需要超过每秒2次的并发,百度云也支持付费增购,价格是非常实惠的。

2. 开发准备

  • 注册百度云账号在百度云控制台中创建应用,得到API Key和Secret Key!

  • 开发语言我们选择Python,安装下列库
pip install pillow
  • 服务器1台用来重新封装接口

3. 代码示例

代码示例中,我们使用百度云的 通用文字识别(标准版) 接口,文档地址:点我查看

import datetime
import requests
import warnings
from flask import Flask,request
import json
import base64
from PIL import Image
from io import BytesIO

warnings.filterwarnings("ignore")

# 百度云上应用的API Key
client_id = "xxxxx"

# 百度云上应用的Secret Key
client_secret = "xxxxx"


# 定义一个类,用来每2小时更新access_token
class setup:

    def __init__(self):
        self.t0 = ''
        self.gettoken()

    def timecheck(self):
        self.t1 = datetime.datetime.now()
        self.total_interval_time = (self.t1 - self.t0).total_seconds()
        if self.total_interval_time > 2592000:
            self.gettoken()

    def gettoken(self):
        self.url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
        self.token = requests.get(self.url, data='', headers='', verify=False)
        self.token = self.token.json()
        self.token = self.token['access_token']
        self.t1 = datetime.datetime.now()
        self.t0 = self.t1

    def s(self):
        self.timecheck()
        return self.token

# 定义一个函数,将简道云传过来的URL格式图片转为Base64编码
def download_img(img_url):
    header={}
    r = requests.get(img_url, headers=header, stream=True)
    image = Image.open(BytesIO(r.content)) 
    img_64 = base64.b64encode(BytesIO(r.content).read())
    return img_64

# 定义一个函数,调用百度云的通用文字识别(标准版),来获取数据
def img_ocr(img_url):
    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"
    img = download_img(img_url)
    params = {"image":img}
    access_token = token_
    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:
        return response.json()


# 实例化Flask类
app = Flask(__name__)

# 定义一个接口,用来和简道云前端事件进行交互
# 简道云表单上的图片控件发送值变动,触发事件传入数据至接口
# 简道云传入 {"image_url":xxx}
# 接口返回 {"words_result":xxx}

@app.route('/ocr', methods=['POST'])
def hello_world():
    image_url = json.loads(request.data).get('image_url')
    if image_url != '':
        ocr_data = img_ocr(image_url)
        words_result = ""
        #由于百度云识别的隔行数据分布在不同的数组里面,我们稍微处理下
        for each in ocr_data['words_result']:
            words_result = words_result + each['words'] + '\n'
        return json.dumps({"words_result":words_result})
    else:
        return json.dumps({"words_result":"无内容"})


if __name__ == '__main__':
    # 程序开始时,实例化我们定义的类
    init = setup()
    # 每2小时更新access_token
    token_ = init.s()
    app.run(host='0.0.0.0',port=10000)

4. 前端事件配置

建立1个前端事件:

URL配置:

Header/Body设置:

返回值设置:

文档内容是否对您有帮助?
有帮助
没帮助没帮助
如需获取即时帮助,请联系技术支持
咨询
扫码领取100+零代码资料简道云官方微信号400-111-0890
图标在线咨询
立即体验