如何使用HUAWEI ML Kit实现银行卡识别

一般信息



在之前的文章中,我们讨论了如何使用HUAWEI ML Kit创建微笑检测功能和用于文档照片的小程序。在本文中,我将向您展示如何实现银行卡识别功能,以便用户可以以最少的时间花费链接银行卡。







银行卡识别功能的目的



在开始开发之前,让我们看一下银行卡识别功能的作用。它与具有支付功能的应用程序(例如银行应用程序和在线商店)最相关。这些应用程序通常具有一些共同的要求:



  • 链接银行卡


用户可以链接其银行卡以进行快速的在线支付。



  • 银行转帐


用户可以在同一家银行的帐户之间或不同银行之间进行转帐。



  • 实名认证和身份验证


用户可以使用其真实姓名快速进行身份验证,并根据其银行卡信息验证其身份。



要使用每个选项,用户必须输入其银行卡详细信息,包括卡号和有效期。您当然知道,在手动输入数据时很容易犯错误并浪费大量时间。但是,借助HUAWEI ML Kit银行卡识别服务,用户将能够快速无误地输入数据。



银行卡识别服务的应用



银行卡识别服务使相机可以识别银行卡并读取密钥数据,例如卡号和有效期。在ID识别服务的支持下,它提供了许多受欢迎的功能,例如身份验证和信用卡号输入。







我们提供了一个银行卡识别插件,您可以将其集成以在您的应用程序中使用此服务。该插件将为您处理相机数据。



开发开始



1.准备



将1.1 Huawei的Maven存储库添加到项目级别

的文件build.gradle在Android Studio项目的根文件夹中打开build.gradle文件,并添加Maven存储库的地址。



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


1.2将SDK依赖项添加到应用程序级文件build.gradle



dependencies{  
  implementation 'com.huawei.hms:ml-computer-vision-bcr:1.0.3.303' 
  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启用自动将应用程序更新为最新模型



从HUAWEI AppGallery下载后,要让您的应用程序自动更新机器学习模型,请将以下数据添加到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 ,onFailureonDenied函数



  • onSuccess:识别完成后调用。MLBcrCaptureResult显示识别结果。


  • onCanceled:如果用户取消识别,则调用。


  • onFailure:识别失败时调用。


  • onDenied:如果由于任何原因(例如,相机不可用)而拒绝了识别请求,则调用。


private MLBcrCapture.Callback callback = new MLBcrCapture.Callback() { 
    @Override 
    public void onSuccess(MLBcrCaptureResult bankCardResult){ 
    }  
    @Override 
    public void onCanceled(){ 
    }   
    @Override 
    public void onFailure(int retCode, Bitmap bitmap){ 
    } 
    @Override 
    public void onDenied(){ 
    }   };


2.2设置识别器的captureFrame API调用的识别参数识别

数据由2.1中创建的回调函数返回。



private void startCaptureActivity(MLBcrCapture.Callback callback) { 
    MLBcrCaptureConfig config = new MLBcrCaptureConfig.Factory()  
        .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; 
    } }


自己尝试



让我们看一下银行卡识别功能的工作原理。







资源



我们已将源代码上传到GitHub,请随时进行更改。

github.com/HMS-Core/hms-ml-demo

您可以访问更多详细信息,请



参见MLKit-Sample \ module-text \ src \ main \ java \ com \ mlkit \ sample \ activity \中的识别银行卡的示例代码。 BankCardRecognitionActivity.java。

请访问我们的官方网站了解详细信息。



新例子



我们将与您分享HUAWEI ML Kit的其他有用功能。敬请关注!



All Articles