华为机器学习服务(ML Kit) 提供机器学习套件,为开发者应用机器学习能力开发各类应用提供优质体验。得益于华为长期技术积累,ML Kit 为开发者提供简单易用、服务多样、技术领先的机器学习能力,助力开发者更快更好的开发各类 AI 应用。

使用这个 SDK 开发一个翻译拍照小程序。

适合人群: 对华为 HMS Core 有兴趣的技术人员

引子

想必有很多小伙伴喜欢外出旅游,能去海外玩一圈那是更好不过了,旅游前大家一定会对吃、穿、住、行、游玩路线做各种攻略,然后满怀期待的出发…

想象中的旅游

出发前,想象中的旅游目的地可能有漂亮建筑:

好吃的美食:漂亮的小姐姐:悠闲的生活:

实际中的旅游

但现实中,大家如果到了语言不通的地方,大概率可能会遇到如下麻烦:

让人懵圈的地图:

梦幻菜单:魔性的路标指示牌:商场中琳琅满目的商品:太难了

拍照翻译帮你忙

有了华为 HMS ML Kit 文本识别和翻译服务,以上这些都不是问题,今天就来给大家介绍一下,怎么样使用华为 HMS ML Kit 提供的 SDK 来开发一个拍照翻译服务。简单来讲完成拍照翻译小应用的开发只需要两大步:

文本识别

先拍张照片获取图片,然后把获取的图像帧送到华为 HMS ML Kit 文本识别服务做文本识别。华为文本识别服务同时提供离线 SDK(端侧)和云侧两种方式,端侧免费可实时检测,云侧识别种类和精度更高。本次实战我们采用云侧提供的能力。

文本识别特性 规格(HMS 4.0 )
端侧 支持中日韩
云侧多语种 中、英、法、西、泰语等 19 个语种
倾斜识别 30 度倾斜情况下依然可以识别
弯曲文字支持 支持 45 度弯曲情况下依然可以成功识别
文字跟踪 端侧支持跟踪

以上规格仅供参考,具体以华为开发者联盟官网为准

翻译

将识别后的文字送到华为 HMS MLKit 翻译服务做文本翻译,就可以获取到想要翻译后的结果了。翻译是云侧提供的服务。

文本翻译特性 规格(HMS 4.0)
多语种 7 个语种 中、英、法、西、土、阿、泰
时延 300ms/100 字
BLEU 值 >30
动态术语配置 支持
以上规格仅供参考,具体以华为开发者联盟官网为准

拍照翻译 APP 开发实战

上面说了太多的废话,直接切入正题吧

1 开发准备

由于使用了云侧的服务,需要到华为的开发者联盟注册开发者账号,并且在云端开通这些服务,这里就不细讲了,直接按照官方的的 AppGallery Connect 配置、开通服务部分操作步骤进行即可:

注册开发者,开通服务参考请戳:

1.1 在项目级 gradle 里添加华为 maven 仓

打开 AndroidStudio 项目级 build.gradle 文件。增量添加如下 maven 地址:

buildscript {    repositories {                maven {url 'http://developer.huawei.com/repo/'}    }    }allprojects {    repositories {               maven { url 'http://developer.huawei.com/repo/'}    }   }

1.2 在应用级的 build.gradle 里面加上 SDK 依赖

集成 SDK。(由于使用云侧能力,只引入 SDK 基础包即可)

dependencies{      implementation 'com.huawei.hms:ml-computer-vision:1.0.2.300'    implementation 'com.huawei.hms:ml-computer-translate:1.0.2.300'    }

1.3 在 AndroidManifest.xml 文件里面申请相机和存储权限

要使应用程序能够在用户从华为应用市场安装您的应用程序后,自动将最新的机器学习模型更新到用户设备,请将以下语句添加到该应用程序的 AndroidManifest.xml 文件中:

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

1.4 在 AndroidManifest.xml 文件里面申请相机和存储权限

<uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-feature android:name="android.hardware.camera" /><uses-feature android:name="android.hardware.camera.autofocus" />

2 代码开发关键步骤

2.1 动态权限申请

private static final int CAMERA_PERMISSION_CODE = 1; @Override public void onCreate(Bundle savedInstanceState) {     // Checking camera permission      if (!allPermissionsGranted()) {       getRuntimePermissions();   }} 

2.2 创建云侧文本分析器。可以通过文本检测配置器“MLRemoteTextSetting”创建文本分析器

MLRemoteTextSetting setting = (new MLRemoteTextSetting.Factory()).         setTextDensityScene(MLRemoteTextSetting.OCR_LOOSE_SCENE).create();this.textAnalyzer = MLAnalyzerFactory.getInstance().getRemoteTextAnalyzer(setting);

2.3 通过 android.graphics.Bitmap 创建“MLFrame”对象用于分析器检测图片

MLFrame mlFrame = new MLFrame.Creator().setBitmap(this.originBitmap).create();

2.4 调用“asyncAnalyseFrame ”方法进行文本检测

Task<MLText> task = this.textAnalyzer.asyncAnalyseFrame(mlFrame);            task.addOnSuccessListener(new OnSuccessListener<MLText>() {                @Override                public void onSuccess(MLText mlText) {                    // Transacting logic for segment success.                    if (mlText != null) {                        RemoteTranslateActivity.this.remoteDetectSuccess(mlText);                    } else {                        RemoteTranslateActivity.this.displayFailure();                    }                }            }).addOnFailureListener(new OnFailureListener() {                @Override                public void onFailure(Exception e) {                    // Transacting logic for segment failure.                    RemoteTranslateActivity.this.displayFailure();                    return;                }            });

2.5 创建文本翻译器。可以通过文本翻译器自定义参数类“MLRemoteTranslateSetting”创建翻译器

MLRemoteTranslateSetting.Factory factory = new MLRemoteTranslateSetting                .Factory()                // Set the target language code. The ISO 639-1 standard is used.                .setTargetLangCode(this.dstLanguage);        if (!this.srcLanguage.equals("AUTO")) {            // Set the source language code. The ISO 639-1 standard is used.            factory.setSourceLangCode(this.srcLanguage);        }        this.translator = MLTranslatorFactory.getInstance().getRemoteTranslator(factory.create());

2.6 调用“asyncAnalyseFrame ”方法对文本识别获取的内容进行文本翻译

final Task<String> task = translator.asyncTranslate(this.sourceText);        task.addOnSuccessListener(new OnSuccessListener<String>() {            @Override            public void onSuccess(String text) {                if (text != null) {                    RemoteTranslateActivity.this.remoteDisplaySuccess(text);                } else {                    RemoteTranslateActivity.this.displayFailure();                }            }        }).addOnFailureListener(new OnFailureListener() {            @Override            public void onFailure(Exception e) {                RemoteTranslateActivity.this.displayFailure();            }        });

2.7 翻译完成释放资源

if (this.textAnalyzer != null) {            try {                this.textAnalyzer.close();            } catch (IOException e) {                SmartLog.e(RemoteTranslateActivity.TAG, "Stop analyzer failed: " + e.getMessage());            }        }        if (this.translator != null) {            this.translator.stop();        }

3 源码

老规矩,简单的小 Demo 源码已上传 Github,github 源码地址请戳: https://github.com/HMS-MLKit/HUAWEI-HMS-MLKit-Sample(工程目录为:Photo-Translate),大家可以做参考做基于场景的优化。

4 Demo 效果


结后语

本次给大家演示的小程序 APP 开发同时用到了华为 HMS ML Kit 的两种云侧能力,文字识别和翻译的能力,华为的文字识别和翻译还可以帮助开发者做很多其他有趣又强大的功能,比如:【通用文本识别】1、公交车牌文字识别2、文档阅读场景下的文本识别【卡证类文本识别】1、通过文字识别可以识别银行卡的卡号,用于银行卡绑定等场景2、当然除了识别银行卡,还可以识别生活中的各种卡证号,比如会员卡、优惠卡3、此外还可以实现身份证、港澳通行证等证件类号码的识别【翻译】1、路标路牌翻译2、文档翻译3、网页翻译,比如识别网站评论区的语言类型并翻译成对应国家的语言;4、海淘商品介绍翻译5、餐厅点餐菜单翻译

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


往期链接:Android | 教你如何开发一个证件照 DIY 小程序内容来源:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201209905778120045&fid=18原作者:AI_talking

阅读全文: http://gitbook.cn/gitchat/activity/5eb22c640c1e97561e99d84a

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App , GitChat 专享技术内容哦。

Android | 教你如何开发一个拍照翻译小程序相关推荐

  1. 安卓开发实战,用HMS MLKit华为机器学习服务开发一个拍照翻译小程序

    文章目录 引子 想象中的旅游 实际中的旅游 太难了 拍照翻译帮你忙 文本识别 翻译 拍照翻译APP开发实战 1 开发准备 1.1 在项目级gradle里添加华为maven仓 1.2 在应用级的buil ...

  2. Android | 教你如何开发一个证件照DIY小程序

    目录 引子 证件照DIY开发实战 1 开发准备 1.1 在项目级gradle里添加华为maven仓 1.2 在应用级的build.gradle里面加上SDK依赖 1.3 在AndroidManifes ...

  3. vue+uni-app商城实战 | 第一篇:从0到1快捷开发一个商城微信小程序,无缝接入OAuth2实现一键授权登录

    一. 前言 本篇通过实战来讲述如何使用uni-app快速进行商城微信小程序的开发以及小程序如何接入后台Spring Cloud微服务. 有来商城 youlai-mall 项目是一套全栈商城系统,技术栈 ...

  4. 从0到1使用python开发一个半自动答题小程序

    从0到1使用python开发一个半自动答题小程序 前言 最近每天都有玩微信读书上面的每日一答的答题游戏,完全答对12题后,可以瓜分无限阅读卡.但是从小就不太爱看书的我,很难连续答对12道题,由此,产生 ...

  5. 怎么开发一个自助打印机小程序

    如果你想开发一个自助打印机小程序,你可以以下这些步骤: 了解打印机技术:需要了解打印机的工作原理和通信协议,以便与小程序进行通信. 选择开发语言:可以使用诸如JavaScript.Python等常用编 ...

  6. 挑战30天,开发一个消防答题小程序。教你如何处理小程序用户注册

    [吃瓜群众]啦啦啦~,几天不见我又来了.今天更新第二期,这几天在处理用户注册和题库收集. 知识点:注册逻辑.登录缓存 上一期咱们讲了,如何搭一个基本的小程序框架,涉及开源组件(colorUI.Vant ...

  7. 一个人开发一个App,小程序先行?

    在第6个微信小程序上线之后,我才敢来说说有关于小程序开发方面的内容.可能是程序员天生追求完美的个性导致,总认为一件事自己都没搞明白的情况下,就跟别人"吹",是很不负责任的表现.单从 ...

  8. 如何开发一个个人微信小程序,微信小程序开发入门教程

    做任何程序开发要首先找到其官方文档,我们先来看看其有哪些官方文档. 微信小程序开发文档链接为:https://mp.weixin.qq.com/debug/wxadoc/dev/index.html, ...

  9. 四、使用python+selenium搭建一个ppt翻译小程序(将ppt中的中文翻译为英文)

    一.前言 本翻译小程序功能为将ppt中的中文翻译称为英文.项目文件结构如下: 1.newppt:转换成英文之后所存的ppt: 2.oldppt:需要转换的ppt: 3.chromedriver:需要自 ...

最新文章

  1. 深度学习已经取得的进展
  2. php clownfish,Python实现的金山快盘的签到程序
  3. 连不上 GitHub 的朝鲜,也开发出了人脸识别技术
  4. 【初级】String str= ac,42,123,sd Fa,c df,4,acdf,5ewRRre ;1.把字符串按,进行分割
  5. JVM实用参数(一)JVM类型以及编译器模式
  6. 【LeetCode - 32】最长有效括号
  7. 博弈论:别人的想法(文末送书!)
  8. python fortran混合编程输入矩阵_如何将动态数组从Python传递到Fortran动态链接库
  9. Java 第五章 类的设计与包
  10. 汽车后市场的大数据引擎谁人可造
  11. ubuntu adb 命令
  12. 计算机2级vb查询,计算机2级VB
  13. Android蓝牙完全学习手册
  14. pyodbc mysql_Robot Framework 通过pyodbc连接Mysql
  15. tan和cot的梗_sin cos tan cot 之间的关系
  16. 微博程序猿结婚还要加班!只因鹿晗公布恋情
  17. 如何设置谷歌浏览器在新窗口中打开链接
  18. 使用RAK7268网关与RAK3172节点连接至TTN最新的服务器TTS上
  19. JavaWeb开发_Web前端_Ajax
  20. window安装weblogic教程

热门文章

  1. mysql添加好友_添加好友功能实现思路
  2. 【博客专家】新功能:优秀博文直推极客头条
  3. python有哪些web框架_python五大主流web框架
  4. Q1营收利润双降,度过危局唯品股价能否“再上层楼”?
  5. 老版本Ubuntu 更新源
  6. java--JUC快速入门(彻底搞懂JUC)
  7. [Vulnhub] basic_pentesting 2
  8. c语言中swap函数_C ++中的swap()函数
  9. windows 找不到文件 %windir%\systempropertiesadvanced.exe
  10. 职称计算机考试s符号,2017年职称计算机考试Word考点:项目符号和编号