就在近期華爲HMS ML Kit 發佈了1.0.3.30版本,ML Kit在原有通用OCR功能的基礎上,又新增了銀行卡識別(BCR)和二代身份證識別(ICR)。今天小編就給你們介紹一下其中的ICR能力。ML kit不只提供語言相關的AI能力,還提供視覺方向的AI能力,具體信息你們能夠移步developer.huawei.com/consumer/cn…html
做爲一個有身份的人,進行身份認證天然不可避免。平時,咱們買火車票、飛機票須要身份認證,住酒店、住賓館須要身份認證,如今連打遊戲都要作實名認證。雖然咱們很樂意證實咱們本身的身份,可是每次都要輸入那18位長的要命的身份證號,腦子一點不清晰,手一抖就會出錯。所以,使用二代身份證識別(ICR)掃描身份證,作身份信息的錄入實在是至關方便。java
旅遊出行類app進行身份認證android
遊戲類app進行身份認證網絡
任何須要進行身份認證的app,發揮你的想象力^_^app
如今是否是躍躍欲試,想要本身開發實現啦?那我就廢話很少說,給你們介紹一下簡單集成的ML kit 實現ICR的步驟~~機器學習
很簡單,下載安裝便可。具體下載連接:maven
Android studio 官網下載連接:developer.android.com/studioide
Android studio安裝流程參考連接:www.cnblogs.com/xiadewang/p…函數
打開AndroidStudio項目級build.gradle文件post
buildscript {
repositories {
maven {url 'http://developer.huawei.com/repo/'}
}
}
allprojects {
repositories {
maven { url 'http://developer.huawei.com/repo/'}
}
}
複製代碼
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文件中:
<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>
複製代碼
<!--相機權限-->
<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…
識別結果回調函數,重載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是識別身份證正反兩面的關鍵信息,效果以下:
內容來源:developer.huawei.com/consumer/cn…
原做者:littlewhite