機械学習によりテキスト認識が容易になります: Kotlin+MVVM+Huawei ML Kit

導入

コンピュータが画像やビデオ ストリームから情報を取得するプロセスは、コンピュータ ビジョンの分野に分類されます。
テキスト認識サービスはコンピューター ビジョンの一部です。現在最も人気のある人工知能アプリケーションでもあり、レシートや名刺、書類の写真などの文字が含まれた画像を識別し、文字情報を抽出することができる文字認識サービスです。カメラを開くだけで、写真や現実の風景の中の文字を簡単にテキスト情報に変換できます。

使用するシーン

  1. 速達の場合、アップロードされた写真を識別することで、受取人の名前、電話番号、住所などの重要な情報を対応する位置に素早く入力できます。
    ここに画像の説明を挿入します
  2. 翻訳機能と組み合わせることでリアルタイムの写真翻訳が可能となり、本来は理解できないメニューや、理解できない道路標識などでも、この機能を利用することで文字が理解できないという心配がなくなります。外国です。関連するコードはすでに記述されています。具体的な実装プロセスを確認するには、ブログにアクセスしてください
    https://blog.csdn.net/weixin_38132951/article/details/107352702
    ここに画像の説明を挿入します
  3. 私たちは PDF ドキュメントを Word に変換することをよく使用しますが、これは基本的にテキスト認識機能を使用します。同時に、日常生活では、写真からテキストを抽出して友人に送信したり、自分でメモに書き込んだりする必要がある場合があります。
    ここに画像の説明を挿入します

能力の実証

まず、Huawei MLKit のテキスト認識機能を見てみましょう。
ここに画像の説明を挿入します

機能説明

ここに画像の説明を挿入します

言語を識別する

このサービスはデバイスとクラウドの両方をサポートできますが、認識できるテキストの種類は異なります。デバイス側インターフェイスを呼び出す場合、認識できるのは中国語 (簡体字)、日本語、韓国語、ラテン文字のみです (サポートされているラテン文字については、テキスト認識クライアントでサポートされているラテン文字を参照してください)。クラウドインターフェースを呼び出す場合、中国語(簡体字)、英語、スペイン語、ポルトガル語、イタリア語、ドイツ語、フランス語、ロシア語、日本語、韓国語、ポーランド語、フィンランド語、ノルウェー語、スウェーデン語、デンマーク語、トルコ語、タイ語、アラビア語、ヒンディー語、インドネシア語、その他の言語。

テキスト認識機能 テキスト認識機能
端側 中国語、日本語、韓国語、ラテン文字をサポート
クラウドサイド 中国語、英語、フランス語、スペイン語、タイ語など19言語
傾き認識 30度傾けても認識可能です。
曲線テキストのサポート 45 度の曲げをサポートしており、引き続き正常に識別できます
テキスト追跡 エンドサイドサポートの追跡
識別方法

このサービスは、同期および非同期呼び出しメソッドによる静的画像認識と動的ビデオ ストリーム認識をサポートしており、豊富な API を提供することで、開発者がさまざまなテキスト認識アプリケーションを迅速に構築できるようにします。

詳細については、Huawei Developer Alliance の公式 Web サイトをご覧ください:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/text-recognition-0000001050040053
ここに画像の説明を挿入します

統合の手順

ステップ 1: Android Studio で新しいプロジェクトを作成する
ステップ 2: プロジェクトのニーズに基づいて依存関係を選択する
// Import the base SDK.
implementation 'com.huawei.hms:ml-computer-vision-ocr:1.0.3.300'
// Import the Latin-based language model package.
implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:1.0.3.315'
// Import the Japanese and Korean model package.
implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:1.0.3.300'
// Import the Chinese and English model package.
implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:1.0.3.300'

各SDKのサイズは以下の通りです

パッケージ型式 パッケージ名 小包のサイズ
ラテン系モデル ml-computer-vision-ocr-latin-model 952KB
日本語と韓国語のモデル ml-コンピューター-ビジョン-ocr-jk-モデル 2.14MB
中国語と英語のモデル ml-コンピューター-ビジョン-ocr-cn-モデル 3.46MB

合理化されたバージョンが必要な場合は、次の依存関係を使用してください

implementation 'com.huawei.hms:ml-computer-vision-ocr:1.0.3.300'

機械学習モデルを自動的に更新する

<meta-data
    android:name="com.huawei.hms.ml.DEPENDENCY"
    android:value="ocr" />

マニフェスト ファイルに次の権限を追加します。

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.INTERNET" />

TextRecognitionViewModel クラスにジャンプして、ユーザーの画像を含むビットマップを受け取ります。
以下は、テキスト認識 API を呼び出して文字列応答を取得するために使用できるコードです。

fun textRecognition() {
    
    
     val setting = MLRemoteTextSetting.Factory()
         .setTextDensityScene(MLRemoteTextSetting.OCR_LOOSE_SCENE)
         .setLanguageList(object : ArrayList<String?>() {
    
    
             init {
    
    
                 this.add("zh")
                 this.add("en")
                 this.add("hi")
                 this.add("fr")
                 this.add("de")
             }
         })
         .setBorderType(MLRemoteTextSetting.ARC)
         .create()
     val analyzer = MLAnalyzerFactory.getInstance().getRemoteTextAnalyzer(setting)
     val frame = MLFrame.fromBitmap(bitmap.value)
     val task = analyzer.asyncAnalyseFrame(frame)
     task.addOnSuccessListener {
    
    
         result.value = it.stringValue
     }.addOnFailureListener {
    
    
         result.value = "Exception occurred"
     }
 }

クラウド サービスを使用したいので、MLRemoteTextSetting()
を選択します。文字の密度に応じて、setTextDensityScene()をOCR_LOOSE_SCENEまたはOCR_COMPACT_SCENE
設定できます。 密度を設定したら、setLanguageList()でテキスト言語を設定します。
これにArrayListコレクション オブジェクトを渡すことができます。モデルに 5 つの言語を追加しましたが、必要に応じて言語を追加できます。
MLRemoteTextSetting.ARC : ポリゴン境界の頂点を円弧形式で返します。
カスタムMLRemoteTextSettingオブジェクトの準備ができたので、それをMLTextAnalyzerオブジェクトに渡すことができます
次のステップはMLFrameを作成することです

**· MLFrame frame= MLFrame.fromBitmap(bitmap);**

アナライザー オブジェクトで asyncAnalyseFrame (フレーム) を呼び出し、最近作成した MLFrame を提供します。

これによりTaskオブジェクトが生成され、このオブジェクトで 2 つのコールバックが取得されます。

成功時失敗
_

**onSuccess()で新しいリソースを保存し、 analyzer.stop()** メソッドでアナライザーを停止して、検出リソースを解放できます。

念のため、デバイス モデルのみを使用したい場合は、次の変更が必要です。

MLTextAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalTextAnalyzer();
MLLocalTextSetting setting = new MLLocalTextSetting.Factory()
  .setOCRMode(MLLocalTextSetting.OCR_DETECT_MODE)
  .setLanguage("en")
  .create();

関連リンク

github:
https://github.com/HMS-MLKit/HUAWEI-HMS-MLKit-Sample/tree/master/MLKit-Sample
Developer Alliance 開発ガイダンス文書:
https://developer.huawei.com/consumer/cn/ doc /development/HMSCore-Guides-V5/text-recognition-0000001050040053-V5
サンプル デモ:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Examples-V5/sample-code-0000001050265470- V5

おすすめ

転載: blog.csdn.net/weixin_38132951/article/details/107352272