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

案例描述

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

实现步骤:

1. 模块导入

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

2. 相机调用与图片获取

typescript 复制代码
// 创建相机选择器实例
const res = await cameraPicker.pick(getContext(), [
  cameraPicker.PickerMediaType.PHOTO
], {
  cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK
});

// 获取拍摄的图片URI
const imageUri = res.resultUri;

3. 图像处理流程

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

4. 文字识别核心实现

typescript 复制代码
// 配置视觉识别参数
let visionInfo: textRecognition.VisionInfo = {
  pixelMap: pixelMap
};

// 执行文字识别并获取结果
const recognitionResult = await textRecognition.recognizeText(visionInfo);
this.text = recognitionResult.value;

5. 界面构建与交互

typescript 复制代码
@Entry
@Component
struct 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. 文字识别接口返回结构化识别结果

完整代码

typescript 复制代码
// 原始代码保持完整,仅添加说明注释
import { camera, cameraPicker } from '@kit.CameraKit';
import { fileIo } from '@kit.CoreFileKit';
import image from '@ohos.multimedia.image';
import { textRecognition } from '@kit.CoreVisionKit';

@Entry
@Component
struct 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%')
  }
}
相关推荐
不爱学英文的码字机器2 小时前
【鸿蒙PC命令行适配】基于OHOS SDK直接构建xz命令集(xz、xzgrep、xzdiff),完善tar.xz解压能力
华为·harmonyos
特立独行的猫a3 小时前
[鸿蒙PC命令行程序移植实战]:交叉编译移植最新openSSL 4.0.0到鸿蒙PC
华为·harmonyos·移植·openssl·交叉编译·鸿蒙pc
特立独行的猫a5 小时前
[鸿蒙PC命令行适配] 移植Aria2文件下载神器最新版到鸿蒙PC的完整教程 (附可运行程序)
harmonyos·移植·交叉编译·aria2·鸿蒙pc
特立独行的猫a6 小时前
[鸿蒙PC三方库交叉编译] libtool与鸿蒙SDK工具链的冲突解决方案:从glibc污染到参数透传的深度解析
华为·harmonyos·ndk·三方库移植·鸿蒙pc·libtool
哈__6 小时前
Flutter For OpenHarmony 鸿蒙 PC 开发入门:环境搭建 + 工程初始化(附 PC 端专属配置)
flutter·华为·harmonyos
搬砖的kk7 小时前
鸿蒙PC端二进制文件签名命令行使用指南(附实战测试)
华为·harmonyos
sam.li1 天前
鸿蒙HAR对外发布安全流程
安全·华为·harmonyos
sam.li1 天前
鸿蒙APP安全体系
安全·华为·harmonyos
ChinaDragon1 天前
HarmonyOS:通过组件导航设置自定义区域
harmonyos
人工智能知识库1 天前
华为HCIP-HarmonyOS Application Developer题库 H14-231 (26年最新带解析)
华为·harmonyos·hcip-harmonyos·h14-231