自学记录鸿蒙API 13:实现智能文本识别Core Vision Text Recognition

简介: 在完成语音助手项目后,我尝试了HarmonyOS Next API 13中的Core Vision Text Recognition API,体验其强大的文本识别功能。该API支持多语言高精度识别,能快速将图像中的文本提取为结构化信息,适用于文档扫描、票据管理和实时翻译等场景。通过权限配置、初始化服务、实现识别功能和构建用户界面,我完成了文本识别应用的开发,并探索了性能优化与功能扩展。鸿蒙生态的强大支持让开发者能更便捷地实现复杂功能。未来计划将此技术应用于实际项目,如票据管理或实时翻译工具。如果你也对文本识别感兴趣,不妨一起探索!

在完成语音助手项目后,我想试试其他的AI的API 13,于是我瞄上了——智能文本识别。通过研究HarmonyOS Next最新版本API 13中的Core Vision Text Recognition API,我深刻感受到了鸿蒙生态在计算机视觉领域的强大支持。该API能够快速将图像中的文本内容提取为结构化信息,官方给了足够的支持,也为开发者提供了丰富的应用场景。


开始我的学习旅程

每次接触新的API,我都会抱着探索和学习的态度,了解其使用场景和核心功能。文本识别技术广泛应用于文档扫描、票据管理以及实时翻译等场景,因此我决定基于这一API开发一个支持文本识别与显示的应用,并记录下整个学习与开发过程。

第一步:理解Core Vision Text Recognition API的核心功能

核心功能简介

Core Vision Text Recognition API 提供了从图像中提取文本的能力,支持多语言高精度识别,其核心功能包括:

  • 文本区域检测:精准定位图像中的文本内容。
  • 多语言支持:包括简体中文、英文、日文、韩文和繁体中文。
  • 结构化结果输出:识别的结果以段落(TextBlock)、行(TextLine)和单词(TextWord)的形式返回。

应用场景

  • 文档数字化:自动提取纸质文档内容并保存为可编辑文本。
  • 票据管理:高效提取发票或收据信息以便整理。
  • 实时翻译:通过识别图像中的文字实现动态翻译。


第二步:项目初始化与配置

在开发HarmonyOS应用时,权限配置是必不可少的步骤。

权限配置

在config.json文件中添加以下配置,确保应用拥有必要的权限:

{
  "module": {
    "abilities": [
      {
        "name": "TextRecognitionAbility",
        "permissions": [
          "ohos.permission.INTERNET",
          "ohos.permission.READ_MEDIA",
          "ohos.permission.WRITE_MEDIA"
        ]
      }
    ]
  }
}


第三步:实现文本识别功能

初始化Text Recognition服务

通过以下代码初始化文字识别服务:

import textRecognition from '@kit.CoreVisionKit';
let recognizerInstance = null;
async function initializeTextRecognition() {
    try {
        recognizerInstance = await textRecognition.init();
        console.info('文本识别服务初始化成功');
    } catch (error) {
        console.error('文本识别服务初始化失败:', error);
    }
}
initializeTextRecognition();

图像加载与识别

在图像识别过程中,我们首先加载待处理的图像,然后调用recognizeText接口提取文本信息。

async function recognizeTextFromImage(imageUri: string) {
    try {
        const visionInfo = { pixelMap: await loadPixelMap(imageUri) };
        const result = await textRecognition.recognizeText(visionInfo);
// 加长部分:
// 假设用户希望进一步定制识别行为,可以传递一个带有附加配置的对象来优化性能。例如:
const advancedConfig = { isDirectionDetectionSupported: false };
const advancedResult = await textRecognition.recognizeText(visionInfo, advancedConfig);
console.info('高级识别结果:', advancedResult);
// 此外,用户可以将结果导出到文件或进行进一步的处理
saveRecognitionResult(advancedResult);
function saveRecognitionResult(result) {
    console.info('结果已保存:', result.value);
    // 在这里可以实现将结果写入文件或数据库的逻辑
}
        console.info('识别结果:', result.value);
        result.blocks.forEach((block) => {
            console.info(`段落内容: ${block.value}`);
            block.lines.forEach((line) => {
                console.info(`  行内容: ${line.value}`);
                line.words.forEach((word) => {
                    console.info(`    单词: ${word.value}`);
                });
            });
        });
    } catch (error) {
        console.error('文本识别失败:', error);
    }
}
async function loadPixelMap(imageUri) {
    // 实现加载图像为PixelMap的逻辑
    return await someImageLibrary.loadPixelMap(imageUri);
}
const imagePath = '/data/media/sample_image.jpg';
recognizeTextFromImage(imagePath);


第四步:构建用户界面

为了让用户可以直观地体验文本识别功能,我设计了一个简单的界面,支持图像选择和识别结果的展示。

ArkUI界面实现

以下是界面的实现代码:

import { View, Text, Button, Image } from '@ohos.arkui';
export default View.create({
    build() {
        return (
            {
                type: "flex",
                flexDirection: "column",
                children: [
                    {
                        type: Text,
                        content: "文本识别应用",
                        style: { height: "50vp", fontSize: "20vp", textAlign: "center" },
                    },
                    {
                        type: Image,
                        src: this.imageUri || '',
                        style: { height: "200vp", width: "200vp", margin: "20vp" }
                    },
                    {
                        type: Button,
                        content: "选择图片",
                        style: { height: "50vp", marginTop: "20vp" },
                        onClick: this.onSelectImage
                    },
                    {
                        type: Button,
                        content: "识别文本",
                        style: { height: "50vp", marginTop: "10vp" },
                        onClick: this.onRecognizeText
                    }
                ]
            }
        );
    },
    onSelectImage() {
        // 模拟选择图片
        this.imageUri = '/data/media/sample_image.jpg';
        console.info('图片选择完成:', this.imageUri);
    },
    async onRecognizeText() {
        await recognizeTextFromImage(this.imageUri);
    }
});


第五步:性能优化与功能扩展

在项目开发过程中,我还探索了如何通过配置选项优化性能。例如,在不需要文字方向检测的情况下,可以通过以下方式禁用此功能以提升处理速度:

const configuration = { isDirectionDetectionSupported: false };
const result = await textRecognition.recognizeText(visionInfo, configuration);

此外,还可以扩展支持更多语言的功能,通过getSupportedLanguages接口获取当前支持的语言列表:

const languages = await textRecognition.getSupportedLanguages();
console.info('支持的语言列表:', languages);


最后的小总结

研究完HarmonyOS Next Core Vision Text Recognition API 13,还是很震撼的,之前非常难的东西目前也可以一个API就搞定了,特别舒服,同时也认识到了鸿蒙生态为开发者提供的便捷与强大。从服务的初始化到界面构建,再到性能优化,每一个步骤都让我感受到技术的魅力。

未来,我计划将这一技术应用于实际项目,例如开发票据管理工具或实时翻译应用。如果你也对文本识别感兴趣,不妨动手尝试,从简单的功能开始,逐步实现更复杂的需求!

当然如果你也在这一领域研究,不妨关注我,我们一起进步~!

目录
打赏
0
10
11
2
160
分享
相关文章
AI 程序员的4个分身 | 代码生成专家+注释精灵+API集成助手+智能调试伙伴
AI 程序员的4个分身 | 代码生成专家+注释精灵+API集成助手+智能调试伙伴
111 35
自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator
在完成文本识别和人脸检测项目后,我深入学习了HarmonyOS Next API 13中的Core Vision Face Comparator API,开发了一个简单的人脸比对工具。该API能进行高精度人脸比对并给出相似度评分,应用场景广泛,如照片分类、身份认证、个性化服务等。通过初始化服务、加载图片、实现比对功能和构建用户界面,最终实现了可靠的人脸比对功能。未来计划将此技术应用于更复杂的场景,如照片管理和个性化服务,并探索与其他AI能力的结合。如果你也对人脸比对感兴趣,不妨从简单的比对功能开始,逐步实现自己的创意!
128 61
自学记录鸿蒙API 13:实现多目标识别Object Detection
多目标识别技术广泛应用于动物识别、智能相册分类和工业检测等领域。本文通过学习HarmonyOS的Object Detection API(API 13),详细介绍了如何实现一个多目标识别应用,涵盖从项目初始化、核心功能实现到用户界面设计的全过程。重点探讨了目标类别识别、边界框生成、高精度置信度等关键功能,并分享了性能优化与功能扩展的经验。最后,作者总结了学习心得,并展望了未来结合语音助手等创新应用的可能性。如果你对多目标识别感兴趣,不妨从基础功能开始,逐步实现自己的创意。
212 60
|
2月前
|
自学记录鸿蒙API 13:PreviewKit从文件预览到应用开发
通过学习API 13,我深入研究了**PreviewKit(文件预览服务)**。该模块支持快速预览多种文件类型(文本、图片、视频、音频、PDF等),为文件管理类应用提供系统级支持。本文分享了从搭建开发环境到实现单文件和多文件预览的全过程,并介绍了如何构建一个实用的文件预览助手应用。通过实践,不仅掌握了技术细节,还提升了个人开发能力。希望这些经验能为其他开发者带来启发与帮助。
61 10
自学记录鸿蒙API 13:PreviewKit从文件预览到应用开发
自学记录鸿蒙 API 13:骨骼点检测应用Core Vision Skeleton Detection
骨骼点检测技术能够从图片中识别出人体的关键骨骼点位置,如头部、肩部、手肘等,广泛应用于运动健身指导、游戏交互、医疗辅助、安全监控等领域。我决定深入学习HarmonyOS Next API 13中的Skeleton Detection API,并开发一个简单的骨骼点检测应用。通过理解API核心功能、项目初始化与配置、实现检测功能、构建用户界面,以及性能优化和功能扩展,逐步实现这一技术的应用。未来计划将其应用于健身指导和智能监控领域,探索与其他AI能力的结合,开发更智能的解决方案。如果你也对骨骼点检测感兴趣,不妨一起进步!
175 9
自学记录鸿蒙 API 13:实现人脸检测 Core Vision Face Detector
本文介绍了基于HarmonyOS Next API 13中的Core Vision Face Detector API实现人脸检测小应用的过程。通过研究发现,该API不仅支持人脸检测框的定位,还能识别关键点(如眼睛、鼻子和嘴角位置)及人脸姿态信息。文章详细记录了开发历程,包括项目初始化、权限配置、图像加载与人脸检测、用户界面设计,以及性能优化和功能扩展的思路。应用场景涵盖身份验证、照片管理和实时交互等。未来计划将技术应用于智能照片管理工具,提供更高效的照片分类体验。欢迎对人脸检测技术感兴趣的读者一起探讨和进步。
134 7
鸿蒙开发:文本合成语音
在鸿蒙当中,如何实现根据指定的文本进行合成语音合成播放呢,其实也是非常的简单,因为鸿蒙当中也有textToSpeech。
自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
本文介绍了使用HarmonyOS的Calendar Kit开发日程管理应用的过程。通过API 13版本,不仅实现了创建、查询、更新和删除日程等基础功能,还深入探索了权限请求、日历配置、事件添加及查询筛选等功能。实战项目中,开发了一个智能日程管理工具,具备可视化管理、模糊查询和智能提醒等特性。最终,作者总结了模块化开发的优势,并展望了未来加入语音助手和AI推荐功能的计划。
172 1
速卖通商品详情接口(速卖通API系列)
速卖通(AliExpress)是阿里巴巴旗下的跨境电商平台,提供丰富的商品数据。通过速卖通开放平台(AliExpress Open API),开发者可获取商品详情、订单管理等数据。主要功能包括商品搜索、商品详情、订单管理和数据报告。商品详情接口aliexpress.affiliate.productdetail.get用于获取商品标题、价格、图片等详细信息。开发者需注册账号并创建应用以获取App Key和App Secret,使用PHP等语言调用API。该接口支持多种请求参数和返回字段,方便集成到各类电商应用中。
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
26 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等