前言

  在之前的文章《超简单集成华为HMS Core MLKit通用卡证识别SDK,一键实现各种卡绑定》中我们给大家介绍了华为HMS ML Kit通用卡证识别技术是如何通过拍照自动识别卡证上的关键信息从而实现绑卡,那么有的小伙伴可能会问,我想识别账单上的单号信息或者折扣券上的折扣信息可以吗?当然可以啦。在这篇文章里小编将给大家演示HMS ML Kit文本识别技术是怎么实现账单号或者折扣代码自动录入的。

应用场景

  文本识别技术的应用场景非常多。比如说扫描下面这张账单,定义账单服务号的开头是“NO.DE SERVICIO”并且服务号是12位字符,就可以很快速地通过文本识别技术得到账单服务号“123456789123”。



  或者扫描下面这张折扣券,定义折扣代码的开头是“FAVE-”并且折扣代码是4位字符,一样地,可以通过文本识别技术得到折扣代码“8329”然后完成支付。

  怎么样,是不是很方便?软件集成了文本识别技术后,开发者可以自定义需要识别的结构化信息,极大地提升用户的交互体验。

开发实战

  本次的开发实战中实现了对账单号的处理,大家可以参考。

1. 开发准备

1.1 项目级gradle里配置Maven仓地址

  1. buildscript {
  2. repositories {
  3. ...
  4. maven {url 'https://developer.huawei.com/repo/'}
  5. }
  6. }
  7. dependencies {
  8. ...
  9. classpath 'com.huawei.agconnect:agcp:1.3.1.300'
  10. }
  11. allprojects {
  12. repositories {
  13. ...
  14. maven {url 'https://developer.huawei.com/repo/'}
  15. }
  16. }

1.2 文件头增加配置

  集成SDK后,在文件头添加配置

  1. apply plugin: 'com.android.application'
  2. apply plugin: 'com.huawei.agconnect'

1.3 应用级gradle里配置SDK依赖

  1. dependencies {
  2. // 引入基础SDK
  3. implementation 'com.huawei.hms:ml-computer-vision-ocr:2.0.1.300'
  4. // 引入拉丁语文字识别模型包
  5. implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:2.0.1.300'
  6. // 引入日韩语文字识别模型包
  7. implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:2.0.1.300'
  8. // 引入中英文文字识别模型包
  9. implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:2.0.1.300'
  10. }

1. 4 将以下语句添加到AndroidManifest.xml文件中,用于自动更新机器学习模型

  1. <manifest>
  2. ...
  3. <meta-data
  4. android:name="com.huawei.hms.ml.DEPENDENCY"
  5. android:value="ocr" />
  6. ...
  7. </manifest>

1.5 申请摄像头权限

  1. <uses-permission android:name="android.permission.CAMERA" />
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <uses-feature android:name="android.hardware.camera" />
  4. <uses-feature android:name="android.hardware.camera.autofocus" />

2.代码开发

2.1初始化创建分析器

  1. //type为识别语言参数设置,中文为:“zh”
  2. MLTextAnalyzer analyzer = new MLTextAnalyzer.Factory(context).setLanguage(type).create();

2.2 设置识别结果处理器,实现分析器与结果处理器的绑定

  1. analyzer.setTransactor(new OcrDetectorProcessor());

2.3 调用同步接口使用SDK内置LensEngine创建对象,并注册分析器,初始化相机参数

  1. lensEngine = new LensEngine.Creator(context, analyzer)
  2. .setLensType(LensEngine.BACK_LENS)
  3. .applyDisplayDimension(width, height)
  4. .applyFps(30.0f)
  5. .enableAutomaticFocus(true)
  6. .create();

2.4调用run方法,启动相机,读取视频流,进行识别

  1. try {
  2. lensEngine.run(holder);
  3. } catch (IOException e) {
  4. // 异常处理逻辑。
  5. Log.e("TAG", "e=" + e.getMessage());
  6. }

2.5 开发者根据需要处理识别结果

  1. public class OcrDetectorProcessor implements MLAnalyzer.MLTransactor<MLText.Block> {
  2. @Override
  3. public void transactResult(MLAnalyzer.Result<MLText.Block> results) {
  4. SparseArray<MLText.Block> items = results.getAnalyseList();
  5. // 开发者根据需要处理识别结果,需要注意,这里只对检测结果进行处理。
  6. // 不可调用ML Kit提供的其他检测相关接口。

  7. }
  8. @Override
  9. public void destroy() {
  10. // 检测结束回调方法,用于释放资源等。
  11. }
  12. }

2.6 检测完成,停止分析器,释放检测资源。

  1. if (analyzer != null) {
  2. try {
  3. analyzer.stop();
  4. } catch (IOException e) {
  5. // 异常处理。
  6. }
  7. }
  8. if (lensEngine != null) {
  9. lensEngine.release();
  10. }

demo效果

  下面这个demo展示了扫描出行账单,识别账单编号,开发者可根据实际开发需要进行拓展。

  当然,除了账单号,文本识别技术还可以扫描其他文本内容,例如下面在这个demo中,扫描折扣代码,可以快速获得线上折扣并完成支付。效果是不是很棒?

更详细的开发指南参考华为开发者联盟官网:华为开发者联盟机器学习服务开发指南


原文链接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0203343372058830370&fid=18

原作者:留下落叶

超简单集成华为HMS ML Kit文本识别SDK,一键实现账单号自动录入的更多相关文章

  1. 超简单集成华为 HMS MLKit 机器学习服务:银行卡识别 SDK,一键实现银行卡绑定

    前言 小编前面几期文章分别给大家介绍了使用 HMS ML Kit SDK 实现微笑抓拍.证件照 DIY.拍照翻译的功能开发(链接见文章末尾),本次小编给大家带来的是使用 HMS 机器学习服务(ML K ...

  2. 用华为HMS ML kit人体骨骼识别技术,Android快速实现人体姿势动作抓拍&nbsp;

      你有没有过这种体验,拍照时对着镜头,脑子一片空白.表情僵硬.手和脚无处安放,最后拍出来的照片很是奇怪.拍照软件中的固定姿势抓拍功能可以帮助你:选择一个你想要的姿势模板,当你摆出同款姿势时,软件会进 ...

  3. 超简单集成 HMS ML Kit 实现最大脸微笑抓拍

    前言 如果大家对 HMS ML Kit 人脸检测功能有所了解,相信已经动手调用我们提供的接口编写自己的 APP 啦.目前就有小伙伴在调用接口的过程中反馈,不太清楚 HMS ML Kit 文档中的 ML ...

  4. 超简单集成HMS ML Kit文字超分能力,一键提升文本分辨率

    前言 大家有没有遇到过这种情况,在浏览微博或者公众号时看到一段有趣的文字,于是截图发到朋友圈想和好友分享.但是在发布图片时,软件会对图片强制进行压缩,导致图片分辨率下降,文字变得模糊难以阅读.那么有没 ...

  5. Android | 超简单集成HMS ML Kit实现最大脸微笑抓拍

    前言   如果大家对HMS ML Kit 人脸检测功能有所了解,相信已经动手调用我们提供的接口编写自己的APP啦.目前就有小伙伴在调用接口的过程中反馈,不太清楚HMS ML Kit 文档中的MLMax ...

  6. 超简单集成ML kit 实现听写单词播报

    背景   相信我们大家在刚开始学习一门语言的时候都有过听写,现在的小学生学语文的时候一项重要的课后作业就是听写课文中的生词,很多家长们都有这方面的经历.不过一方面这种读单词的动作相对简单,另一方面家长 ...

  7. 超简单集成HMS Scan Kit扫码SDK,轻松实现扫码购

    前言   在前面的文章中,我们向大家介绍了HMS Scan Kit 的快速集成方法以及HMS Scan Kit和其他开源扫码工具的竞争力对比分析,如果没有看到也没关系,文章下方的往期链接中有文章入口. ...

  8. Android | 教你如何用华为HMS MLKit SDK 三十分钟在安卓上开发一个微笑抓拍神器

    Android | 只要三十分钟就可以在手机上开发一个微笑抓拍神器!!! 前言 前段时间Richard Yu在发布会上给大家介绍了华为HMS Core4.0,回顾发布会信息请戳: 华为面向全球发布HM ...

  9. 手把手教你集成华为机器学习服务(ML Kit)人脸检测功能

    当给自己拍一张美美的自拍照时,却发现照片中自己的脸不够瘦.眼睛不够大.表情不够丰富可爱-如果此时能够一键美颜瘦脸并且添加可爱的贴纸的话,是不是很棒? 当家里的小孩观看iPad屏幕时间过长或者眼睛离屏幕 ...

随机推荐

  1. Springboot使用JdbcTemplate的使用

    在spring-boot-starter-jdbc这个依赖包中一共分成四个部分. core,JdbcTemplate等相关核心接口和类 datasource,数据源相关的辅助类 object,将基本的 ...

  2. 新鲜整理的Java学习大礼包!!锵锵锵锵~

    第一部分:Java视频资源! 前端 HTML5新元素之Canvas详解 https://www.bilibili.com/video/BV1TE41177TE HTML5之WebStorage详解 h ...

  3. 009_go语言中的slices分片

    代码演示 package main import "fmt" func main() { s := make([]string, 3) fmt.Println("emp: ...

  4. Ubuntu定时执行任务(定时爬取数据)

    cron是一个Linux下的后台进程,用来定期的执行一些任务.因为我用的是Ubuntu,所以这篇文章中的所有命令也只能保证在Ubuntu下有效. 1:编辑crontab文件,用来存放你要执行的命令 s ...

  5. “随手记”开发记录day06

    今天还是继续完成统计页面,完成的按钮有支出大头和收入来源的饼状图, 由于之前写过相关的代码,这次的任务对我们来说还挺简单的,没有出现什么太大的问题,

  6. Python库大全,建议收藏留用!

    学Python,想必大家都是从爬虫开始的吧.毕竟网上类似的资源很丰富,开源项目也非常多. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. ...

  7. Springboot快速入门篇,图文并茂

    Springboot快速入门篇,图文并茂 文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star!搜索关注微信公众号 [码出Offer] 领取各种学习资料! image-20 ...

  8. spring boot-controller中的一个方法获取其他方法返回的值

    @RequestMapping("/test") public String getData() { return "redirect:/other";} re ...

  9. 2020-04-24:Object obj = new Object()这句话在内存里占用了多少内存

    福哥答案2020-04-25:这道题最好把对象和变量分开说明,否则容易产生误解.以下都是64位环境下.针对对象:压缩状态:MarkWord 8+klass 4+数据0+对齐4=16非压缩状态:Mark ...

  10. C#LeetCode刷题之#34-在排序数组中查找元素的第一个和最后一个位置(Find First and Last Position of Element in Sorted Array)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4970 访问. 给定一个按照升序排列的整数数组 nums,和一个目 ...