前言
在之前的文章《超简略集成华为 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
原作者:留下落叶