图片检索是很多应用里容易被低估的功能。相册、资料管理、商品收藏和学习工具都可能积累大量图片,但传统检索通常依赖文件名、标签或人工分类。图片一多,用户就很难记得自己要找的内容存在哪里。
HarmonyOS 7 的 AI 开放能力提供了新的实现思路。官方能力介绍中,Core Vision Kit 提供通用文字识别等机器视觉基础能力;HarmonyOS 7 还新增了通过文本搜索图片的能力,支持基于文本语义检索图片。
<Cite refs={["turn427496search5"]}/>在设计图片检索功能时,我不会把 OCR 和语义检索当成同一件事。OCR 解决的是“图片里写了什么”,适合查找课件截图、票据和包含文字的资料;语义检索关注的是“图片表达了什么内容”,例如用户输入“海边日落”寻找对应的照片。
我的第一步是建立统一的图片索引结构,把原始图片和检索信息分开管理。
interface ImageRecord {
id: string;
uri: string;
ocrText?: string;
description?: string;
createdAt: number;
}
function normalizeQuery(query: string): string {
return query
.trim()
.replace(/\s+/g, ' ');
}
function matchOcrText(
records: ImageRecord[],
query: string
): ImageRecord[] {
const keyword = normalizeQuery(query).toLowerCase();
if (!keyword) {
return [];
}
return records.filter((record) =>
(record.ocrText ?? '')
.toLowerCase()
.includes(keyword)
);
}这里的 matchOcrText() 是基础文本匹配示例,并不代表语义检索。真正的图片语义搜索应调用目标 SDK 提供的对应能力,或者使用项目已有的图像特征索引服务;具体接口、输入格式和结果结构需要以官方文档为准。
在实际架构中,我会把检索流程拆成三个部分:图片采集与索引、查询处理、结果展示。图片索引可以在图片导入时逐步生成,避免每次搜索都重新处理全部图片。查询时先判断用户输入更像是文字关键词还是自然语言描述,再选择合适的检索路径。最后对结果做排序,并提供清晰的空结果提示。
这其中还有几个容易忽略的问题。首先是性能:图片数量较多时,不应在主线程中进行大量耗时处理,也不宜每次打开页面都重新生成索引。其次是隐私:图片可能包含人脸、证件、聊天截图等敏感信息,必须明确处理范围,尽量减少不必要的数据传输,并遵循权限与隐私要求。最后是结果可信度:语义检索可能返回相似但不完全匹配的图片,界面上应该允许用户进一步筛选,而不是把检索结果当成绝对准确的判断。
我还会重点验证图片方向、低分辨率图片、包含大量文字的截图以及相似场景图片等情况,比较不同查询方式的召回结果。如果业务场景要求高精度,就需要准备一组有代表性的测试数据,检查结果排序,而不是只用几张示例图片证明功能可用。这次实践让我意识到,AI 视觉能力真正的价值不是简单地给图片贴上“智能”标签,而是减少用户整理和查找内容的成本。对于已有图片管理应用来说,语义检索可以与 OCR、标签和时间筛选互补,逐步形成更自然的内容发现体验。
sgduqg
我还没有写个人简介......
帖子
提问
粉丝




0
京公网安备:11010502051901号