Android | 教你如何用代码开发一个拍照翻译小程序
想必有很多小伙伴喜欢外出旅游,能去海外玩一圈那是更好不过了,旅游前大家一定会对吃、穿、住、行、游玩路线做各种攻略,然后满怀期待的出发…
想象中的旅游 出发前,想象中的旅游目的地可能有漂亮建筑:
1.4 在AndroidManifest.xml文件里面申请相机和存储权限
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 task = this.textAnalyzer.asyncAnalyseFrame(mlFrame);
task.addOnSuccessListener(new OnSuccessListener() {
@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.class="lazy" data-srcLanguage.equals("AUTO")) {
// Set the source language code. The ISO 639-1 standard is used.
factory.setSourceLangCode(this.class="lazy" data-srcLanguage);
}
this.translator = MLTranslatorFactory.getInstance().getRemoteTranslator(factory.create());
2.6 调用“asyncAnalyseFrame ”方法对文本识别获取的内容进行文本翻译
final Task task = translator.asyncTranslate(this.sourceText);
task.addOnSuccessListener(new OnSuccessListener() {
@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
作者:华为开发者论坛
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341