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
优先级
:image > url > pdf_file
请注意关闭URL防盗链
|
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:不检测朝向。
|
是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。
|
detect_language
|
string
|
true/false
|
是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)
|
paragraph
|
string
|
true/false
|
是否输出段落信息
|
probability
|
string
|
true/false
|
是否返回识别结果中每一行的置信度
|
4.2、 通用文字识别 返回数据参数详情
字段
|
是否必选
|
类型
|
说明
|
direction
|
否
|
int32
|
图像方向,当 detect_direction=true 时返回该字段。
- - 1:未定义,
- 0:正向,
- 1:逆时针90度,
- 2:逆时针180度,
- 3:逆时针270度
|
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 参数有效时返回该字段
|