在这里插入图片描述

适用AI工具:DevEco Code / Cursor
前置博客:第08篇
预计阅读时间:20分钟

一、Core Vision Kit 能力全景

Core Vision Kit 把端侧视觉 AI 做成了开箱即用的标准 Kit,核心能力五件套:

能力典型场景关键接口
通用文字识别 OCR证件/单据/截图取字textRecognition
人脸检测拍照人脸框、活体辅助faceDetector
图像超分老照片/缩略图放大imageSuperResolution
主体分割抠图、证件照换底imageSegmentation
文搜图相册语义检索visualSearch

全部端侧执行,隐私合规压力小。本篇以"扫描名片 → 识别入通讯录"为主线,串起 OCR 与图像超分两个最常用能力。

二、集成总流程

提文字

提人脸

放大

高

低

拍照/选图

PixelMap 预处理

能力路由

OCR 文字识别

人脸检测

图像超分

结构化解析: 姓名/电话/邮箱

解析置信度?

直接写入通讯录

回传AI: 生成人工核对UI建议

高清图存储/展示

释放 VisionInfo 资源

三、OCR:从图片到结构化名片

3.1 基础识别

import { textRecognition } from '@kit.CoreVisionKit';

async function recognizeCard(pixelMap: image.PixelMap): Promise<string> {
  const info: textRecognition.VisionInfo = { pixelMap: pixelMap };
  const config: textRecognition.Configuration = {
    isDirectionDetection: true    // 自动方向检测,名片横竖拍都能识别
  };
  const result = await textRecognition.recognizeText(info, config);
  return result.blocks
    .map(b => b.value)
    .join('\n');
}

3.2 AI 用法:从散文本到结构化数据

OCR 的原始输出是按行的散文本,业务需要的是"姓名 / 电话 / 邮箱 / 公司"字段。这个从散文本到结构化 JSON 的解析器,正是 AI 的甜点任务:

OCR 输出名片散文本(附样例 20 条)。生成 ArkTS 解析函数:
按正则+启发式规则提取 name/phone/email/company/title,
返回置信度,低置信字段标记 requireReview。
附带 20 条样例的单元测试。

AI 会生成"正则抓电话邮箱 + 行位置启发式判断姓名(通常首行且最短)+ 公司名兜底规则"的完整解析器。20 条真实 OCR 输出做测试数据,解析准确率可量化调优——让 AI 既写解析器又写测试,你自己只负责评估准确率。

四、图像超分:让缩略图变高清

名片照片在列表页是缩略图,详情页需要高清图。图像超分把低分辨率图放大 2–4 倍并重建细节:

import { imageSuperResolution } from '@kit.CoreVisionKit';

async function upscale(pixelMap: image.PixelMap): Promise<image.PixelMap> {
  const param: imageSuperResolution.RequestParam = {
    scale: 3,                       // 2/3/4倍可选
    pixelFormat: image.PixelMapFormat.RGBA_8888
  };
  const result = await imageSuperResolution.process(pixelMap, param);
  return result.output;             // 直接可用于 Image 组件或落盘
}

实战要点:超分按需触发——列表页直接显示原图缩放(GPU 做的事别让 NPU 抢),点开详情时再对单图超分并缓存结果。超分耗时与分辨率正相关,大图建议先压缩到目标尺寸再超分。

五、性能与资源管理

视觉 Kit 的 API 大多返回 PixelMap,PixelMap 不释放是视觉功能内存泄漏的第一大来源。统一封装使用模式:

// 包装器:用完即释放,AI 生成后可作为团队规范模板
async function withVision<T>(
  make: () => Promise<image.PixelMap>,
  use: (pm: image.PixelMap) => Promise<T>
): Promise<T> {
  const pm = await make();
  try {
    return await use(pm);
  } finally {
    pm.release();    // 无论成功失败都释放
  }
}

把这段模式写进 Cursor Rules(vision-pm.mdc),要求"所有 Vision 调用必须经 withVision 包装"。一条规则消灭一类泄漏,这是 AI 辅助开发里投入产出比最高的操作。

六、AI 辅助的视觉功能测试

视觉功能测试难在"测试图片从哪来"。AI 的两个用法:

  1. 生成测试数据清单:让它列出 OCR 失败的高危图片类型清单(阴影遮挡、反光、异形排版、手写体),你按清单实拍建测试集
  2. 评估脚本:把识别结果与标准答案做对比,AI 生成字符准确率(CER)计算脚本,量化每次调整的效果

样例名片应用实测:正常印刷体名片 CER 约 2–3%;反光/竖排样本 CER 升到 15%+——按清单补拍前处理(裁剪 + 对比度增强)后回落到 5% 以内。结论:Kit 能力上限固定,前处理决定下限。

七、下一步

端侧 AI 能力(语音 + 视觉)已经就位。下一篇转入质量保障篇:应用安全加固全链路。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐