楼主

7070发表于 2019-08-15 21:11:35
只看该作者楼主

图片分类标签、文字图像超分辨率、简单背景OCR、码检测、语音识别FAQ [复制链接]

一、图片分类标签

Q1 没有调用接口的prepare()方法可以直接使用detect()方法吗?

A 可以的,在detect()方法中会默认启动引擎,如果引擎已经启动则不会再次启动,开发者可以放心使用。

Q2 release()方法是什么时候调用?

A

release()方法会卸载引擎中已经加载的模型,请在应用不再使用标签检测时及时卸载模型,释放资源。如:

LabelDetector labelDetector = new LabelDetector(this)

for(……) {

JSONObject jsonLabel = labelDetector.detect(frame,null);

Label label = labelDetector.convertResult(jsonLabel);

//do something

}

labelDetector.release();

二、文字图像超分辨率

Q1 没有调用接口的prepare()方法可以直接使用detect()方法吗?

A 可以的,在detect()方法中会默认启动引擎,如果引擎已经启动则不会再次启动,开发者可以放心使用。

Q2 release()方法是什么时候调用?

A 请在应用不再使用场景检测时及时卸载模型,释放资源。

Q3 是否支持多线程调用?

A HiAi Engine 不支持同一应用使用多线程调用同一接口,这样会导致某一线程调用release方法后,卸载模型,导致正在运行的另一些线程出错。事实上,由于NPU硬件底层也是排队执行多任务,所以多线程执行同一功能达不到并行的效果。另外,引擎支持使用多线程调用不同接口,如开启两个线程同时使用美学评分和文字图像超分接口。

三、简单背景OCR

Q1 没有调用接口的prepare()方法可以直接使用detect()方法吗?

A 可以的,在detect()方法中会默认启动引擎,如果引擎已经启动则不会再次启动,开发者可以放心使用。

Q2 聚焦拍照OCR API是否可用于截屏图片的文字识别?

A 可以的,聚焦拍照OCR相较于手机截屏OCR有着更广的应用范围,支持通过相机拍摄的图片、网络图片等,也可直接应用于手机截屏的图片数据;但手机截屏OCR对手机截屏的场景做了针对性优化,在手机截屏的场景下,手机截屏OCR API的性能和检测效果均优于聚焦拍照OCR API,因此,如果应用的使用场景仅涉及截屏图片,建议选用手机截屏OCR API,即,将引擎类型设置为:TextDetectType.TYPE_TEXT_DETECT_SCREEN_SHOT_GENERAL。

Q3 手机截屏OCR API,对自然场景图片的文本识别效果如何?

A 手机截屏OCR目前支持手机中App的截屏,其特点为文本行无倾斜、背景几乎为纯色。手机截屏OCR针对其特点,做了场景上的适配和性能上的优化。而自然场景图片主要是通过相机拍照获取,图片中的文本受到光照、倾斜、复杂背景等因素影响,使用手机截屏OCR API对自然场景图片进行文本识别的效果非常不理想。因此,针对自然场景图片的OCR需求建议设置引擎类型为:TextDetectType.TYPE_TEXT_DETECT_FOCUS_SHOOT;TextDetectType.TYPE_TEXT_DETECT_FOCUS_SHOOT_EF。

Q4 当前OCR API支持哪些语言?

A 当前,手机截屏OCR支持对中英文的识别。聚焦拍照OCR支持中文、英文、德语、法语、意大利语、西班牙语,以及葡萄牙语,并将在短期内开放对日语、韩语,以及俄语的支持,具体开放日期请关注相关开发文档。

Q5 当前OCR API支持哪些字体?

A 目前,手机截屏OCR支持手机中常用的字体,如思源黑体、黑体、宋体、楷体等;聚焦拍照OCR支持常见的印刷体。

Q6 OCR API是端测的还是云测的?

A 手机截屏OCR和聚焦拍照OCR均为端侧能力,在无网络连接的环境下仍可正常使用。其中,聚焦拍照OCR对德语、法语、意大利语、西班牙语,以及葡萄牙语的识别,首次使用需联网加载模型,后续使用无需网络依赖。

四、码检测

Q1 没有调用接口的prepare()方法可以直接使用faceCompare()方法吗?

A 可以的,在faceCompare()方法中会默认启动引擎,如果引擎已经启动则不会再次启动,开发者可以放心使用。

Q2 release()方法是什么时候调用?

A release()方法会卸载在码检测相关组件,请在应用不再使用码检测时及时卸载模型,释放资源。

五、语音识别

Q1 writePcm()什么时候调用?

A 开发者可以将获取到的语音数据通过writePcm()方法写入到引擎中,引擎通过识别解码,将语音转化为相应的文本。同时引擎支持自录音和从文件读取的方式进行识别,初始化引擎时可以通过配置ASR_AUDIO_SRC_TYPE参数来实现。文件读取的方式可以进行批量的文件测试。

Q2 cancel()与stopListening()方法的区别是什么?

A 当用户已经启动了识别后,即识别的过程中,突然想停止上述两种方法都可以停下来,差别是: cancel()停止但是不上报当前已经识别的结果; stopListening()停止且会把当前的结果刷新上报显示。

Q3 是否支持多线程调用?

A HiAi Engine 不支持同一应用使用多线程调用同一接口,这样会导致某一线程调用release方法后,卸载模型,导致正在运行的另一些线程出错。故多线程执行同一功能达不到并行的效果。另外,由于Android同一时刻只能有一个录音线程在,故语音识别本身不支持多线程的并发。但是引擎支持使用多线程调用不同接口,如开启两个线程同时使用美学评分和ASR接口。


举报

您需要登录后才可以回帖

登录注册
发表回复