百度OCR通用文字识别的使用

目录


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
优先级: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 参数有效时返回该字段

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年6月4日
下一篇 2023年6月4日

相关推荐