Nodejs调用百度身份证认证API

在简书这一个月不可发布文章的期间,我渐渐喜欢上掘金这个软件。掘金里面很多技术性的文章,写的也很好。但是我发现,之间一些自己遇到的问题并不能很好的让别人浏览到。所以转几篇踩坑文章。
今天给大家分享一下,这几天调用身份证认证API的流程。在此是使用nodejs写的后台。

前提

1.我们需要使用是百度的API,你就必须有一个百度智能云的账号。直接百度可能找不到!在此,附上网址链接:https://login.bce.baidu.com<br >
2.注册在此不过多赘述,登录成功后跳转到如下界面:

image

  1. 点击产品服务-人工智能-文字识别。


    image
  2. 点击进入如下界面。


    image
  3. 因为我已经创建了一个应用,在此,大家可以点击创建应用,填写以下名称,一切默认,点击立即创建即可。


    image
  4. 在你的应用列表里就会出现一个应用。在接下来你要使用的AppID、Appkey、Secret Key都在此复制。


    image

安装

  1. 我选择的是Node-SDK安装,再调用接口。安装Node-SDK方法很多,你可以到官网上去下载然后把你所需要的拖到自己的文件中,你也可以到GitHub上搜索下载。
  2. 我选择的是直接在安装好的node_modules基础上,直接输入命令:npm install baidu-aip-sdk

调用

  1. 我是直接使用npm命令导入baidu-aip-sdk模块,所以,在此之前默认项目框架已经搭建完好。(采用MVC结构)目录大致如下:


    image
  2. 为方便使用,就不在此再创建文件,在你所需要认证的文件内,直接新建对象。(我是在个人中心的应用层中写入)。
  3. 在应用层内调用baidu-aip-sdk模块,设置APPID/AK/SK。以下步骤均在应用层操作。
var AipOcrClient = require("baidu-aip-sdk").ocr;

// 设置APPID/AK/SK
var APP_ID = "你的 App ID";
var API_KEY = "你的 Api Key";
var SECRET_KEY = "你的 Secret Key";

// 新建一个对象,建议只保存一个对象调用服务接口
var client = new AipOcrClient(APP_ID, API_KEY, SECRET_KEY);

var HttpClient = require("baidu-aip-sdk").HttpClient;

// 设置request库的一些参数,例如代理服务地址,超时时间等
// request参数请参考 https://github.com/request/request#requestoptions-callback
HttpClient.setRequestOptions({timeout: 5000});

// 也可以设置拦截每次请求(设置拦截后,调用的setRequestOptions设置的参数将不生效),
// 可以按需修改request参数(无论是否修改,必须返回函数调用参数)
// request参数请参考 https://github.com/request/request#requestoptions-callback
HttpClient.setRequestInterceptor(function(requestOptions) {
    // 查看参数
    console.log(requestOptions)
    // 修改参数
    requestOptions.timeout = 5000;
    // 返回参数
    return requestOptions;
});
  1. 上传身份证正面。首先需要完成能够上传图片的基础上,再进行身份证识别。上传图片路由、应用层:
//router文件
router.post('/idCardFront', function(req, res, next) {
        userController.idCardFront(req, res)
    })
    
//controllerse文件
 idCardFront: function(req, res) {
        var form = new formidable.IncomingForm() //创建上传表单对象
        form.uploadDir = path.join(__dirname, '..', '/public/idCard') //设置上传文件的路径
        form.keepExtensions = true //设置保留上传文件的扩展名
        form.parse(req, function(err, fields, files) {
            if (err) {
                res.send('头像上传错误!')
            }
            console.log('...................')
                //fields是上传的表单字段数组,files是上传的文件列表
                // console.log(files)
                //保存图片路径到数据库
                //1.获取当前用户编号
            let userId = req.user[0].base_info_Id
                //2.获取当前用户的图片名称
            let headPic = path.parse(files.file.path).base
                // console.log('jpg格式:' + headPic)
                // console.log(files.file.path)
                res.json({ code: 200, data:headPic, msg: '身份证上传成功!审核通过!' })
        })
    }

  1. 在识别身份证之前,需要将你存在服务器的图片读取并以base64格式显示。
//读取服务器文件,以base64显示
            let filePath = files.file.path
            let bitmap = fs.readFileSync(filePath);
            let image = Buffer.from(bitmap, 'binary').toString('base64');
  1. 调用百度接口。
 client.idcard(image, idCardSide).then(function(result) {
                results = JSON.stringify(result)
                 console.log(results)
                var id = {}
            res.json({ code: 200, data: results, msg:'身份证上传成功!审核通过!' })
            }).catch(function(err) {
                // 如果发生网络错误
                console.log(err);
                res.json({ code: 200, msg: '身份证上传成功!审核不通过!' })
            });

7.运行postman,传入图片,进行身份证识别。


image
image

可以在服务器看到身份证上的信息代表认证成功!在此附上标准认证成功返回的json格式:

{
    "log_id": 2648325511,
    "direction": 0,
    "image_status": "normal",
    "idcard_type": "normal",
    "edit_tool": "Adobe Photoshop CS3 Windows",
    "words_result": {
        "住址": {
            "location": {
                "left": 267,
                "top": 453,
                "width": 459,
                "height": 99
            },
            "words": "南京市江宁区弘景大道3889号"
        },
        "公民身份号码": {
            "location": {
                "left": 443,
                "top": 681,
                "width": 589,
                "height": 45
            },
            "words": "330881199904173914"
        },
        "出生": {
            "location": {
                "left": 270,
                "top": 355,
                "width": 357,
                "height": 45
            },
            "words": "19990417"
        },
        "姓名": {
            "location": {
                "left": 267,
                "top": 176,
                "width": 152,
                "height": 50
            },
            "words": "伍云龙"
        },
        "性别": {
            "location": {
                "left": 269,
                "top": 262,
                "width": 33,
                "height": 52
            },
            "words": "男"
        },
        "民族": {
            "location": {
                "left": 492,
                "top": 279,
                "width": 30,
                "height": 37
            },
            "words": "汉"
        }
    },
    "words_result_num": 6
}

这样,身份认证就完成啦!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容