写点什么

HarmonyOS NEXT AI 基础视觉服务 - 文字识别

作者:zhousg
  • 2025-03-30
    北京
  • 本文字数:1532 字

    阅读完需:约 5 分钟

案例描述

这是一个基于 AI 基础视觉服务实现的文字识别案例,通过调用设备相机拍摄照片后识别图片中的文字内容。

实现步骤:

1. 模块导入

// 导入功能模块import { camera, cameraPicker } from '@kit.CameraKit';import { fileIo } from '@kit.CoreFileKit';import image from '@ohos.multimedia.image';import { textRecognition } from '@kit.CoreVisionKit';
复制代码

2. 相机调用与图片获取

// 创建相机选择器实例const res = await cameraPicker.pick(getContext(), [  cameraPicker.PickerMediaType.PHOTO], {  cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK});
// 获取拍摄的图片URIconst imageUri = res.resultUri;
复制代码

3. 图像处理流程

// 将图片转换为可识别的像素图const fileSource = await fileIo.open(imageUri, fileIo.OpenMode.READ_ONLY);const imageSource = image.createImageSource(fileSource.fd);const pixelMap = await imageSource.createPixelMap();
复制代码

4. 文字识别核心实现

// 配置视觉识别参数let visionInfo: textRecognition.VisionInfo = {  pixelMap: pixelMap};
// 执行文字识别并获取结果const recognitionResult = await textRecognition.recognizeText(visionInfo);this.text = recognitionResult.value;
复制代码

5. 界面构建与交互

@Entry@Componentstruct TextRecognition {  @State text: string = '';
// 按钮点击事件处理 async openCamera() { // 整合上述步骤的完整调用逻辑 }
build() { Column() { Button('拍照 文字识别') .onClick(() => this.openCamera()) Text(this.text) .fontSize(20) .margin(10) } .padding(20) }}
复制代码

2. 完整业务逻辑

整合各功能模块的完整调用流程

总结梳理:

核心点

  1. 相机调用需设备权限与硬件支持

  2. 图像转换确保兼容不同格式图片

  3. 文字识别接口返回结构化识别结果

完整代码

// 原始代码保持完整,仅添加说明注释import { camera, cameraPicker } from '@kit.CameraKit';import { fileIo } from '@kit.CoreFileKit';import image from '@ohos.multimedia.image';import { textRecognition } from '@kit.CoreVisionKit';
@Entry@Componentstruct TextRecognition { @State text: string = '';
// 主功能方法:整合相机调用与文字识别 async openCamera() { // 步骤1:调用相机拍摄 const res = await cameraPicker.pick(getContext(), [cameraPicker.PickerMediaType.PHOTO], { cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK })
// 步骤2:检查OCR能力可用性// 使用canIUse接口检测设备是否支持文字识别能力 if (canIUse('SystemCapability.AI.OCR.TextRecognition')) { // 步骤3:处理图像文件 const fileSource = await fileIo.open(res.resultUri, fileIo.OpenMode.READ_ONLY); const imageSource = image.createImageSource(fileSource.fd); const chooseImage = await imageSource.createPixelMap();
// 步骤4:执行文字识别 let visionInfo: textRecognition.VisionInfo = { pixelMap: chooseImage }; const data = await textRecognition.recognizeText(visionInfo); // 更新识别结果到界面 this.text = data.value } }
// UI布局 build() { Column() { Button('拍照 文字识别') .onClick(() => { this.openCamera() }) Text(this.text) .fontSize(20) .margin(10) } .height('100%') .width('100%') }}
复制代码


发布于: 刚刚阅读数: 3
用户头像

zhousg

关注

还未添加个人签名 2025-03-14 加入

还未添加个人简介

评论

发布
暂无评论
HarmonyOS NEXT AI基础视觉服务-文字识别_zhousg_InfoQ写作社区