Общая информация


В предыдущих статьях мы рассказали о том, как с помощью HUAWEI ML Kit создать функцию съемки при распознавании улыбки и апплет для фото на документы. В этой статье я покажу вам, как реализовать функцию распознавания банковских карт, чтобы пользователи могли привязать банковскую карту с минимальными затратами времени.



Назначение функции распознавания банковских карт


Прежде чем приступить к разработке, давайте рассмотрим, для чего нужна функция распознавания банковских карт. Она наиболее актуальна для приложений с функциями совершения платежей, таким как банковские приложения и онлайн-магазины. Эти приложения часто имеют ряд общих требований:

  • Привязка банковской карты

Пользователи могут привязать свои банковские карты для совершения быстрых онлайн-платежей.

  • Банковские переводы

Пользователи могут переводить деньги между счетами в одном банке или между разными банками.

  • Аутентификация по настоящему имени и подтверждение личности

Пользователи могут быстро пройти аутентификацию по настоящему имени и подтверждение личности на основе информации своих банковских карт.

Чтобы использовать каждую из этих возможностей, пользователь должен ввести данные своей банковской карты, включая номер карты и срок ее действия. Вы, конечно, знаете, что при ручном вводе данных легко допустить ошибки и потратить много времени. Но благодаря сервису распознавания банковских карт HUAWEI ML Kit пользователи смогут быстро и без ошибок вводить свои данные.

Применение сервиса распознавания банковских карт


Сервис распознавания банковских карт позволяет с помощью камеры распознавать банковские карты и считывать ключевые данные, такие как номер карты и срок действия. Благодаря поддержке сервиса распознавания удостоверения личности она предлагает ряд популярных функций, таких как подтверждение личности и ввод номера банковской карты.



Мы предлагаем плагин распознавания банковских карт, который вы сможете интегрировать, чтобы этот сервис стал доступным в вашем приложении. Плагин будет обрабатывать данные камеры за вас.

Начало разработки


1. Подготовка


1.1 Добавьте репозиторий Maven Huawei в файл на уровне проекта build.gradle
Откройте файл build.gradle в корневом каталоге вашего проекта Android Studio и добавьте адрес репозитория 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, onFailure и onDenied:

  • 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 Установите параметры распознавания для вызова API captureFrame распознавателя
Данные распознавания возвращаются за счет функции обратного вызова, созданной в пункте 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
More details you can visit

См. пример кода для распознавания банковских карт в разделе MLKit-Sample\module-text\src\main\java\com\mlkit\sample\activity\BankCardRecognitionActivity.java.
Для получения подробной информации перейдите на наш официальный веб-сайт.

Новые примеры


Мы будем делиться с вами другими полезными функциями HUAWEI ML Kit. Следите за обновлениями!