在鸿蒙(HarmonyOS)生态中,实现“识别图片内容并生成描述”通常需要结合视觉分析能力自然语言生成能力。根据对数据隐私、响应速度和业务复杂度的不同要求,开发者可以选择以下三种主流的技术路径:

方案一:利用鸿蒙原生 Vision Kit 进行基础特征提取(推荐,高隐私)

对于基础的图像内容识别,鸿蒙系统提供了基于本地 AI 的视觉服务。其核心优势在于数据不联网,完全在端侧计算,既保证了用户隐私安全,又能实现毫秒级的低延迟响应。

  • 核心能力:通过 @kit.VisionKit 提供的 visionImageAnalyzer 控件,开发者可以绑定 Image 组件,轻松实现通用文字识别(OCR)、主体分割(抠图)、多目标识别(如动物、植物、建筑物)以及人脸检测等。
  • 实现方式:在 ArkUI 的 Image 组件中传入 types(如 ImageAnalyzerType.SUBJECT)和 aiController,并调用 .enableAnalyzer(true) 即可开启。系统会自动接管长按和识图交互,开发者只需监听状态变化(如 subjectAnalysis)即可获取识别到的主体信息。

方案二:结合 Natural Language Kit 实现多模态描述生成(进阶,自动化)

如果业务不仅需要识别“图中有什么”,还需要生成一段连贯的自然语言描述(如为照片自动打标签、生成相册文案),可以结合鸿蒙的自然语言处理 Kit。

  • 核心能力:利用多模态模型(如 multimodal-v2),直接对传入的图片像素(PixelMap)进行理解并生成文本描述。
  • 实现方式:通过 nlKit.createDescriptionGenerator 初始化工具,调用 generateFromImage(pixelMap) 获取原始描述文本。随后,还可以配合 KeywordExtractor(关键词提取器)从长文本中抽取核心标签(如“海边”、“日落”),实现智能标签生成。

方案三:接入云端大模型实现深度语义理解(高阶,复杂推理)

对于需要深度理解图片背景、逻辑关系或进行发散性解读的复杂场景,端侧轻量模型可能无法满足需求,此时推荐接入云端多模态大模型。

  • 核心能力:云端大模型不仅能精准识别图像主体,还能深入追问“为什么”、“怎么用”等延展问题,甚至将抽象概念可视化。
  • 实现方式:开发者可通过 HTTP 请求调用云端大模型 API(如盘古大模型等),将图片数据与提示词(Prompt)一并发送至云端,获取具备深度逻辑和丰富细节的图像描述。这种方案适合对算力要求高、需要复杂推理的业务场景。

一、 Vision Kit:控件级 AI 与声明式交互绑定

鸿蒙原生视觉服务最大的亮点是“控件 AI 化”。对于图片预览场景,无需手动编写复杂的 OCR 或目标检测逻辑,系统直接接管交互。

// ImagePreview.ets:声明式接入 Vision Kit AI 识图
import { visionImageAnalyzer } from '@kit.VisionKit';

@Entry
@Component
struct SmartImagePreview {
  private controller: visionImageAnalyzer.VisionImageAnalyzerController = 
      new visionImageAnalyzer.VisionImageAnalyzerController();

  aboutToAppear() {
    // 监听主体分析结果(如识别到动物、植物、建筑物)
    this.controller.on('subjectAnalysis', (subjects) => {
      console.info(`识别到 ${subjects.length} 个显著主体`);
    });
    // 监听文本识别结果
    this.controller.on('textAnalysis', (text) => {
      console.info(`图片包含文本: ${text}`);
    });
  }

  build() {
    Image($r('app.media.photo'))
      // 核心:声明式开启主体分割、文本识别、识图搜索
      .types([ImageAnalyzerType.SUBJECT, ImageAnalyzerType.TEXT, ImageAnalyzerType.OBJECT_LOOKUP])
      .aiController(this.controller)
      .enableAnalyzer(true) 
      .width('100%')
      .height(300)
  }
}

二、 NL Kit + OCR:端侧多模态自动化流水线

对于“快递面单识别”、“票据信息提取”等场景,最佳实践是 Core Vision Kit (OCR) + Natural Language Kit (实体抽取) 的端侧流水线,全程数据不出设备。

// SmartReceiptParser.ets:端侧图文解析流水线
import { textRecognition } from '@kit.CoreVisionKit';
import { textProcessing, EntityType } from '@kit.NaturalLanguageKit';

export async function parseReceiptImage(pixelMap: image.PixelMap) {
  // 1. 视觉层:OCR 提取原始文本
  const visionInfo: textRecognition.VisionInfo = { pixelMap: pixelMap };
  const ocrResult = await textRecognition.recognizeText(visionInfo, {});
  const rawText = ocrResult.value;

  // 2. 语言层:NL Kit 智能实体抽取(无需正则,AI 自动结构化)
  const entities = await textProcessing.getEntity(rawText, {
    entityTypes: [EntityType.NAME, EntityType.PHONE_NO, EntityType.LOCATION]
  });

  // 3. 业务层:自动填充表单
  const structuredData = {};
  entities.forEach(entity => {
    if (entity.type === EntityType.PHONE_NO) structuredData['phone'] = entity.text;
    if (entity.type === EntityType.LOCATION) structuredData['address'] = entity.text;
  });
  return structuredData;
}

三、 Core Vision Kit:跨模态语义检索(文搜图)

HarmonyOS 7 (API 26) 引入了基于 CLIP 架构的端侧跨模态检索能力。用户输入自然语言(如“去年在海边拍的日落”),系统通过向量余弦相似度直接匹配图片,彻底颠覆传统标签搜索。

// TextToImageSearch.ets:端侧文搜图引擎
import { textSearchImage } from '@kit.CoreVisionKit';

export class ImageSearchEngine {
  // 1. 离线建库:在设备充电息屏时,后台提取图像特征向量
  static async buildLocalIndex(imagePath: string) {
    await textSearchImage.insertImage(imagePath, 'user_album');
  }

  // 2. 在线检索:用户输入自然语言,毫秒级召回匹配图片
  static async searchByPrompt(query: string): Promise<string[]> {
    // 系统自动将文本转为向量,并与本地索引进行语义匹配
    const results = await textSearchImage.search(query, { maxResults: 10 });
    return results.map(item => item.imagePath);
  }
}

四、 高阶工程实践:端云协同与防御性编程

在复杂业务中,必须考虑设备算力差异、内存限制及网络状态,设计降级与容错机制。

  1. 异步与超时保护:端侧 AI 模型加载(尤其是首次运行需下载模型)可能耗时较长,必须使用 Promise.race 设置超时(如 60s),防止 UI 线程挂起。
  2. 内存安全(防 OOM):处理高分辨率图片时,OCR 或超分操作会导致内存峰值。必须在扁平化或处理完成后,立即调用 pixelMap.release() 释放堆外内存。
  3. 端云动态降级:对于复杂的图像描述生成,优先调用端侧 nlKit 生成基础标签;若用户要求“深度解读”,或端侧返回 RESOURCE_LIMIT 错误时,无缝路由至云端多模态大模型 API。
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐