当统计护照信息时,如果没有读卡器也没有程序自动读取,每一个信息都靠手动录入,效率是很低的。
百度智能云提供了很多API,功能多种多样,在此我们以护照识别举例,看一下如何使用这些API。
在产品-人工智能-文字识别-卡片证照识别下,我们可以找到护照识别功能。
第一步是注册或登录账号,并登录控制台
a). 输入应用名称,如passport;
b). 选择应用类型,根据你要使用的场景选择,我选择了工具应用;
c). 接口选择默认已经勾选护照识别,如果需要别的可以勾选;
d). 文字识别包名,可填入iOS或者Android包名,作为Web前端,这一步选择不需要;如果需要文字识别包,可到OCR-iOS-SDK和OCR-Android-SDK等相关文档查看教程,然后此处填入需要的包名;
e). 应用描述,简单描述一下使用这个API要做什么事情。
然后创建即可。
创建完成之后,点击管理应用,可以查看该应用的详情,此处的API Key和Secret Key备用。
然后我们使用postman发送请求来获取Access Token:
向授权服务地址 https://aip.baidubce.com/oauth/2.0/token
发送请求(推荐使用POST),并在URL中带上以下参数:
grant_type: 必须参数,固定为client_credentials;
client_id: 必须参数,应用的API Key;
client_secret: 必须参数,应用的Secret Key;
例如:
https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pVw2&
示例来源官网,模仿它的示例,此处将client_id值为刚刚创建的应用的API Key,client_secret值为刚刚创建的应用的Secret Key,发送请求。
服务器返回的JSON文本参数如下:
access_token: 要获取的Access Token;
expires_in: Access Token的有效期(秒为单位,一般为1个月);
其他参数忽略,暂时不用;
例如:
{
"refresh_token": "25.b55fe1d287227ca97aab219bb249b8ab.315360000.1798284651.282335-8574074",
"expires_in": 2592000,
"scope": "public wise_adapt",
"session_key": "9mzdDZXu3dENdFZQurfg0Vz8slgSgvvOAUebNFzyzcpQ5EnbxbF+hfG9DQkpUVQdh4p6HbQcAiz5RmuBAja1JJGgIdJI",
"access_token": "24.6c5e1ff107f0e8bcef8c46d3424a0e78.2592000.1485516651.282335-8574074",
"session_secret": "dfac94a3489fe9fca7c3221cbf7525ff"
}
示例来源官网,返回的结果中,我们需要注意access_token和expires_in两个返回值,access_token是在调用识别护照API时需要的参数,expires_in为该Access Token的有效期,有效期为30天,需要每30天进行定期更换。
根据官方文档,新建一个index.js文件,复制下方代码,并根据注释修改access_token和要识别的图片路径imageUrl,保存文件。
var rp = require("request-promise");
var fs = require("fs");
var url = "https://aip.baidubce.com/rest/2.0/ocr/v1/passport"; // 识别护照API,无需修改
var access_token = "上一步获取到的的access_token"; // 填写上一步获取到的的access_token
var imageUrl = "./images/1.png"; // 护照图片路径,修改为需要识别的护照图片路径
var imageData = fs.readFileSync(imageUrl).toString("base64"); // 图像数据进行base64编码
rp.post(url, {
form: {
access_token: access_token,
image: imageData
}
})
.then(function(parsedBody) {
console.log(parsedBody) //打印识别结果,在此可对结果进行整理导出等处理
})
.catch(error => {
console.log(error);
});
使用npm i --save request-promise
和npm i --save fs
安装依赖。
使用node index.js
运行,在控制台打印调用返回的结果。
护照识别的免费调用额度200次/日,免费使用阶段,无付费功能,超过免费调用量后可以申请免费调额
- END -