zoukankan      html  css  js  c++  java
  • 微信小程序接入百度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

  • 相关阅读:
    js总结:增加和减少文本框
    java总结:字符串切割
    Spring-----ioc
    Hibernate之二级缓存
    Hibernate之HQL
    Hibernate关联关系(一对多自关联 ,多对多)
    Hibernate关联关系(一对多)
    Hibernate之主键生成策略
    如何使用hibernate完成CRUD操作
    Struts2-----文件上传与拦截器原理
  • 原文地址:https://www.cnblogs.com/masterchd/p/12452005.html
Copyright © 2011-2022 走看看