Nodejs調(diào)用百度身份證認(rèn)證API

在簡(jiǎn)書(shū)這一個(gè)月不可發(fā)布文章的期間抵赢,我漸漸喜歡上掘金這個(gè)軟件闹瞧。掘金里面很多技術(shù)性的文章绑雄,寫(xiě)的也很好。但是我發(fā)現(xiàn)奥邮,之間一些自己遇到的問(wèn)題并不能很好的讓別人瀏覽到万牺。所以轉(zhuǎn)幾篇踩坑文章。
今天給大家分享一下洽腺,這幾天調(diào)用身份證認(rèn)證API的流程脚粟。在此是使用nodejs寫(xiě)的后臺(tái)。

前提

1.我們需要使用是百度的API蘸朋,你就必須有一個(gè)百度智能云的賬號(hào)核无。直接百度可能找不到!在此藕坯,附上網(wǎng)址鏈接:https://login.bce.baidu.com<br >
2.注冊(cè)在此不過(guò)多贅述团南,登錄成功后跳轉(zhuǎn)到如下界面:

image

  1. 點(diǎn)擊產(chǎn)品服務(wù)-人工智能-文字識(shí)別。


    image
  2. 點(diǎn)擊進(jìn)入如下界面炼彪。


    image
  3. 因?yàn)槲乙呀?jīng)創(chuàng)建了一個(gè)應(yīng)用吐根,在此,大家可以點(diǎn)擊創(chuàng)建應(yīng)用辐马,填寫(xiě)以下名稱拷橘,一切默認(rèn),點(diǎn)擊立即創(chuàng)建即可喜爷。


    image
  4. 在你的應(yīng)用列表里就會(huì)出現(xiàn)一個(gè)應(yīng)用冗疮。在接下來(lái)你要使用的AppID、Appkey贞奋、Secret Key都在此復(fù)制赌厅。


    image

安裝

  1. 我選擇的是Node-SDK安裝,再調(diào)用接口轿塔。安裝Node-SDK方法很多特愿,你可以到官網(wǎng)上去下載然后把你所需要的拖到自己的文件中仲墨,你也可以到GitHub上搜索下載。
  2. 我選擇的是直接在安裝好的node_modules基礎(chǔ)上揍障,直接輸入命令:npm install baidu-aip-sdk目养。

調(diào)用

  1. 我是直接使用npm命令導(dǎo)入baidu-aip-sdk模塊,所以毒嫡,在此之前默認(rèn)項(xiàng)目框架已經(jīng)搭建完好癌蚁。(采用MVC結(jié)構(gòu))目錄大致如下:


    image
  2. 為方便使用,就不在此再創(chuàng)建文件兜畸,在你所需要認(rèn)證的文件內(nèi)努释,直接新建對(duì)象。(我是在個(gè)人中心的應(yīng)用層中寫(xiě)入)咬摇。
  3. 在應(yīng)用層內(nèi)調(diào)用baidu-aip-sdk模塊伐蒂,設(shè)置APPID/AK/SK。以下步驟均在應(yīng)用層操作肛鹏。
var AipOcrClient = require("baidu-aip-sdk").ocr;

// 設(shè)置APPID/AK/SK
var APP_ID = "你的 App ID";
var API_KEY = "你的 Api Key";
var SECRET_KEY = "你的 Secret Key";

// 新建一個(gè)對(duì)象逸邦,建議只保存一個(gè)對(duì)象調(diào)用服務(wù)接口
var client = new AipOcrClient(APP_ID, API_KEY, SECRET_KEY);

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

// 設(shè)置request庫(kù)的一些參數(shù),例如代理服務(wù)地址在扰,超時(shí)時(shí)間等
// request參數(shù)請(qǐng)參考 https://github.com/request/request#requestoptions-callback
HttpClient.setRequestOptions({timeout: 5000});

// 也可以設(shè)置攔截每次請(qǐng)求(設(shè)置攔截后缕减,調(diào)用的setRequestOptions設(shè)置的參數(shù)將不生效),
// 可以按需修改request參數(shù)(無(wú)論是否修改,必須返回函數(shù)調(diào)用參數(shù))
// request參數(shù)請(qǐng)參考 https://github.com/request/request#requestoptions-callback
HttpClient.setRequestInterceptor(function(requestOptions) {
    // 查看參數(shù)
    console.log(requestOptions)
    // 修改參數(shù)
    requestOptions.timeout = 5000;
    // 返回參數(shù)
    return requestOptions;
});
  1. 上傳身份證正面芒珠。首先需要完成能夠上傳圖片的基礎(chǔ)上桥狡,再進(jìn)行身份證識(shí)別。上傳圖片路由妓局、應(yīng)用層:
//router文件
router.post('/idCardFront', function(req, res, next) {
        userController.idCardFront(req, res)
    })
    
//controllerse文件
 idCardFront: function(req, res) {
        var form = new formidable.IncomingForm() //創(chuàng)建上傳表單對(duì)象
        form.uploadDir = path.join(__dirname, '..', '/public/idCard') //設(shè)置上傳文件的路徑
        form.keepExtensions = true //設(shè)置保留上傳文件的擴(kuò)展名
        form.parse(req, function(err, fields, files) {
            if (err) {
                res.send('頭像上傳錯(cuò)誤总放!')
            }
            console.log('...................')
                //fields是上傳的表單字段數(shù)組呈宇,files是上傳的文件列表
                // console.log(files)
                //保存圖片路徑到數(shù)據(jù)庫(kù)
                //1.獲取當(dāng)前用戶編號(hào)
            let userId = req.user[0].base_info_Id
                //2.獲取當(dāng)前用戶的圖片名稱
            let headPic = path.parse(files.file.path).base
                // console.log('jpg格式:' + headPic)
                // console.log(files.file.path)
                res.json({ code: 200, data:headPic, msg: '身份證上傳成功好爬!審核通過(guò)!' })
        })
    }

  1. 在識(shí)別身份證之前甥啄,需要將你存在服務(wù)器的圖片讀取并以base64格式顯示存炮。
//讀取服務(wù)器文件,以base64顯示
            let filePath = files.file.path
            let bitmap = fs.readFileSync(filePath);
            let image = Buffer.from(bitmap, 'binary').toString('base64');
  1. 調(diào)用百度接口蜈漓。
 client.idcard(image, idCardSide).then(function(result) {
                results = JSON.stringify(result)
                 console.log(results)
                var id = {}
            res.json({ code: 200, data: results, msg:'身份證上傳成功穆桂!審核通過(guò)!' })
            }).catch(function(err) {
                // 如果發(fā)生網(wǎng)絡(luò)錯(cuò)誤
                console.log(err);
                res.json({ code: 200, msg: '身份證上傳成功融虽!審核不通過(guò)享完!' })
            });

7.運(yùn)行postman,傳入圖片有额,進(jìn)行身份證識(shí)別般又。


image
image

可以在服務(wù)器看到身份證上的信息代表認(rèn)證成功彼绷!在此附上標(biāo)準(zhǔn)認(rèn)證成功返回的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": "南京市江寧區(qū)弘景大道3889號(hào)"
        },
        "公民身份號(hào)碼": {
            "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
}

這樣,身份認(rèn)證就完成啦茴迁!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寄悯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子堕义,更是在濱河造成了極大的恐慌猜旬,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倦卖,死亡現(xiàn)場(chǎng)離奇詭異洒擦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)怕膛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)秘遏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嘉竟,你說(shuō)我怎么就攤上這事邦危。” “怎么了舍扰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵倦蚪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我边苹,道長(zhǎng)陵且,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任个束,我火速辦了婚禮慕购,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茬底。我一直安慰自己沪悲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布阱表。 她就那樣靜靜地躺著殿如,像睡著了一般。 火紅的嫁衣襯著肌膚如雪最爬。 梳的紋絲不亂的頭發(fā)上涉馁,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音爱致,去河邊找鬼烤送。 笑死,一個(gè)胖子當(dāng)著我的面吹牛糠悯,可吹牛的內(nèi)容都是我干的帮坚。 我是一名探鬼主播牢裳,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼叶沛!你這毒婦竟也來(lái)了蒲讯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灰署,失蹤者是張志新(化名)和其女友劉穎判帮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體溉箕,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晦墙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肴茄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晌畅。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖寡痰,靈堂內(nèi)的尸體忽然破棺而出抗楔,到底是詐尸還是另有隱情,我是刑警寧澤拦坠,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布连躏,位于F島的核電站,受9級(jí)特大地震影響贞滨,放射性物質(zhì)發(fā)生泄漏入热。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一晓铆、第九天 我趴在偏房一處隱蔽的房頂上張望勺良。 院中可真熱鬧,春花似錦骄噪、人聲如沸尚困。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尾组。三九已至忙芒,卻和暖如春示弓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呵萨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工奏属, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人潮峦。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓囱皿,卻偏偏與公主長(zhǎng)得像勇婴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘱腥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容