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. 完整业务逻辑
整合各功能模块的完整调用流程
总结梳理:
核心点
相机调用需设备权限与硬件支持
图像转换确保兼容不同格式图片
文字识别接口返回结构化识别结果
完整代码
// 原始代码保持完整,仅添加说明注释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
版权声明: 本文为 InfoQ 作者【zhousg】的原创文章。
原文链接:【http://xie.infoq.cn/article/6ae70bb63bace14b833872862】。文章转载请联系作者。
zhousg
关注
还未添加个人签名 2025-03-14 加入
还未添加个人简介









评论