Android | 教你如何在安卓上實現二代身份證識別,一鍵實名認證
@
前言
就在近期華為HMS ML Kit 發佈了1.0.3.30版本,ML Kit在原有通用OCR功能的基礎上,又新增了銀行卡識別(BCR)和二代身份證識別(ICR)。今天小編就給大家介紹一下其中的ICR能力。ML kit不僅提供語言相關的AI能力,還提供視覺方向的AI能力,具體信息大家可以移步//developer.huawei.com/consumer/cn/hms/huawei-mlkit
場景
作為一個有身份的人,進行身份認證自然不可避免。平時,我們買火車票、飛機票需要身份認證,住酒店、住賓館需要身份認證,現在連打遊戲都要做實名認證。雖然我們很樂意證明我們自己的身份,但是每次都要輸入那18位長的要命的身份證號,腦子一點不清晰,手一抖就會出錯。因此,使用二代身份證識別(ICR)掃描身份證,做身份信息的錄入實在是相當方便。
旅遊出行類app進行身份認證
遊戲類app進行身份認證
任何需要進行身份認證的app,發揮你的想像力_
現在是不是躍躍欲試,想要自己開發實現啦?那我就廢話不多說,給大家介紹一下簡單集成的ML kit 實現ICR的步驟~~
開發前準備
android studio 安裝
很簡單,下載安裝即可。具體下載鏈接:
Android studio 官網下載鏈接://developer.android.com/studio
Android studio安裝流程參考鏈接://www.cnblogs.com/xiadewang/p/7820377.html
在項目級gradle里添加華為maven倉
打開AndroidStudio項目級build.gradle文件
增量添加如下maven地址:
buildscript {
repositories {
maven {url '//developer.huawei.com/repo/'}
}
}
allprojects {
repositories {
maven { url '//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" />
代碼開發關鍵步驟
在開發時可以通過三種方式進行集成開發,分別為:使用識別插件進行視頻流身份證識別、設備側身份證識別以及雲側身份證識別。在這裡我們主要介紹使用識別插件進行視頻流身份證識別的開發步驟,如果大家對另外兩種集成方式感興趣,可以參照華為開發者聯盟開發步驟://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是識別身份證正反兩面的關鍵信息,效果如下:
往期鏈接:快應用、快服務、服務直達…這些到底是啥玩意
內容來源://developer.huawei.com/consumer/cn/forum/topicview?tid=0201226149614940020&fid=18
原作者:littlewhite