超簡單整合華為 HMS MLKit 機器學習服務:銀行卡識別 SDK,一鍵實現銀行卡繫結

華為開發者論壇發表於2022-02-24

前言

小編前面幾期文章分別給大家介紹了使用 HMS ML Kit SDK 實現微笑抓拍、證件照 DIY、拍照翻譯的功能開發(連結見文章末尾),本次小編給大家帶來的是使用 HMS 機器學習服務(ML Kit)銀行卡識別 SDK,一鍵實現銀行卡識別與繫結功能。

超簡單整合華為 HMS MLKit 機器學習服務:銀行卡識別 SDK,一鍵實現銀行卡繫結

銀行卡識別的應用場景

介紹開發步驟前,我們先來談談銀行卡識別的具體應用場景,銀行 APP、移動支付、繳費類 APP、電商類 APP 或者其它帶支付功能的 APP 在使用過程中往往會遇到如下常見的幾個應用場景:

  • 綁卡支付
    常用於支付類APP,或者帶支付功能的APP,用來繫結信用卡、銀聯借記卡,提供線上支付功能
  • 轉賬匯款
    常用於銀行或者支付類APP,用來給本行或者他行使用者進行轉賬。
  • 實名認證、身份稽核
    比如社交類APP,通過銀行卡關聯的身份資訊完成快速的實名認證、身份稽核等操作。

不管是綁卡、轉賬匯款還是身份稽核,涉及到銀行卡操作的都會遇到一個關鍵的步驟,錄入銀行卡資訊,如銀行卡號、有效期等;由於銀行卡號碼往往較長,手工錄入很容易出錯,而且手工錄入卡號資訊,操作繁瑣,使用體驗不佳;藉助 HMS ML Kit 銀行卡專用識別能力,則可以輕鬆應對以上場景,快速、精準的錄入銀行卡資訊,改善使用者使用體驗。

如何使用華為銀行卡識別服務

銀行卡識別服務可以將銀行卡資訊通過視訊流方式輸入,得到影像中銀行卡的卡號、有效期等重要文字資訊。該服務配合身份證識別,可以為使用者提供實名認證、身份稽核、卡號錄入等實用功能,降低輸入成本,為使用者提供更加友好的操作體驗。

超簡單整合華為 HMS MLKit 機器學習服務:銀行卡識別 SDK,一鍵實現銀行卡繫結

銀行卡識別提供處理外掛。開發者可以整合銀行卡識別外掛,無需實現相機視訊流資料的處理,從而實現銀行卡識別能力的快速整合。

整合銀行卡識別服務關鍵流程

超簡單整合華為 HMS MLKit 機器學習服務:銀行卡識別 SDK,一鍵實現銀行卡繫結

由於華為提供了銀行卡識別外掛,開發者可以直接呼叫銀行卡外掛,因此開發步驟更加簡單了,僅僅需要拉起介面獲取結果就可以完成卡號的識別。

開發實戰

1 開發準備

1.1 在專案級 gradle 裡新增華為 maven 倉

開啟 AndroidStudio 專案級 build.gradle 檔案,增量新增如下 maven 地址:

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

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

dependencies {  
    // 引入基礎SDK 
    implementation 'com.huawei.hms:ml-computer-vision-bcr:1.0.3.303' 
    // 引入銀行卡識別plugin包 
    implementation 'com.huawei.hms:ml-computer-card-bcr-plugin:1.0.3.300' 
    // 引入銀行卡識別模型包 
    implementation 'com.huawei.hms:ml-computer-card-bcr-model:1.0.3.300' 
}

1.3 在 AndroidManifest.xml 檔案裡面增量新增模型自動下載

要使應用程式能夠在使用者從華為應用市場安裝您的應用程式後,自動將最新的機器學習模型更新到使用者裝置,請將以下語句新增到該應用程式的 AndroidManifest.xml 檔案中:

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

1.4 在 AndroidManifest.xml 檔案裡面申請相機和儲存許可權

<!--相機許可權-->
<uses-permission android:name="android.permission.CAMERA" /> 
<!--使用儲存許可權-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2 程式碼開發關鍵步驟

2.1 建立識別結果回撥函式

過載 onSuccess, onCanceled, onFailure, onDenied 四個方法;onSuccess 表示識別成功,MLBcrCaptureResult 為識別返回結果,onCanceled 表示使用者取消,onFailure 表示識別失敗,onDenied 表示相機不可用等場景。

private MLBcrCapture.Callback callback = new MLBcrCapture.Callback() { 
    @Override 
    public void onSuccess(MLBcrCaptureResult bankCardResult){ 
        // 識別成功處理。 
    }  
    @Override 
    public void onCanceled(){ 
        // 使用者取消處理。 
    }  
    // 識別不到任何文字資訊或識別過程發生系統異常的回撥方法。 
    // retCode:錯誤碼。 
    // bitmap:檢測失敗的卡證圖片。 
    @Override 
    public void onFailure(int retCode, Bitmap bitmap){ 
        // 識別異常處理。 
    } 
    @Override 
    public void onDenied(){ 
        // 相機不支援等場景處理。 
    }   
};

2.2 設定識別引數,呼叫識別器 captureFrame 介面進行識別,識別結果會通過步驟2.1的回撥函式返回。

private void startCaptureActivity(MLBcrCapture.Callback callback) { 
    MLBcrCaptureConfig config = new MLBcrCaptureConfig.Factory() 
         // 設定識別介面橫豎屏,支援三種模式: 
        // MLBcrCaptureConfig.ORIENTATION_AUTO: 自適應模式,由物理感應器決定顯示方向。 
        // MLBcrCaptureConfig.ORIENTATION_LANDSCAPE: 橫屏模式。 
        // MLBcrCaptureConfig.ORIENTATION_PORTRAIT: 豎屏模式。 
        .setOrientation(MLBcrCaptureConfig.ORIENTATION_AUTO) 
        .create(); 
    MLBcrCapture bankCapture = MLBcrCaptureFactory.getInstance().getBcrCapture(config); 
    bankCapture.captureFrame(this, callback); 
}

2.3 在檢測按鈕的回撥中,呼叫步驟2.2中定義的方法,實現銀行卡識別。

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
        // 檢測按鈕。 
        case R.id.detect: 
            startCaptureActivity(callback); 
            break; 
        default: 
            break; 
    } 
}

Demo效果

給大家看下 Demo 效果:

github原始碼

原始碼已經上傳 github,大家也可以在 github 上一起完善該功能。

github 原始碼地址:https://github.com/HMS-MLKit/HUAWEI-HMS-MLKit-Sample

銀行卡識別 demo 程式碼路徑:MLKit-Sample\module-text\src\main\java\com\mlkit\sample\activity\BankCardRecognitionActivity.java

更詳細的開發指南參考華為開發者聯盟官網

華為開發者聯盟機器學習服務開發指南

往期連結:

第一期:用華為 HMS MLKit SDK 三十分鐘在安卓上開發一個微笑抓拍神器

https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201198419687680377&fid=18

第二期:安卓開發實戰,用華為 HMS MLKit 影像分割 SDK 開發一個證件照 DIY 小程式

https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201203408959360433&fid=18

第三期:安卓開發實戰,用 HMS MLKit 華為機器學習服務開發一個拍照翻譯小程式

https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201209905778120045&fid=18

下期預告

基於華為機器學習服務,後面還會有一系列的實戰經驗分享,大家可以持續關注~

相關文章