超簡單集成華為HMS ML Kit文本識別SDK,一鍵實現賬單號自動錄入
前言
在之前的文章《超簡單集成華為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 '//developer.huawei.com/repo/'}
}
}
dependencies {
...
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
}
allprojects {
repositories {
...
maven {url '//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中,掃描折扣程式碼,可以快速獲得線上折扣並完成支付。效果是不是很棒?
更詳細的開發指南參考華為開發者聯盟官網:華為開發者聯盟機器學習服務開發指南
原文鏈接://developer.huawei.com/consumer/cn/forum/topicview?tid=0203343372058830370&fid=18
原作者:留下落葉