概要
以前の投稿では、HUAWEI ML Kitを使用してSmile-CameraとID用写真のDIYアプレットを実装する方法について検討しました。今回の投稿では、銀行カード認識機能の実装方法をご紹介します。この機能により、ユーザーは銀行カードを瞬時に紐付けることができます。
銀行カード認識の用途
開発に着手する前に、銀行カード認識機能の用途について確認しましょう。銀行アプリやeコマースアプリなど、支払い機能を備えたアプリに最適です。このようなアプリには、いくつか共通の要件がある場合が多いです。
- 銀行カードの紐付け
ユーザーは自分の銀行カードを紐付けて、オンライン決済を素早く行うことができます。
- 銀行振込
ユーザーは同一銀行内または異なる銀行の口座間でお金を振り込むことができます。
- 本名での認証とID確認
ユーザーは、自分の銀行カードに紐付けられた情報使用して、本名での認証とID確認を素早く実施できます。
このような機能ではそれぞれ、ユーザーはカード番号や有効期限など、銀行カード情報を入力する必要があります。当然、このような情報を手入力するのは時間がかかり、誤入力も発生しやすくなります。しかし、HUAWEI ML Kitの銀行カード認識サービスにより、ユーザーは情報を簡単かつ正確に入力できます。
銀行認識サービスの利用方法
銀行カード認識サービスは、カメラストリームで銀行カードを認識し、カード番号や有効期限など重要な情報を抽出します。このサービスはIDカード認識サービスと連携しており、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、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 認識機能の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 Recognitionボタンのコールバックで、2.2で定義したメソッドを呼び出す
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.detect:
startCaptureActivity(callback);
break;
default:
break;
} }
試してみましょう
ソースコード
ソースコードをGitHub にアップロードしているので、機能の向上など自由にお試しください。
銀行カード認識のデモコードはMLKit-Sample\module-text\src\main\java\com\mlkit\sample\activity\BankCardRecognitionActivity.javaをご覧ください。
詳しくは、当社の公式ウェブサイトをご覧ください。
近日公開予定
これからも、実用的な場面でのHUAWEI ML Kitの使用方法をお知らせしますので、ワクワクするような内容に是非ご注目ください。