##概要
以前の投稿では、HUAWEI ML Kitのカード認識機能を使用して、カードの紐付け機能を実装する方法をご紹介しました。この機能では、ユーザーはカードの写真を提供するだけで、後はアプリが重要な情報をすべて自動的に認識します。これによって、とても簡単にカード情報を入力できますが、請求書や割引クーポンでも同じことができるでしょうか?もちろん、できます。この投稿では、HUAWEI ML Kitのテキスト認識機能を使用して、請求書番号と割引コードの自動入力を実装する方法をご紹介します。
##用途
テキスト認識は、非常に多くの状況で役に立ちます。例えば、以下の請求書をスキャンして、請求書サービス番号が「NO.DE SERVICIO」で始まることを示し、文字数を12文字に制限すると、テキスト認識を使用して簡単に請求書サービス番号「123456789123」を取得できます。
同様に、下記の割引クーポンをスキャンして、割引コードが「FAVE-」で始まり、文字数を4文字に制限すると定義することにより、割引コード「8329」が得られ、支払いを完了できます。
とても便利でしょう?アプリに認識させる情報をカスタマイズすることもできます。
テキスト認識の統合
では、請求書番号と割引コードの処理方法を見ていきましょう。
1. 準備
必要な準備に関する詳細は、HUAWEI Developerをご覧ください。
ここでは、最も重要な手順だけお話します。
1.1 Mavenリポジトリアドレスをプロジェクトレベルのbuild.gradleファイルに設定する
buildscript {
repositories {
...
maven {url 'https://developer.huawei.com/repo/'}
}
}
dependencies {
...
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
}
allprojects {
repositories {
...
maven {url 'https://developer.huawei.com/repo/'}
}
}
1.2 設定をファイルヘッダーに追加する
SDKを統合した後、以下の設定をファイルヘッダーに追加します。
apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'
1.3 SDK依存関係をアプリレベルのbuild.gradleファイルに設定する
dependencies {
// Import the base SDK.
implementation 'com.huawei.hms:ml-computer-vision-ocr:2.0.1.300'
// Import the Latin character recognition model package.
implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:2.0.1.300'
// Import the Japanese and Korean character recognition model package.
implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:2.0.1.300'
// Import the Chinese and English character recognition model package.
implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:2.0.1.300'
}
1.4 機械学習モデルが自動的に更新されるよう、以下のステートメントをAndroidManifest.xmlファイルに追加する
<manifest>
...
<meta-data
android:name="com.huawei.hms.ml.DEPENDENCY"
android:value="ocr" />
...
</manifest>
1.5 カメラ権限を適用する
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
2.コードの開発
2.1 解析機能を作成する
MLTextAnalyzer analyzer = new MLTextAnalyzer.Factory(context).setLanguage(type).create();
2.2 認識結果プロセッサーを解析機能とバインドするよう設定する
analyzer.setTransactor(new OcrDetectorProcessor());
2.3 同期APIを呼び出す
SDKに含まれるLensEngineを使用して、オブジェクトの作成、解析機能の登録、カメラパラメータの初期化を行います。
lensEngine = new LensEngine.Creator(context, analyzer)
.setLensType(LensEngine.BACK_LENS)
.applyDisplayDimension(width, height)
.applyFps(30.0f)
.enableAutomaticFocus(true)
.create();
2.4 runメソッドを呼び出してカメラを起動し、カメラストリームを読み込んで認識する
try {
lensEngine.run(holder);
} catch (IOException e) {
// Exception handling logic.
Log.e("TAG", "e=" + e.getMessage());
}
2.5 必要に応じて認識結果を処理する
public class OcrDetectorProcessor implements MLAnalyzer.MLTransactor<MLText.Block> {
@Override
public void transactResult(MLAnalyzer.Result<MLText.Block> results) {
SparseArray<MLText.Block> items = results.getAnalyseList();
// Process the recognition result as required. Only the detection results are processed.
// Other detection-related APIs provided by ML Kit cannot be called.
…
}
@Override
public void destroy() {
// Callback method used to release resources when the detection ends.
}
}
2.6 検出が終了したら解析機能を停止し、検出リソースを解放する
if (analyzer != null) {
try {
analyzer.stop();
} catch (IOException e) {
// Exception handling.
}
}
if (lensEngine != null) {
lensEngine.release();
}
デモ
以上で終わりです。必要に応じてこの機能を拡張できる点を覚えておいてください。では、旅行の請求書のスキャン結果を見てみましょう。
次に、割引コードをスキャンして、オンライン割引を簡単に入手し、支払いを完了してみましょう。
##Githubソースコード
https://github.com/HMS-Core/hms-ml-demo/tree/master/Receipt-Text-Recognition
詳しくは、当社の公式ウェブサイトをご覧ください。HUAWEI ML Kit - About the Service