Android对接华为AI - 文本识别

这篇具有很好参考价值的文章主要介绍了Android对接华为AI - 文本识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

准备工作

在开发应用前:
1、需要在AppGallery Connect中配置相关信息,包括:注册成为开发者和创建应用。
2、使用ML Kit云侧服务(端侧服务可不开通)需要开发者在AppGallery Connect上打开ML Kit服务开关。

集成HMS Core SDK

工程根目录build.gradle文件

buildscript {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
        // 配置HMS Core SDK的Maven仓地址。
        maven {url 'https://developer.huawei.com/repo/'}
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.0.4'
        classpath 'com.huawei.agconnect:agcp:1.6.2.300'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
        // 配置HMS Core SDK的Maven仓地址。
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

app module下的build.gradle依赖华为基础SDK包与语言识别模型包:

// 引入基础SDK
implementation 'com.huawei.hms:ml-computer-vision-ocr:3.11.0.301'
// 引入拉丁语文字识别模型包
implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:3.11.0.301'
// 引入日韩语文字识别模型包
implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:3.11.0.301'
// 引入中英文文字识别模型包
implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:3.11.0.301'

配置混淆脚本

-dontwarn com.huawei.**
-keep class com.huawei.** {*;}
-dontwarn org.slf4j.**
-keep class org.slf4j.** {*;}
-dontwarn org.springframework.**
-keep class org.springframework.** {*;}
-dontwarn com.fasterxml.jackson.**
-keep class com.fasterxml.jackson.** {*;}
-keep class com.huawei.noah.bolttranslator.**{*;}
-dontwarn com.huawei.hisi.**
-keep class com.huawei.hisi.** {*;}

添加权限

    <!--相机权限-->
    <uses-permission android:name="android.permission.CAMERA" />
    <!--使用网络权限-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!--写权限-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--读权限-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!--录音权限-->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!--获取网络状态权限-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!--获取wifi状态权限-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

端侧识别

    /**
     * 端侧文本识别
     */
    private void textAnalyzer() {
        long startTime =  (new Date()).getTime();
        Log.d("textAnalyzer", "start: " + startTime);
        MLLocalTextSetting setting = new MLLocalTextSetting.Factory()
                .setOCRMode(MLLocalTextSetting.OCR_DETECT_MODE)
                // 设置识别语种。
                .setLanguage("zh")
                .create();
        MLTextAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalTextAnalyzer(setting);
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.test2);
        // 通过bitmap创建MLFrame,bitmap为输入的Bitmap格式图片数据。
        MLFrame frame = MLFrame.fromBitmap(bitmap);
        Task<MLText> task = analyzer.asyncAnalyseFrame(frame);
        task.addOnSuccessListener(new OnSuccessListener<MLText>() {
            @Override
            public void onSuccess(MLText text) {
                List<MLText.Block> blocks = text.getBlocks();
                StringBuilder sb = new StringBuilder();
                for (MLText.Block block : blocks) {
                    sb.append(block.getStringValue());
                }
                // 识别成功处理。
                tv.setText("识别成功: " + sb.toString());
                Log.d("textAnalyzer", "识别成功:\n " + sb.toString());
                long endTime =  (new Date()).getTime();
                Log.d("textAnalyzer", "end: " + endTime);
                Log.d("textAnalyzer", "耗时: " + (endTime-startTime));
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(Exception e) {
                // 识别失败处理。
                tv.setText("识别失败");
            }
        });
    }

端侧识别测试

原图:test2.png
Android对接华为AI - 文本识别
识别结果:
Android对接华为AI - 文本识别

云侧文本识别

注意:此功能收费,但是精确度更高。

配置应用的鉴权信息

先申请apikey:
https://developer.huawei.com/consumer/cn/console/api/credentials/dev388421841221889538
然后配置apikey
Android对接华为AI - 文本识别

云侧文本识别实现

    MLApplicationInit.init();

    /**
     * 云侧文本识别
     */
    private void textAnalyzerNet() {
        long startTime =  (new Date()).getTime();
        Log.d("textAnalyzerNet", "start: " + startTime);
        // 方式一:使用自定义参数配置。
        // 创建语言集合。
        List<String> languageList = new ArrayList();
        languageList.add("zh");
        languageList.add("en");
        // 设置参数。
        MLRemoteTextSetting setting = new MLRemoteTextSetting.Factory()
                // 设置云侧文本字体模式:
                // 若选择手写体格式,文本检测模式仅支持稀疏文本,语言列表仅支持中文(zh),边界框格式仅支持NGON四顶点坐标。
                // setTextDensityScene、setLnaguageList、setBorderType等方法设置均不生效。
                // 若选择印刷体格式,则需要手动设置语言列表,检测模式和边框样式,或采取默认配置。
                // MLRemoteTextSetting.OCR_HANDWRITTENFONT_SCENE:手写体。
                // MLRemoteTextSetting.OCR_PRINTFONT_SCENE:印刷体。
                .setTextFontScene(MLRemoteTextSetting.OCR_HANDWRITTENFONT_SCENE)
                // 设置云侧文本检测模式:
                // MLRemoteTextSetting.OCR_COMPACT_SCENE:文本密集场景的文本识别。
                // MLRemoteTextSetting.OCR_LOOSE_SCENE:文本稀疏场景的文本识别。
                .setTextDensityScene(MLRemoteTextSetting.OCR_LOOSE_SCENE)
                // 设置识别语言列表,使用ISO 639-1标准。
                .setLanguageList(languageList)
                // 设置文本边界框返回格式。
                // MLRemoteTextSetting.NGON:返回四边形的四个顶点坐标。
                // MLRemoteTextSetting.ARC:返回文本排列为弧形的多边形边界的顶点,最多可返回多达72个顶点的坐标。
                .setBorderType(MLRemoteTextSetting.ARC)
                .create();
        MLTextAnalyzer analyzer = MLAnalyzerFactory.getInstance().getRemoteTextAnalyzer(setting);
        // 方式二:使用默认参数配置,自动检测语种进行识别,适用于文本稀疏场景,文本框返回格式为:MLRemoteTextSetting.NGON。
        //MLTextAnalyzer analyzer = MLAnalyzerFactory.getInstance().getRemoteTextAnalyzer();
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.test2);
        // 通过bitmap创建MLFrame,bitmap为输入的Bitmap格式图片数据。
        MLFrame frame = MLFrame.fromBitmap(bitmap);
        Task<MLText> task = analyzer.asyncAnalyseFrame(frame);
        task.addOnSuccessListener(new OnSuccessListener<MLText>() {
            @Override
            public void onSuccess(MLText text) {
                // 识别成功。
                List<MLText.Block> blocks = text.getBlocks();
                StringBuilder sb = new StringBuilder();
                for (MLText.Block block : blocks) {
                    sb.append(block.getStringValue());
                    sb.append("\n");
                }
                // 识别成功处理。
                tv.setText("识别成功: " + sb.toString());
                Log.d("textAnalyzerNet", "识别成功:\n " + sb.toString());
                long endTime =  (new Date()).getTime();
                Log.d("textAnalyzerNet", "end: " +endTime);
                Log.d("textAnalyzerNet", "耗时: " + (endTime-startTime));
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(Exception e) {
                // 识别失败,获取相关异常信息。
                try {
                    MLException mlException = (MLException) e;
                    // 获取错误码,开发者可以对错误码进行处理,根据错误码进行差异化的页面提示。
                    int errorCode = mlException.getErrCode();
                    // 获取报错信息,开发者可以结合错误码,快速定位问题。
                    String errorMessage = mlException.getMessage();
                } catch (Exception error) {
                    // 转换错误处理。
                }
            }
        });
    }

云侧文本识别测试

原图:test2.png
Android对接华为AI - 文本识别
识别结果:
Android对接华为AI - 文本识别

官网参考

更多内容,请参考官网:
https://developer.huawei.com/consumer/cn/doc/hiai-Guides/text-recognition-0000001050040053文章来源地址https://www.toymoban.com/news/detail-776882.html

到了这里,关于Android对接华为AI - 文本识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mac 10.13.6安装后开发准备工作

    git下载安装 xcode旧版安装搜索 brew国内源安装 brew国内源安装地址2 brew更换源 SwitchHosts github hosts nfts磁盘读写工具 更新ssl证书 证书下载 brew 更新curl(60) ssl错误解决: https://site.ip138.com/ vi 命令: i 插入 :wq 保存退出

    2024年02月11日
    浏览(43)
  • JavaWeb课程设计项目实战(03)——开发准备工作

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 在正式进入项目开发之前请先完成以下准备工作。 请创建数据库和表并完成数据初始化工作。 请在MySQL数据库中创建名为studentinformationmanagement的库。 在本项目中有以下两张表: 1、用户表 2、学生表 用户表详情

    2024年02月15日
    浏览(44)
  • 揭开ChatGPT面纱(1):准备工作(搭建开发环境运行OpenAI Demo)

    本博客的gitlab仓库:地址,本博客对应01文件夹。 随着人工智能技术的飞速发展,ChatGPT作为其中的佼佼者,已经逐渐从实验室走向了公众视野。它不仅仅是一个简单的聊天机器人,而是代表了自然语言处理(NLP)领域的前沿技术。在ChatGPT的帮助下,我们能够实现更自然、更

    2024年04月26日
    浏览(53)
  • 华为云Elasticsearch(FusionInsight HD) 连接和开发教程-环境准备

    Elasticsearh简介 Elasticsearch是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎和分析引擎。设计用于大数据中,能够稳定、可靠、快速地实现实时搜索和分析,并且安装使用的方法十分简单方便。 Elasticsearch相比传统关系数据库,通过时间戳或者精确

    2024年02月03日
    浏览(46)
  • 3步体验在DAYU200开发板上完成OpenHarmony对接华为云IoT(1)

    3.1 串口终端 开发板插上串口线之后,打开设备管理器可以看到识别到串口 COM8 ,这就是开发板的Debug串口。(需要提前安装好USB转串口驱动)。 打开串口工具,新建会话,选择串口协议。 波特率选择 1500000 也就是1.5M。 创建完成。 选择刚才创建好的会话,点击连接。 复位开

    2024年04月27日
    浏览(36)
  • ChatGPT工作提效之小鹅通二次开发批量API对接解决方案(学习记录同步、用户注册同步、权益订购同步、开发文档)

    ChatGPT工作提效之初探路径独孤九剑遇强则强 ChatGPT工作提效之在程序开发中的巧劲和指令(创建MySQL语句、PHP语句、Javascript用法、python的交互) ChatGPT工作提效之生成开发需求和报价单并转为Excel格式 ChatGPT是一种实时对话生成模型,能够帮助用户快速地回答问题、提供信息,并

    2024年02月06日
    浏览(49)
  • 【大数据开发运维解决方案】华为FusionInsight大数据Kibana对接安全模式Elasticsearch方案

    博主所在单位使用的大数据集群为华为FusionInsight,本篇文章主要介绍的是如何将开源Kibana对接到华为安全模式下Elasticsearch。同样,本篇文章适用其他版本Kibana对接安全模式Elasticsearch。 注意事项:所有配置项:后边必须有个空格。 Kibana提供了图形化操作界面,通过可视化界

    2023年04月08日
    浏览(42)
  • 华为云API自然语言处理的魅力—AI情感分析、文本分析

    云服务、API、SDK,调试,查看,我都行 阅读短文您可以学习到:人工智能AI自言语言的情感分析、文本分词、文本翻译 API插件支持 VS Code IDE、IntelliJ IDEA等平台、以及华为云自研 CodeArts IDE,基于华为云服务提供的能力,帮助开发者更高效、便捷的搭建应用。API插件关联华为

    2024年02月07日
    浏览(52)
  • AI面板识别 - 华为OD统一考试

    OD统一考试 (B卷) 分值: 100分 题解: Java / Python / C++ AI识别到面板上有N(1 ≤ N ≤ 100)个指示灯,灯大小一样,任意两个之间无重叠。 由于AI识别误差,每次别到的指示灯位置可能有差异,以4个坐标值描述AI识别的指示灯的大小和位置(左上角x1,y1,右下角x2,y2), 请输出先行后

    2024年02月04日
    浏览(39)
  • 员工工作服穿戴AI识别算法 yolov5

    员工工作服穿戴AI识别算法是基于yolov5+python网络模型人工智能技术,员工工作服穿戴AI识别算法对现场人员的工作服穿戴情况进行实时监控,并对违规情况将自动发出警报。我们选择当下YOLO卷积神经网络YOLOv5来进行火焰识别检测。现版本的YOLOv5每个图像的推理时间最快0.007秒

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包