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%')
  }
}
相关推荐
懿路向前5 小时前
HarmonyOS 粒子特效实战:马赛克切块提速 17.6×~38×:desiredRegion 重复读盘与一次解码管线(HarmonyOS)
华为·harmonyos
天府云创7 小时前
Agentic开发时代到来——鸿蒙PC三大原生开发工具公测
华为·操作系统·harmonyos·鸿蒙系统·cli·deveco·agentic
程序猿追7 小时前
Fleks 鸿蒙适配:从八个小球看实体和组件的变化
华为·harmonyos
Sunny_GMF7 小时前
Markdown 导出 HTML 实战:2.6MB 编辑器快照如何瘦身 71%(DOM 净化 + CSSOM 运行时裁剪)
编辑器·html·ai编程·harmonyos
m0_738185827 小时前
Flutter 鸿蒙化实战:the_apple_sign_in 适配 OpenHarmony,Apple 登录
flutter·华为·harmonyos·鸿蒙
神奇的代码在哪里8 小时前
原生鸿蒙 GBC 模拟器开发实录:用 Anime4K 把 160×144 画面实时放大到 1080P
harmonyos·鸿蒙·超分辨率·gbc模拟器·anime4k
m0_738185828 小时前
Flutter 鸿蒙化实战:umeng_analytics_plugin 适配 OpenHarmony,友盟统计
flutter·华为·harmonyos·鸿蒙
todoitbo8 小时前
把 XAMPP 搬到鸿蒙 PC:在鸿蒙 PC 上跑 Apache httpd 2.4.69实战项目
华为·apache·harmonyos·鸿蒙·开源鸿蒙·鸿蒙pc
JoyCong19988 小时前
即插即用,组合键可用:ToDesk 4820版本强化鸿蒙远控键鼠能力
华为·智能手机·harmonyos·远程工作·ipad
程序猿追8 小时前
漏字、换词序、空查询:用 FuzzyKot 做一次鸿蒙搜索交互排查
华为·交互·harmonyos