当前用户在使用各类应用时,文字、图片和视频已经成为互联网内容的主要载体,许多用户在浏览过程中通常想要选取页面上的文字或者得到图片或者视频画面的具体信息。比如,识别文本中的特定实体(如电话号码、邮箱、网址、地址、时间等),并进行快捷操作,例如直接拨打电话、打开网址、创建日程等;或者对图片中的物品或场景进行抠图,然后进行识图搜索,找到相似或相关的信息。

HarmonyOS SDK场景化视觉服务(Vision Kit)提供AI识图功能,通过聚合OCR(Optical Character Recognition)、主体分割、实体识别、多目标识别等AI能力,提供场景化的文本识别、主体分割、识图搜索功能。AI识图功能主开关入口在基础控件API列表中,如果您接受AI识图默认的交互和功能,仅需使用基础控件提供的相关使能接口打开功能开关即可。

识图功能提供如下能力:

•识别文字

用户长按文本选取文字或持续长按文本中的电话号码、邮箱、网址、地址、时间等实体,可触发对应实体的快捷操作,如持续长按文本中的时间,可触发"新建日程"快捷操作入口。

•识图搜索

用户抠图后可基于抠出的主体进行识图搜索,开发者也可以主动触发目标标识,触发后会识别图中的动物、植物、建筑物等目标并用相应的ICON标识,用户点击ICON也可以进行识图搜索,搜索结果会以模态窗的方式为用户呈现。

•主体分割

用户长按主体分割,分割后用户可以完成复制,分享,全选,识图搜索等功能。

•AIButton

AIButton承载了电话号码、邮箱、网址、地址、时间等实体的显性下划线标识(点击后出现快捷操作菜单),原图翻译(系统设置语种与图片上文本语种不一致且能将图中文本翻译为系统当前设置的语种时出现),表格提取(图片中存在表格时出现)等功能特性。配置AIButton属性可见后,会对图片进行预分析,当图片中存在文本且文本区域大于图片区域的5%时AIButton才会显示。

开发步骤

1.将AI识图控件相关的类添加。

import { visionImageAnalyzer } from '@kit.VisionKit';
import { BusinessError } from '@kit.BasicServicesKit';

2.初始化VisionImageAnalyzerController对象。

private visionImageAnalyzerController: visionImageAnalyzer.VisionImageAnalyzerController = new visionImageAnalyzer.VisionImageAnalyzerController();

3.设置界面属性AIButton可见,订阅事件。

aboutToAppear(): void {
this.visionImageAnalyzerController?.setAIButtonVisibility(true); this.visionImageAnalyzerController.on('aiButtonStatusChange', (aiButtonState: visionImageAnalyzer.AIButtonStatus) => {
console.info("DEMO_TAG", `aiButtonStatusChange result: ${JSON.stringify(aiButtonState)}`)
})
this.visionImageAnalyzerController.on('imageAnalyzerVisibilityChange', (visibility: visionImageAnalyzer.ImageAnalyzerVisibility) => {
console.info("DEMO_TAG", `imageAnalyzerVisibilityChange result: ${JSON.stringify(visibility)}`)
})
this.visionImageAnalyzerController.on('textAnalysis', (text: string) => {
console.info("DEMO_TAG", `textAnalysis result: ${JSON.stringify(text)}`)
})
this.visionImageAnalyzerController.on('selectedTextChange', (selectedText: string) => {
console.info("DEMO_TAG", `selectedTextChange result: ${JSON.stringify(selectedText)}`)
})
this.visionImageAnalyzerController.on('subjectAnalysis', (subjects: visionImageAnalyzer.Subject[]) => {
console.info("DEMO_TAG", `subjectAnalysis result: ${JSON.stringify(subjects)}`)
})
this.visionImageAnalyzerController.on('selectedSubjectsChange', (subjects: visionImageAnalyzer.Subject[]) => {
console.info("DEMO_TAG", `selectedSubjectsChange result: ${JSON.stringify(subjects)}`)
})
this.visionImageAnalyzerController.on('analyzerFailed', (error: BusinessError) => {
console.error("DEMO_TAG", `analyzerFailed result: ${JSON.stringify(error)}`)
})
}

4.绑定VisionImageAnalyzerController对象,可以控制识图相关的交互。

build() {
Stack() {
// 需要替换您自己的资源图片,存放在resources/base/media目录下
Image($r('app.media.img'), {
types: [ImageAnalyzerType.TEXT, ImageAnalyzerType.SUBJECT, ImageAnalyzerType.OBJECT_LOOKUP],
aiController: this.visionImageAnalyzerController
})
.width('100%')
.height('100%')
.enableAnalyzer(true)
.objectFit(ImageFit.Contain)
}.width('100%').height('100%')
}

5.取消订阅事件。

aboutToDisappear(): void {
this.visionImageAnalyzerController.off('aiButtonStatusChange')
this.visionImageAnalyzerController.off('imageAnalyzerVisibilityChange')
this.visionImageAnalyzerController.off('textAnalysis')
this.visionImageAnalyzerController.off('selectedTextChange')
this.visionImageAnalyzerController.off('subjectAnalysis')
this.visionImageAnalyzerController.off('selectedSubjectsChange')
this.visionImageAnalyzerController.off('analyzerFailed')
}

了解更多详情>>

访问场景化视觉服务联盟官网

获取AI识图开发指导文档

从图像到信息,AI识图开启智能识别新时代的更多相关文章

  1. 全景智慧城市——VR全景,开启VR营销新时代

    全景是一种新兴的富媒体技术. 与视频.声音.图片等传统主流媒体最大的区别是"可操作,可交互". 全景给人以三维立体感觉的实景360°全方位图像,此图像最大的三个特点: 全方位:展示 ...

  2. 通过AI识图判断图片是否为小票

    先在百度智能云中创建一个应用加入以下标记功能(没有智能云账号可以去创建一个,创建应用也都是些基本操作) 本次只用到标记的功能. 此功能在图像识别下面. 创建应用后,页面会出现平台分配的密钥:API K ...

  3. 如何快速将百度大脑AI技术内置智能小程序中

    实现效果: 该AI智能小程序目前集成了百度AI开放平台数十个AI服务产品功能,包括人脸识别.文字识别.表格识别.红酒识别.货币识别.地标识别.手势识别.商标识别.果蔬识别.菜品识别等图片识别功能,以及 ...

  4. 前端AI切图技巧

    AI的基本使用 1.选中多个不同图层. 首先在AI右边工具栏找到“图层” 然后选择需要切图的图层(按住“ctrl”点击) 最后拖到PS里面的新建的图层. 还有个问题,就是图层关联太多,无法拖动某些图层 ...

  5. 安卓开发 利用百度识图api进行物体识别(java版)

    之前的随笔中,已经实现了python版本调用api接口,之所以使用python是因为python比java要简洁. 但是我发现在使用过程中,chaquopy插件会弹出底部toast显示"un ...

  6. 安卓开发 利用百度识图api进行物体识别

    前文 之前的随笔中,已经通过相机或相册获取到了我们想要的图片,接下来进行识图api的配置工作.我使用的是百度的api,利用python获取信息,并在MainActivity中进行调用来输出信息. 一. ...

  7. OpenResy+Lua 利用百度识图 将图片地址解析成文字

    LUA代码:(注:LUA里有一个调用百度识图的接口IP:123.125.115.189(stu.baidu.com),不知为什么我的虚拟机无法解析stu.baidu.com,所以我只能PING出IP来 ...

  8. 用VS2015打开cshtml识图文件的时候会报错 如指定的文件不存在

    用vs2015打开cshtml识图文件的时候会报错.百度后得到解决方法如下: 先关闭VS2015, 拷贝:%LocalAppData%\Microsoft\VisualStudio\14.0\Comp ...

  9. python3 自动识图

    一.安装依赖库 pip install pytesseract pip install pillow 二.安装识图引擎tesseract-ocr https://pan.baidu.com/s/1Qa ...

  10. 弱电系统标准CAD图例识图讲解

    弱电系统标准CAD图例识图讲解 http://www.360doc.com/content/17/0317/16/33642774_637680009.shtml

随机推荐

  1. ArrayList源码分析(基于JDK1.6)

    不积跬步,无以至千里:不积小流,无以成江海.从基础做起,一点点积累,加油! <Java集合类>中讲述了ArrayList的基础使用,本文将深入剖析ArrayList的内部结构及实现原理,以 ...

  2. msde2000的关于无法访问lonle实例的master数据库恢复

    某次关机重启后,lonele数据库实例无法访问,查看发现相应的服务(MSSQL$LONELE2.SQLAgent$LONELE2)无法启动. --------------------------- 服 ...

  3. ZJSU五月多校合训

    强度焦虑制造者 具体而言,zszz3在每个游戏版本中都会推出一名新角色,或加强一名旧角色.玩家必须将这名新角色或 被加强的旧角色编入队伍,否则就会落后于版本. 而编队数量是有限的,这意味着玩家可能不得 ...

  4. 开源的 Linux 游戏平台「GitHub 热点速览」

    <越狱>.<迷失>.<西部风云>等经典美剧背后的民间字幕翻译团队--人人影视,由于 AI 翻译的崛起.官方中文字幕的普及和版权问题,最终决定以开源的方式,为这段旅程 ...

  5. python3(iJmeter-master)接口测试程序部署实践

    记录学习性能测试过程遇到的问题,加油! 环境 安装环境如下: Windows 10 1803 VMWare Workstation 15 Pro Centos Linux release 7.9.20 ...

  6. Dart代码混淆

    Dart代码混淆 代码混淆是修改应用程序的二进制文件以使其更难被人类理解的过程.混淆会在编译后的 Dart 代码中隐藏函数和类名称,将每个符号替换为另一个符号. Flutter 的代码混淆仅适用于re ...

  7. 【C#】接口的基本概念

    目录 基本 什么是接口 接口与抽象类的区别 抽象类 接口 实例 设计接口 基本 什么是接口 C#接口(interface)是:用来定义一种程序的协定 实现接口的类或者结构要与接口的定义严格一致. 有了 ...

  8. Base64解码、Base64编码、Base64加密解密规则

    转换规则:进行Base64转换的时候,将3个byte(3*8bit = 24bit)的数据,先后放入一个24bit的缓冲区中,先来的byte占高位.数据不足3byte的话,于缓冲器中剩下的bit用0补 ...

  9. 揭秘vivo百亿级厂商消息推送平台的高可用技术实践

    本文由vivo 互联网服务器团队Yu Quan分享,本文收录时有内容修订和重新排版. 1.引言 如今,Android端的即时通讯IM这类应用想实现离线消息推送,难度越来越大(详见<Android ...

  10. linux下查看文件行数和列数

    查看行数: wc -l 文件名 查看列数: cat 文件名 | awk '{print NF}' 注意:默认是\t分割 但是可以使用-F参数指定分隔符,例如以 | 进行分割: cat 文件名 | aw ...