目录
1、 首先进入百度AI开放平台,注册百度智能云账号,进入控制台并创建应用
1.1、 登录百度AI开放平台
1.2、 进入控制台-文字识别
1.3、 创建应用
1.4、 查看帮助文档
2、python下载baidu-aip库
3、两种方式调用api发送请求,获取文字识别结果
3.1、 通过AipOcr交互
3.1.1、 新建AipOcr
3.1.2、 配置AipOcr
3.1.3、 用户向服务请求识别某张图中的所有文字。
3.1.4、 识别结果
3.2、 向API服务地址发送网络请求
3.2.1、 Access Token获取
3.2.2、 向API服务地址使用POST发送请求
3.2.3、 识别结果
4、 其它
4.1、通用文字识别 请求参数详情
4.2 通用文字识别 返回数据参数详情
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文章来源:https://uudwc.com/A/dk6M |
传入PDF文件的总页数,当 pdf_file 参数有效时返回该字段文章来源地址https://uudwc.com/A/dk6M |