Nodejs + Face++ 識別身份證照片

原由

由於有這樣一件事情,須要獲取身份證正面照中的姓名和身份證號,若是所有經過眼看手敲的話,很費事,並且浪費時間,當時能想若是能自動化執行就行了。node

實現

圖像識別Api

圖片識別暫時尚未接觸過,因此就去找了可以提供圖像識別的第三方應用,這邊我是用的是Face++shell

  • 登錄註冊並完善相關信息後,提供了AppKeyAppSecret來調用提供的Api
  • 在使用Postman簡單測試後,發現可行,post請求後,提供的接口會返回一組身份的信息JSON數據

Postman 是經過能強大的網頁調試與發送網頁HTTP請求,並能運行測試用例的的Chrome插件,如今提供了客戶端。只要在GUI界面裏,填寫相應的URl和數據,選擇相應的方法,POSTGETPUTDELETE,就可以將結果返回回來,不須要編寫代碼。官網連接npm

Nodejs實現

我是在mac的終端下開發的,若是是window環境系,部分命令不適用,須要替換合適的命令。json

  1. 目錄結構
/**
 * images 資源文件
 * package.json  執行npm init 後會自動生產
 * index.js 實現的邏輯文件
 */

- idCard
    - index.js
    - images
        - ***.jpg
        - ***.png
        - ....
    - package.json

複製代碼
  1. 安裝 shelljsnpm install shelljs 由於須要簡單的shell命令執行api

  2. index.js實現(比較簡單)bash

var shell = require('shelljs')
var images = shell.exec('ls ./images/*', {silent: true}).toString()
var arr = images.split('\n')

var api_key = 'xxx' // 本身申請的apikey
var api_secret = 'xxx' // 本身申請的api_secret
var result = []
for (var item in arr) {
    (function(item) {
        setTimeout(function() {
            var tmp = '@' + arr[item]
            if (tmp == '@') {
                return
            }
            var cmd = 'curl -X POST "https://api-cn.faceplusplus.com/cardpp/v1/ocridcard" -F "api_key="' + api_key +  '" -F "api_secret="' + api_secret + '" -F "image_file=' + tmp + '"'
            var res = shell.exec(cmd, {silent: true}).toString()
            result.push(res)

            if (item == arr.length - 2) {
                for (var index in result) {
                    var res = JSON.parse(result[index])
                    if (typeof res.cards == 'object') {
                       console.log(res.cards[0].name + ' ' + res.cards[0].id_card_number)
                    } else {
                        console.log(result[item])
                    }
                }
            }
        }, item * 1000)
    }(item))
}
複製代碼

爲何要寫成setTimeout,而不是直接執行?是由於若是一次請求過多,api接口會返回一個error_message,說當前接口請求過多,因此每次延時執行,保證不會丟失數據閉包

  • 執行node index,即會打印出姓名 + 身份證號

主要就是用到了閉包,很簡單=_=||curl

相關文章
相關標籤/搜索