目录
1、 首先进入百度AI开放平台,注册百度智能云账号,进入控制台并创建应用
1.1、 登录百度AI开放平台
百度AI开放平台:https://ai.baidu.com
该平台也可直接用百度账号进行登录
1.2、 进入控制台-文字识别
进入控制台后可选择该平台提供的服务,可以看到,该平台为我们提供了文字识别,语音识别,人脸识别等多种服务,这里我们以文字识别为例,选中文字识别,即可进入控制台概览。
1.3、 创建应用
在控制台概览中,我们可以看台平台提示的操作指引,我们按照顺序,首先去领取相应的免费资源,可以用作个人测试使用。
已经完成个人认证的我们,每月有一定次数的限额,完全可以满足个人小规模的专业性识别需求。如果需要更多,可以购买更多服务。
初次使用,需要创建应用,创建应用时需要填写相关信息,全部填写完毕即可创建应用。
创建应用后,可以在文字识别控制台公有云服务中的应用列表查看相关信息,创建成功后会生成唯一AppID、API Key、Secret Key等秘钥,是调用baidu-aip接口的重要信息
1.4、 查看帮助文档
可以查看帮助文档来使用相关API,接下来我们以使用通用场景文字识别为例,演示如何使用python的baidu-aip
帮助文档:https://cloud.baidu.com/doc/OCR/s/Ck3h7y2ia
2、python下载baidu-aip库
该库在使用时只需要导入aip,但该库全名为baidu-aip,不少人在此处会安装错误
pip install baidu-aip -i https://pypi.tuna.tsinghua.edu.cn/simple
除此之外,在pycharm等IDE也可以搜索再下载。
3、两种方式调用api发送请求,获取文字识别结果
3.1、 通过AipOcr交互
3.1.1、 新建AipOcr
AipOcr是OCR的Python SDK客户端,为使用OCR的开发人员提供了一系列的交互方法。
参考如下代码新建一个AipOcr:
from aip import AipOcr
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
3.1.2、 配置AipOcr
如果用户需要配置AipOcr的网络请求参数(一般不需要配置),可以在构造AipOcr之后调用接口设置参数,目前只支持以下参数:
接口 | 说明 |
setConnectionTimeoutInMillis | 建立连接的超时时间(单位:毫秒 |
setSocketTimeoutInMillis | 通过打开的连接传输数据的超时时间(单位:毫秒) |
3.1.3、 用户向服务请求识别某张图中的所有文字。
通过AipOcr对象调用请求服务方法,相关方法名可前往接口文档查看
接口说明:https://cloud.baidu.com/doc/OCR/s/7kibizyfm
# 设置可选参数
options = {}
options["language_type"] = "CHN_ENG"
options["detect_direction"] = "true"
options["detect_language"] = "true"
options["probability"] = "true"
# 调用通用文字识别(标准版),返回值是一个字典
res_image = client.basicGeneral(image, options)
res_url = client.basicGeneralUrl(url, options)
res_pdf = client.basicGeneralPdf(pdf_file, options)
3.1.4、 识别结果
调用相关方法后的返回值是一个字典,可以通过相应属性名,获取所需的属性值
测试用图:
# 识别网络图片
url = "https://img.zcool.cn/community/01a7195d65df7ca8012187f435d2b7.jpg@1280w_1l_2o_100sh.jpg"
# 标准版
res_url = client.basicGeneralUrl(url)
# 高精度版
# res_url = client.accurateUrl(url)
# 返回一个字典
for keys, values in res_url.items():
print(keys, ":", values)
3.2、 向API服务地址发送网络请求
3.2.1、 Access Token获取
Access_token必须通过API Key和Secret Key获取
注意:access_token的有效期为30天,需要每30天进行定期更换;
import requests
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
# Access_token必须通过API Key和Secret Key获取
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + API_KEY + '&client_secret=' + SECRET_KEY
response = requests.get(host)
access_token = response.json()["access_token"]
3.2.2、 向API服务地址使用POST发送请求
向API服务地址使用POST发送请求,必须在URL中带上参数:access_token
同样可以设置请求参数,来得到所需数据
# 通用识别 高精度 网络地址
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
# 带上参数 access_token
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
# 参数设置
url = "https://img.zcool.cn/community/01a7195d65df7ca8012187f435d2b7.jpg@1280w_1l_2o_100sh.jpg"
params = {"url": url, "language_type": "ENG"}
# 返回一个requests.models.Response类型数据
result = requests.post(request_url, data=params, headers=headers)
3.2.3、 识别结果
服务返回一个Response类型数据,可通过json方法,返回一个字典,通过属性名获得所需属性值
if result:
for keys, values in result.json().items():
print(keys, ":", values)
4、 其它
4.1、通用文字识别 请求参数详情
参数 | 类型 | 可选值范围 | 说明 |
image/ url/pdf_file 【必选且三选一】 | string | 图像数据,base64编码后进行urlencode 图片完整url,url长度不超过1024字节 PDF文件,base64编码后进行urlencode | 要求对应图片base64编码和urlencode后大小不超过4M,最短边至少15px,最长边最大4096px |
pdf_file_num | string | – | 需要识别的PDF文件的对应页码,当 pdf_file 参数有效时,识别传入页码的对应页面内容,若不传入,则默认识别第 1 页 |
language_type | string | CHN_ENG:中英文混合、ENG:英文、JAP:日语、KOR:韩语、FRE:法语、SPA:西班牙语、POR:葡萄牙语、GER:德语、ITA:意大利语、 RUS:俄语 | 识别语言类型,默认为CHN_ENG |
detect_direction | string | true:检测朝向; | 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。 |
detect_language | string | true/false | 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语) |
paragraph | string | true/false | 是否输出段落信息 |
probability | string | true/false | 是否返回识别结果中每一行的置信度 |
4.2、 通用文字识别 返回数据参数详情
字段 | 是否必选 | 类型 | 说明 |
direction | 否 | int32 | 图像方向,当 detect_direction=true 时返回该字段。 |
log_id | 是 | uint64 | 唯一的log id,用于问题定位 |
words_result_num | 是 | uint32 | 识别结果数,表示words_result的元素个数 |
words_result | 是 | array[] | 识别结果数组 |
+ words | 否 | string | 识别结果字符串 |
+ probability | 否 | object | 识别结果中每一行的置信度值,包含average:行置信度平均值,variance:行置信度方差,min:行置信度最小值,当 probability=true 时返回该字段 |
paragraphs_result | 否 | array[] | 段落检测结果,当 paragraph=true 时返回该字段 |
+ words_result_idx | 否 | array[] | 一个段落包含的行序号,当 paragraph=true 时返回该字段 |
language | 否 | int32 | 当 detect_language=true 时返回该字段 |
pdf_file_size | 否 | string | 传入PDF文件的总页数,当 pdf_file 参数有效时返回该字段 |
文章出处登录后可见!