菜单

使用Node.js调用百度智能云护照识别API

Post Info:
本文 955 字 浏览 阅读约 3 分钟

当统计护照信息时,如果没有读卡器也没有程序自动读取,每一个信息都靠手动录入,效率是很低的。

百度智能云提供了很多API,功能多种多样,在此我们以护照识别举例,看一下如何使用这些API。

在产品-人工智能-文字识别-卡片证照识别下,我们可以找到护照识别功能。

注册登录

第一步是注册或登录账号,并登录控制台

创建应用

  1. 登录管理控制台之后,在左侧产品服务找到人工智能-文字识别

  2. 在右侧点击创建应用

a). 输入应用名称,如passport;

b). 选择应用类型,根据你要使用的场景选择,我选择了工具应用;

c). 接口选择默认已经勾选护照识别,如果需要别的可以勾选;

d). 文字识别包名,可填入iOS或者Android包名,作为Web前端,这一步选择不需要;如果需要文字识别包,可到OCR-iOS-SDKOCR-Android-SDK等相关文档查看教程,然后此处填入需要的包名;

e). 应用描述,简单描述一下使用这个API要做什么事情。

然后创建即可。

获取Access Token

创建完成之后,点击管理应用,可以查看该应用的详情,此处的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天进行定期更换。

创建Node.js程序

根据官方文档,新建一个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-promisenpm i --save fs安装依赖。

使用node index.js运行,在控制台打印调用返回的结果。

额度

护照识别的免费调用额度200次/日,免费使用阶段,无付费功能,超过免费调用量后可以申请免费调额

参考资料

获取Access Token文档
护照识别接口文档
Node-SDK接口说明

- END -

目录