前言
小編前面幾期文章分別給大家介紹了使用HMS ML Kit SDK實現(xiàn)微笑抓拍笼裳、證件照DIY唯卖、拍照翻譯的功能開發(fā)(鏈接見文章末尾),本次小編給大家?guī)淼氖鞘褂肏MS 機器學習服務(ML Kit)銀行卡識別SDK躬柬,一鍵實現(xiàn)銀行卡識別與綁定功能拜轨。
銀行卡識別的應用場景
介紹開發(fā)步驟前,我們先來談談銀行卡識別的具體應用場景允青,銀行APP橄碾、移動支付、繳費類APP、電商類APP或者其它帶支付功能的APP在使用過程中往往會遇到如下常見的幾個應用場景:
· 綁卡支付
常用于支付類APP法牲,或者帶支付功能的APP史汗,用來綁定信用卡、銀聯(lián)借記卡拒垃,提供在線支付功能
· 轉賬匯款
常用于銀行或者支付類APP停撞,用來給本行或者他行用戶進行轉賬。
· 實名認證悼瓮、身份審核
比如社交類APP戈毒,通過銀行卡關聯(lián)的身份信息完成快速的實名認證、身份審核等操作横堡。
不管是綁卡埋市、轉賬匯款還是身份審核,涉及到銀行卡操作的都會遇到一個關鍵的步驟命贴,錄入銀行卡信息道宅,如銀行卡號、有效期等套么;由于銀行卡號碼往往較長培己,手工錄入很容易出錯,而且手工錄入卡號信息胚泌,操作繁瑣省咨,使用體驗不佳;借助HMS ML Kit 銀行卡專用識別能力玷室,則可以輕松應對以上場景零蓉,快速、精準的錄入銀行卡信息穷缤,改善用戶使用體驗敌蜂。
如何使用華為銀行卡識別服務
銀行卡識別服務可以將銀行卡信息通過視頻流方式輸入,得到圖像中銀行卡的卡號津肛、有效期等重要文本信息章喉。該服務配合身份證識別,可以為用戶提供實名認證身坐、身份審核秸脱、卡號錄入等實用功能,降低輸入成本部蛇,為用戶提供更加友好的操作體驗摊唇。
銀行卡識別提供處理插件。開發(fā)者可以集成銀行卡識別插件涯鲁,無需實現(xiàn)相機視頻流數(shù)據的處理巷查,從而實現(xiàn)銀行卡識別能力的快速集成有序。
集成銀行卡識別服務關鍵流程
起界面獲取結果就可以完成卡號的識別。
開發(fā)實戰(zhàn)
1 開發(fā)準備
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 代碼開發(fā)關鍵步驟
2.1 創(chuàng)建識別結果回調函數(shù)
重載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(){
// 用戶取消處理云芦。
}
// 識別不到任何文字信息或識別過程發(fā)生系統(tǒng)異常的回調方法。
// retCode:錯誤碼贸桶。
// bitmap:檢測失敗的卡證圖片舅逸。
@Override
public void onFailure(int retCode, Bitmap bitmap){
// 識別異常處理。
}
@Override
public void onDenied(){
// 相機不支持等場景處理皇筛。
} };
2.2 設置識別參數(shù)琉历,調用識別器captureFrame接口進行識別,識別結果會通過步驟2.1的回調函數(shù)返回水醋。
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中定義的方法撮弧,實現(xiàn)銀行卡識別。
@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