Android | 教你如何在安卓上實現二代身份證識別,一鍵實名認證

@html

前言

  就在近期華爲HMS ML Kit 發佈了1.0.3.30版本,ML Kit在原有通用OCR功能的基礎上,又新增了銀行卡識別(BCR)和二代身份證識別(ICR)。今天小編就給你們介紹一下其中的ICR能力。ML kit不只提供語言相關的AI能力,還提供視覺方向的AI能力,具體信息你們能夠移步https://developer.huawei.com/consumer/cn/hms/huawei-mlkitjava


場景

  做爲一個有身份的人,進行身份認證天然不可避免。平時,咱們買火車票、飛機票須要身份認證,住酒店、住賓館須要身份認證,如今連打遊戲都要作實名認證。雖然咱們很樂意證實咱們本身的身份,可是每次都要輸入那18位長的要命的身份證號,腦子一點不清晰,手一抖就會出錯。所以,使用二代身份證識別(ICR)掃描身份證,作身份信息的錄入實在是至關方便。android

  旅遊出行類app進行身份認證android-studio

  遊戲類app進行身份認證網絡

  任何須要進行身份認證的app,發揮你的想象力_app


  如今是否是躍躍欲試,想要本身開發實現啦?那我就廢話很少說,給你們介紹一下簡單集成的ML kit 實現ICR的步驟~~機器學習

開發前準備

android studio 安裝

  很簡單,下載安裝便可。具體下載連接:maven

  Android studio 官網下載連接:https://developer.android.com/studioide

  Android studio安裝流程參考連接:http://www.javashuo.com/article/p-wamzpmfl-bo.html函數

在項目級gradle裏添加華爲maven倉

  打開AndroidStudio項目級build.gradle文件

在這裏插入圖片描述
  增量添加以下maven地址:

buildscript {
   repositories {        
       maven {url 'http://developer.huawei.com/repo/'}
   }    
}
allprojects {
   repositories {      
       maven { url 'http://developer.huawei.com/repo/'}
   }
}

在應用級的build.gradle裏面加上SDK依賴

在這裏插入圖片描述

dependencies{  
 // 引入基礎SDK
 implementation 'com.huawei.hms:ml-computer-vision-icr:1.0.3.300'
 // 引入身份證識別plugin包
 implementation 'com.huawei.hms:ml-computer-card-icr-cn-plugin:1.0.3.315'
 // 引入身份證識別模型包
 implementation 'com.huawei.hms:ml-computer-card-icr-cn-model:1.0.3.315'
}

在AndroidManifest.xml文件裏面增量添加模型自動下載

  要使應用程序可以在用戶從華爲應用市場安裝您的應用程序後,自動將最新的機器學習模型更新到用戶設備,請將如下語句添加到該應用程序的AndroidManifest.xml文件中:

<manifest
   ...
   <meta-data              
       android:name="com.huawei.hms.ml.DEPENDENCY"  
       android:value= "icr"/>
       <!--If multiple models are required,set the parameter as follows:        
       android:value="object,ocr,face,label,icr,bcr,imgseg"-->  
   ...
</manifest>

在AndroidManifest.xml文件裏面申請相機、訪問網絡和存儲權限

<!--相機權限-->
<uses-permission android:name="android.permission.CAMERA" />
<!--使用網絡權限-->
<uses-permission android:name="android.permission.INTERNET" />
<!--寫權限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--讀權限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

代碼開發關鍵步驟

  在開發時能夠經過三種方式進行集成開發,分別爲:使用識別插件進行視頻流身份證識別、設備側身份證識別以及雲側身份證識別。在這裏咱們主要介紹使用識別插件進行視頻流身份證識別的開發步驟,若是你們對另外兩種集成方式感興趣,能夠參照華爲開發者聯盟開發步驟:https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/ml-icr-dev-4

建立識別結果回調函數

  識別結果回調函數,重載onSuccess, onCanceled, onFailure, onDenied四個方法;onSuccess 表示識別成功,MLCnIcrCaptureResult爲識別返回結果,onCanceled 表示用戶取消,onFailure 表示識別失敗,onDenied 表示相機不可用等場景。

private MLCnIcrCapture.Callback idCallback = new MLCnIcrCapture.Callback() {
   @Override
   public void onSuccess(MLCnIcrCaptureResult idCardResult){
       // 識別成功處理。
   }  
   @Override
   public void onCanceled(){
       // 用戶取消處理。
   }  
   // 識別不到任何文字信息或識別過程發生系統異常的回調方法。
   // retCode:錯誤碼。
   // bitmap:檢測失敗的身份證圖片。
   @Override
   public void onFailure(int retCode, Bitmap bitmap){
       // 識別異常處理。
   }
   @Override
   public void onDenied(){
       // 相機不支持等場景處理。
   }  
}

設置識別參數

  設置識別參數,調用識別器capture接口進行識別,識別結果會經過步驟1的回調函數返回。

private void startCaptureActivity(MLCnIcrCapture.Callback callback, boolean isFront, boolean isRemote) {
   MLCnIcrCaptureConfig config = new MLCnIcrCaptureConfig.Factory()
       // 設置識別身份證的正反面。
       // true:正面。
       // false:反面。
       .setFront(true)
       // 設置是否使用雲側能力進行識別。
       // true:雲側。
       // false:端側。
       .setRemote(false)
       .create();
   MLCnIcrCapture icrCapture = MLCnIcrCaptureFactory.getInstance().getIcrCapture(config);
   icrCapture.capture(callback, this);
}

實現身份識別

  在檢測按鈕的回調中,調用步驟2中定義的方法,實現身份證識別。

@Override
public void onClick(View v) {
   switch (v.getId()) {
       // 識別正面按鈕。
       case R.id.IDCard_image_front:
           startCaptureActivity(idCallback, true, false);
           break;
       // 識別背面按鈕。
       case R.id.IDCard_image_back:
           startCaptureActivity(idCallBack, false, false);
           break;
       default:
           break;
   }
}

Demo效果

  這個demo是識別身份證正反兩面的關鍵信息,效果以下:

在這裏插入圖片描述


往期連接:快應用、快服務、服務直達…這些究竟是啥玩意
內容來源:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201226149614940020&fid=18 原做者:littlewhite

相關文章
相關標籤/搜索