鸿蒙(HarmonyOS)原生AI能力之文本识别
原生智能介绍
-
在之前开发中,很多场景我们是通过调用云端的智能能力进行开发。例如文本识别、人脸识别等。
-
原生即指将一些能力直接集成在本地鸿蒙系统中,通过不同层次的AI能力开放,满足开发者的不同场景下的诉求,降低应用开发门槛,帮助开发者快速实现应用智能化
有哪些原生智能能力
- 基础视觉服务
- 基础语音服务
- 端侧模型部署
- 端侧推理
- 意图框架
- …
基础视觉服务 - Core Vision Kit
- Core Vision Kit(基础视觉服务)是机器视觉相关的基础能力,接下来要导入的类,都在
@kit.VisionKit
中例如本篇要讲的文字识别即是如此。
文本识别介绍与使用
-
概念:将图片中的文字给识别出来
-
使用
textRecognition
实现文本识别 -
限制:
- 仅能识别5种语言类型
- 简体中文、繁体中文、英文、日文、韩文
- 仅能识别5种语言类型
-
使用步骤
-
导入textRecognition
import { textRecognition } from '@kit.CoreVisionKit'
-
实例化
visionInfo
对象,用来准备待识别的图片(需PixelMap类型)let visionInfo: textRecognition.VisionInfo = { pixelMap: '待识别图片' };
-
实例化
TextRecognitionConfiguration
对象,设置识别配置(目前仅有是否开启朝向检测一项配置)let textConfiguration: textRecognition.TextRecognitionConfiguration = { // 是否开启朝向检测 isDirectionDetectionSupported: false };
-
调用textRecognition的
recognizeText
接口传入以上两个对象,开启识别并对识别结果进行处理,得到的是TextRecognitionResult
类型结果,这个对象的value
属性即为识别结果textRecognition.recognizeText(visionInfo, textConfiguration)
-
-
这里解释一下这几步
-
你需要用textRecognition,所以需要先找到它,也即导入,这没什么好说的
-
你需要用它来帮你识别图片,那你是不是应该把需要识别的图片给它?所以第一个参数就是给他传递一个图片,只不过这个图片只能传PixelMap类型的(这就是为什么上篇我要写PixMap的原因),但是这个图片不能直接传,要包装成VisionInfo类型的对象(虽然目前为止,这个对象只有这一个属性,但保不齐未来会加)
然后就是设置一下它识别的相关参数,它目前也只有一个参数,叫
isDirectionDetectionSupported
,设置是否开启朝向检测,因为有的图片可能是正的,有的图片可能是反的斜的。所以对于反的斜的图片如果这项开启为true,则会检测的更为准确。但是经过猫林老师肉测,其实开不开启扫描反的斜的图片,得到的结果都差不多了。所以可以看自己选择。顺便一提,这个参数可以不传,不传默认是true。然后猫林老师觉得:未来随着API发展,可能会多一些参数也说不准 -
最后即为调用其进行识别的方法,也即recognizeText开始识别
-
根据上面所说的,其实上面说的四步,也可以极简改为两步,代码如下
import { textRecognition } from '@kit.CoreVisionKit' textRecognition.recognizeText({ pixelMap: '待识别图片' })
- 解释:这里就相当于没传第二个参数,它默认值即为true,也即开启朝向检测。
-
至于如何读取相册图片,以及把图片解码变成PixelMap,不是今天分享的主题,且之前猫林老师有两篇文章分别讲过不会的可以看之前文章,所以这里直接给代码(可看注释)
// 1. 使用PhotoViewPicker选择相册图片
-