美文网首页
自助柜机前端开发【身份证、人脸】

自助柜机前端开发【身份证、人脸】

作者: 找不到昵称来绑定了 | 来源:发表于2021-07-08 13:58 被阅读0次

背景需求:自助查询柜机开发,访客来大厅验证时,使用身份证查询、人脸验证功能。在此记录一下各个环节所使用的方法。

身份证读卡器

  • 身份证读卡器硬件使用的是神思二代身份证验证机具 SS628(100)+100, 根据型号在官网上查找到对应的驱动程序和使用demo。
    官网下载地址
  • 拿到demo后,确认了身份证读取相关操作是由ActiveX控件完成的,前端只需要调用ActiveX控件提供的方法即可,而这也决定了我们的项目代码只能运行在IE上。(顺便吐槽一下:6年前遇到身份证读卡器时,是由ActiveX控件来实现,而在6年后IE已经不维护的今天,还在使用ActiveX来实现)
  • 接下来就是安装相关驱动程序及代码部分了。以下是身份证读卡器相关代码(基于Vue):
    template部分:
      <OBJECT
          ref="rdcard"
          classid="clsid:F1317711-6BDE-4658-ABAA-39E31D3704D3"
          codebase="SDRdCard.cab#version=2,0,1,0"
          width=0
          height=0
          align=center
          hspace=0
          vspace=0
          id=idcard
          name=rdcard
      >
      </OBJECT>

script部分:
其中this.readIDShensi()方法是身份证读卡器读取身份证信息成功后的回调方法

    init(){
      this.rdcard = document.getElementById("idcard")
      this.rdcard.openport()  // 打开机具
      const read = this.rdcard.ReadCard2()  //开始自动读卡
      if(read === 0){
        console.log('开始读卡成功')
      }else this.$message.error('读卡失败')
      document.getElementById('idcard').addEventListener("Readed", this.readIDShensi);
      document.getElementById('idcard').attachEvent("Readed", this.readIDShensi);
    },

人脸拍照

  • 在做人脸检测时走了一些弯路,在此也记录一下。首先是没搞清楚必须基于IE开发,导致我在使用navigator.mediaDevice调用摄像头+canvas截图实现人脸相关功能后才发现IE不兼容的问题。

  • 发现IE不兼容后,又走了一些弯路,试图在不修改代码的情况下,通过一些其他的办法来实现兼容IE:

    1. 360浏览器可以使用兼容模式
      360官网是这么写的:
      360兼容模式
      但这条路是走不通的,无论在项目中如何修改meta,这个meta在一开始index.html加载时就已被360读取并加载了,后期无论如何在项目中修改meta,也无法再修改360加载时的模式了。
      在【360浏览器选项-高级设置-内核设置-内核切换设置】中发现360的兼容模式设置,的确是精确到域名级别而无法精确到url级别
      360兼容模式配置
    2. 去谷歌应用商店下载IE tab插件
      IE tab插件可以精准配置到url级别对页面判断使用IE,还是使用chrome。在试用后完美解决了我的需求,在身份证页面使用IE内核,在摄像头页面使用chrome内核。只是有个问题,当我去Hide the IE Tab address bar时,发现此项功能需要付费,否则全屏时页面最上端会出现一个小横条。这样的用户体验对于柜机用户来说是无法接受的,所以我只好另寻办法。
      IE tab配置url判断规则
  • 最终只好使用IE了。在IE上调用摄像头并播放视频需要使用到flash player, webcamjs内部swf文件帮你实现这一部分了。
    Webcam实现在IE上的调用摄像头+拍照上传的功能,当然你也可以使用canvas截图来实现拍照功能,只是webcam已经提供拍照功能了,不必多此一举。 很简单,clone下来看看里面的调用demo就知道如何使用了。pixlcore官网也有详细的在线demo演示,和如何使用的介绍。以下是相关调用代码(基于Vue
    index.html引入(注意将webcam.swf也放到webcam.js所在目录下:):

<script src="webcam.js"></script>

template部分

      <div class="video-box">
        <div id="my_camera"></div>
        <canvas id="canvas"></canvas>
      </div>

script部分

    // 初始化Webcam配置
    init(){
      Webcam.set({
        width: 460,
        height: 542,
        image_format: 'jpeg',
        jpeg_quality: 90
      });
      Webcam.attach('#my_camera');
      ......
    },
    // 截图处理
    drawImage() {
      Webcam.snap(function (dataurl) {
        ...截图返回base64字符串处理逻辑
      });
    },
  • 另一插曲:人脸检测是由后端封装阿里云人脸检测接口实现,但由于该接口收费。产品让我找找使用前端的库来实现人脸检测,减少接口调用次数从而减少项目成本。使用trakingjs可以解决这个问题,官网:trackingjs 源码: 当我在chrome调试完成后,发现它不兼容IE。

其他

项目中还用到了指纹、打印热敏小票功能:

  • 管供应商要到指纹仪型号zkteco Live10r后,发现它只有c++ 和 java文档,所以指纹相关调用部分就只有与后端的逻辑交互了。
  • 打印功能能使用Clodop插件,Clodop自定义样式打印,且提供了丰富的调用接口。关于Clodop打印,网上有很多的相关使用资料,在此不再赘述。

虽然在这个项目中走了一些弯路,但是有时候,恰好是那些弯路,让自己获取到了更多的知识,扩宽了自己解决问题的思路。即便是在解决问题的过程中经历了挣扎、怀疑、烦躁的不良情绪,但解决完问题如释重负的那刻,我相信这也是每位开发者最喜欢的时刻。

相关文章

  • 自助柜机前端开发【身份证、人脸】

    背景需求:自助查询柜机开发,访客来大厅验证时,使用身份证查询、人脸验证功能。在此记录一下各个环节所使用的方法。 身...

  • 2021年8月10日

    昨天给丁丁办理了第二张身份证,是在自助柜机上办理的。感受了一把高科技的服务!真好! 今天,我打了二价的宫颈癌疫苗。...

  • 人脸识别解决了什么问题?

    日前,我们去银行办理业务,使用的自助机,身份证识别完成后常常还需要人脸识别,那这个人脸识别的作用又是什么呢?接下来...

  • android基于虹软的人脸识别+测温+道闸项目实现

    前言: 最近应防疫要求,开发一套人脸识别+腕部测温+身份证+健康码通行的道闸项目,人脸识别采用的是虹软人脸识别算法...

  • 小程序提交审核不通过原因及解决方法

    1.你的小程序人脸识别功能涉及采集、存储用户生物特征,包括但不限于人脸照片、人脸视频、身份证加手持身份证和身份证照...

  • 风情万种

    晚饭后,去自助图书馆还书。 一位叔叔拿着纸笔扑在自助柜机上笔录着什么。 我以为是图书馆工作人员...

  • 一款牛逼的Android端身份证(二代证)合成工具

    简介 做物联网设备软件开发时,设备端一般都有读取身份证的模块,比如银行自助终端,图书馆自助终端,而从硬件端读取身份...

  • 人脸识别 -- 活体检测(张嘴摇头识别)

    一:简介 最近项目在做了身份证银行卡识别之后,开始实现人脸识别和活体识别,其中人脸识别包括人脸入库、人脸查找、人脸...

  • Android开发带身份证人脸框拍照

    先看下效果图: 主要是接入百度的人脸认证的ocr 如果你不用识别出照片上的姓名和身份证号,可以单独拷它相框代码出来...

  • 前端公众号实现人脸识别验证

    人脸识别只需要前端配合后端去做就行了主要流程: 1、前端先获取到人脸识别的地址 一般由后端提供接口,前端调用接口...

网友评论

      本文标题:自助柜机前端开发【身份证、人脸】

      本文链接:https://www.haomeiwen.com/subject/mxmzultx.html