超簡單整合華為HMS ML Kit文字識別SDK,一鍵實現賬單號自動錄入

華為開發者論壇發表於2020-09-02

前言

  在之前的文章《超簡單整合華為HMS Core MLKit通用卡證識別SDK,一鍵實現各種卡繫結》中我們給大家介紹了華為HMS ML Kit通用卡證識別技術是如何通過拍照自動識別卡證上的關鍵資訊從而實現綁卡,那麼有的小夥伴可能會問,我想識別賬單上的單號資訊或者折扣券上的折扣資訊可以嗎?當然可以啦。在這篇文章裡小編將給大家演示HMS ML Kit文字識別技術是怎麼實現賬單號或者折扣程式碼自動錄入的。

應用場景

  文字識別技術的應用場景非常多。比如說掃描下面這張賬單,定義賬單服務號的開頭是“NO.DE SERVICIO”並且服務號是12位字元,就可以很快速地通過文字識別技術得到賬單服務號“123456789123”。

在這裡插入圖片描述
  或者掃描下面這張折扣券,定義折扣程式碼的開頭是“FAVE-”並且折扣程式碼是4位字元,一樣地,可以通過文字識別技術得到折扣程式碼“8329”然後完成支付。

在這裡插入圖片描述

  怎麼樣,是不是很方便?軟體整合了文字識別技術後,開發者可以自定義需要識別的結構化資訊,極大地提升使用者的互動體驗。

開發實戰

  本次的開發實戰中實現了對賬單號的處理,大家可以參考。

1. 開發準備

1.1 專案級gradle裡配置Maven倉地址

    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 應用級gradle裡配置SDK依賴

    dependencies {
        // 引入基礎SDK
        implementation 'com.huawei.hms:ml-computer-vision-ocr:2.0.1.300'
        // 引入拉丁語文字識別模型包
        implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:2.0.1.300'
        // 引入日韓語文字識別模型包
        implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:2.0.1.300'
        // 引入中英文文字識別模型包
        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初始化建立分析器

     //type為識別語言引數設定,中文為:“zh”
     MLTextAnalyzer analyzer = new MLTextAnalyzer.Factory(context).setLanguage(type).create();

2.2 設定識別結果處理器,實現分析器與結果處理器的繫結

    analyzer.setTransactor(new OcrDetectorProcessor());

2.3 呼叫同步介面使用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) {
            // 異常處理邏輯。
        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();
                    // 開發者根據需要處理識別結果,需要注意,這裡只對檢測結果進行處理。
                    // 不可呼叫ML Kit提供的其他檢測相關介面。
                    …
            }
            @Override
            public void destroy() {
                    // 檢測結束回撥方法,用於釋放資源等。
            }
    }

2.6 檢測完成,停止分析器,釋放檢測資源。

    if (analyzer != null) {
            try {
                    analyzer.stop();
            } catch (IOException e) {
                    // 異常處理。
            }
     }
    if (lensEngine != null) {
            lensEngine.release();
    }

demo效果

  下面這個demo展示了掃描出行賬單,識別賬單編號,開發者可根據實際開發需要進行擴充。

在這裡插入圖片描述

  當然,除了賬單號,文字識別技術還可以掃描其他文字內容,例如下面在這個demo中,掃描折扣程式碼,可以快速獲得線上折扣並完成支付。效果是不是很棒?

在這裡插入圖片描述

更詳細的開發指南參考華為開發者聯盟官網:華為開發者聯盟機器學習服務開發指南


原文連結:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0203343372058830370&fid=18
原作者:留下落葉

相關文章