微信小程序接入百度OCR(身份證識別)


微信小程序接入百度OCR(身份證識別)

1.接口描述

支持對二代居民身份證正反面所有8個字段進行結構化識別,包括姓名、性別、民族、出生日期、住址、身份證號、簽發機關、有效期限,識別准確率超過99%;同時支持身份證正面頭像檢測,並返回頭像切片的base64編碼及位置信息。

同時,支持對用戶上傳的身份證圖片進行圖像風險和質量檢測,可識別圖片是否為復印件或臨時身份證,是否被翻拍或編輯,是否存在正反顛倒、模糊、欠曝、過曝等質量問題。

請求示例

HTTP 方法:POST

請求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/idcard

URL參數:

參數
access_token 通過API Key和Secret Key獲取的access_token,參考“Access Token獲取

Header如下:

參數
Content-Type application/x-www-form-urlencoded

Body中放置請求參數,參數詳情如下:

請求參數

參數 是否必選 類型 可選值范圍 說明
image string - 圖像數據,base64編碼后進行urlencode,要求base64編碼和urlencode后大小不超過4M,最短邊至少15px,最長邊最大4096px,支持jpg/jpeg/png/bmp格式
id_card_side string front/back front:身份證含照片的一面;back:身份證帶國徽的一面
detect_direction string true/false 是否檢測圖像旋轉角度,默認檢測,即:true。朝向是指輸入圖像是正常方向、逆時針旋轉90/180/270度。可選值包括: - true:檢測旋轉角度; - false:不檢測旋轉角度。
detect_risk string true/false 是否開啟身份證風險類型(身份證復印件、臨時身份證、身份證翻拍、修改過的身份證)功能,默認不開啟,即:false。可選值:true-開啟;false-不開啟
detect_photo string true/false 是否檢測頭像內容,默認不檢測。可選值:true-檢測頭像並返回頭像的 base64 編碼及位置信息
detect_rectify string true/false 是否進行完整性校驗,默認為true,需上傳各字段內容完善的圖片方可識別;如果設置為false,則對於身份證切片(如僅身份證號區域)也可識別

2.小程序端調用

需要參數access_token,存放在雲數據庫中,並定時刷新,不明白如何獲取並定時刷新的參考文章:

[小程序開發技巧總結(三)-- 雲開發時效數據刷新和存儲 (access_token等)]

tips:核心部分是在本地完成base64 編碼

2.1 自定義文件 profunc.js,實現函數並封裝

function OcrIdCard(access_token){
  return new Promise(function(resolve,reject){
    var that = this;
    //識別身份證
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: function (res) {
        console.log(res.tempFilePaths)
          //核心代碼
        wx.getFileSystemManager().readFile({
          filePath: res.tempFilePaths[0],
          encoding: 'base64', //編碼格式
          success(ans) {
            // console.log(ans.data)
            wx.showLoading({ title: '識別中' })
            wx.request({
              url: 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=' + access_token,
              method: 'POST',
              header: {
                'Content-Type': 'application/x-www-form-urlencoded'
              },
              data: {
                image: ans.data,
                id_card_side: 'front'
              },
              success(_res) {
                wx.hideLoading();
                resolve(_res)
                
              }, fail(_res) {
                wx.hideLoading();
                wx.showToast({
                  title: '請求出錯',
                })
                reject(_res)
              }
            })
          }
        })
      }
    })
  })
}

module.exports = {
  OcrIdCard: OcrIdCard
}

2.2 在小程序頁面引用,需要傳入access_token

const cwx = require('profunc.js'); //在小程序頁面引入該js 文件
...
ocridcard(){
      var that = this;
      cwx.OcrIdCard(that.data.access_token).then(function(_res){
        var trdata = _res.data.words_result;
        console.log(trdata)
        that.setData({
          name: trdata['姓名'].words,
          idcard: trdata['公民身份號碼'].words,
          userloc: trdata['住址'].words
        })
    })      
}

3.效果展示

接口返回數據如下

小程序 Android Web 等開發歡迎聯系 QQ 1025584691


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM