跳转至

标定绘本识别接入文档

文档状态

文件标识: TuringOS-TextBook-V1.0
系统版本: SDK
完成日期: 2022年08月20日

文档修订记录

文档版本号 修订日期 修订原因
V1.0 2022.8.20 创建文档
V1.1 2022.11.1 增加物理页码physicsPageNum字段
V1.2 2023.01.16 相似绘本: -中英文信息返回,见zhEnData字段
- 多版本相似信息返回,见similarBooks字段
- 更新绘本识别优先级的接口,见 updatePriorityRecognition()
V1.3 2023.05.10 中英文绘本返回封面音频,见zhEnData#nameUrl字段

概述

主要用来识别儿童绘本、教材,提供对应绘本教材的音频和内容。

集成步骤

1. 添加依赖库

//必须依赖库
implementation 'com.google.code.gson:gson:2.6.2'
implementation 'com.squareup.okhttp3:okhttp:3.9.0'
implementation "org.java-websocket:Java-WebSocket:1.4.0"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.aliyun.dpa:oss-android-sdk:2.9.11'//SDKV2.4.1.25 以后需加入

// 指尖&绘本
implementation 'net.sourceforge.jexcelapi:jxl:2.6.12'

2. AndroidManifest配置

添加权限

    <!--网络-->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />   
    <!--文件读写-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  
    <!--deviceID-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
    <!--绘本、指尖查词-->
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <!-- 读取手机状态,获取IMEI -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

    <!-- android 10 在application节点添加以下适配高版本 -->
     android:usesCleartextTraffic="true"
     android:requestLegacyExternalStorage="true"

3. 代码混淆

代码混淆文件proguard-project.txt,添加如下内容

    -keep class com.turing.**{ *;}
    -dontwarn com.turing.**

    -keep class com.tuling.**{ *;}
    -dontwarn com.tuling.**

    -keep class org.java_websocket.**{*;}
    -dontwarn org.java_websocket.**
    -keep class org.slf4j.**{*;}
    -dontwarn org.slf4j.**

    -keep class org.eclipse.** { *; }
    -dontwarn org.eclipse.**

4. SDK 初始化

使用绘本识别功能前调用,请先调用SDK初始化代码。(SDK初始化详情见《接入指南说明文档》)

TuringInitializer.getInstance().initV3XXX()

5. 参数配置

需要在 turing_config.json 中添加 globalConfig.camera textbook _bookCamera_节点。

textbook参数如下:

参数 类型 是否必须 说明
sceneMode int N 场景模式选择:
sceneMode=0 :表示图片横拍非镜像,例如绘本机器人、绘本台灯等(默认) 
sceneMode=1 :表示图片竖拍且镜像,例如手机+反光镜
sceneMode=2 :表示图片横拍且镜像,例如平板+反光镜
zipUrlFlag int N 是否需要内页音频压缩包
zipUrlFlag=0 :表示不需要(默认)
 zipUrlFlag=1:表示需要
categories List N 设置目标匹配的内容:
 1=中文绘本
2=英文绘本
3=语文教材
4=英语教材
5=数学教材
6=卡片
默认参数=[1,2,3,4,5],全部绘本教材
regMode int N 阅读模式:
当 regMode=0 时:领读模式(默认) 
当 regMode=1 时:指读模式
当 regMode=2 时:兼容模式(领读+指读)
其中,指读模式(=1)和兼容模式(=2)需要商务授权许可
innerAudio int N 整页音频数据(指读识别时是否需要内页整页音频,翻读不存在此字段):
0:不需要(默认) 1:需要
languageOrder int N 针对多语言版本绘本,设置版本顺序。
languageOrder=1 :中文绘本优先(默 认)
languageOrder=2:英文绘本优先
accessMode int N 设置目标匹配的绘本库:
accessMode=0 :公有库+私有库(默认) 
accessMode=1 :仅公有库
accessMode=2 :仅私有库
textFlag int N 是否返回文本:
textFlag=0 :表示不返回(默认)
textFlag=1 :表示返回(需要商务授权许可)
textFlag=3 :只返回整读文本
textFlag=4 时:返回整读+热区文本
audioType int N 选择绘本音频类型:
audioType=0 :选择高品质音频(需要商务授权许可)
audioType=1 :表示选择默认音频(默认) 不推荐使用高品质音频,会增大链路延时
osState string N 清除休眠状态,非休眠状态下不可使用。 (绘本休眠详情见官网说明)

示例如下

{
  "authorization": {
    "apikey": "您的apikey",
    "secret": "您的secret"
  },
  "globalConfig": {
    "brandModel":"您的品牌型号",
    "camera": {
      "cameraId": 1,
      "cameraApi": 2,
      "turingCameraId": 118,
      "preMirror": false,
      "mirror": true,
      "zoom": 0,
      "preRotation": -1,
      "rotation": 180
    }
  },
  "ability": {
    "bookCamera": {
      "previewWidth": 640,
      "previewHeight": 480,
      "imgQuality": 90,
      "smallImgQuality": 100
    }
    "textBook":{
      "sceneMode":0,
      "zipUrlFlag": 0,
      "categories": [
        1,2,3,4,5
      ],
      "regMode": 2,
      "innerAudio": 0,
      "languageOrder":1,
      "accessMode": 1,
      "textFlag": 3,
      "audioType": 1,
      "osState": ""
    },
  }
}

修改参数值的几种方式:

方式一:在清单文件 turing_config.json 中赋值

方式二:修改全局变量值

调用 TuringConfig.getInstance(this).configData 动态设置入参,参数同 turing_config.json。(注:需要在 startTextBookOcr() 前调用 )

val configData: ConfigData = TuringConfig.getInstance(this).configData

configData.ability.textBook.sceneMode = 2
configData.ability.textBook.regMode = 2
configData.ability.textBook.textFlag = 4
configData.ability.textBook.languageOrder = 1

方式三:动态调整

仅对本次识别生效,可设置参数有限,方法见【功能集成】中【动态设置绘本参数】

(注:需要在模型初始化成功( 成功事件见 【开启指尖OCR识别】输出说明中【MessageEvent 说明】 )后,才能调用postFingerConfig。)

6. 开启功能集成

使用说明见下面【功能集成】描述。

实例化
var turingTextBook = TuringTextBook.getInstance(this);

功能集成

1. 开启绘本识别

使用 SDK 内部相机,调用 startTextBookOcr() 就可以开始使用绘本识别功能。

方法

void startTextBookOcr(ViewGroup layout, BookListener<BaseResponse<TextBookParameters>> listener);

输入说明

参数 类型 说明
layout ViewGroup 预览界面的布局,建议使用FrameLayout
listener BookListener> 回调接口

请求示例

TuringTextBook.getInstance(this).startTextBookOcr(binding.frameLayer,new BookListener<NlpResponseBean<TextBookParameters>>() {
        @Override
        public void onSuccess(NlpResponseBean<TextBookParameters> result) {
            if (null == result) {
                return;
            }
            mUIHandler.post(() -> {
                //  下面只是简单的列出了部分操作。具体代码根据实际需求,结合字段含义来实现

                TextBookParameters bookParameters = result.getIntent().getParameters();
                if (intentCode == 200 || intentCode == 205 || intentCode == 206 || intentCode == 209) {
                    // 200-识别绘本封面成功   205-封面识别成功,热区识别成功  206-封面识别成功,热区识别失败  209-
                    TitleDataBean titleDataBean = bookParameters.getTitleData();
                    FuncDataBean fundataBean = bookParameters.getFuncData();

                    if (fundataBean != null) {
                       //封面识别成功之后会返回该书籍是否是ocr识别,是否支持指读
                    }
                    if (titleDataBean != null) {
                        // 显示封面信息
                    }

                    if (intentCode == 200) {
                        List<SimilarBookBean> similarBooks = bookParameters.getSimilarBooks();
                        if (similarBooks != null && !similarBooks.isEmpty()) {
                            // 多版本相似返回的数据
                        }

                        List<ZhEnDataBean> zhEnData = bookParameters.getTitleData().getZhEnData();
                        if (zhEnData != null && !zhEnData.isEmpty()) {
                            // 中英文相似返回的数据
                        }
                    }

                } else if (intentCode == 201 || intentCode == 208) {  
                    //201内页识别成功 208代表指读识别失败

                } else if (intentCode == 207) { 
                    //intentCode == 207代表内页识别成功,指读识别成功

                } else {
                    // 识别失败,可根据 intentCode 判断,例如:intentCode == 300绘本封面识别失败 301绘本内页识别失败。
                }
            });
        }

        @Override

        public void onImageData(byte[ ] image) {
        }

        @Override
        public void onError(int errorCode, String errMsg) {
            showToast(errMsg);
        }

        @Override
        public void onEvent(MessageEvent event) {
            Log.e(TAG, "MessageEvent.Code:" + event.getCode());
        }
 }) 

输出说明

  • BookListener 说明

接口回调为异步线程,如有更新UI操作,请切换至主线程。

    public interface BookListener<T> {
        void onSuccess(T result);//成功回调
        void onImageData(byte[] image);//图文绘本识别图片,非必须
        void onError(int errorCode,String errMsg);//错误回调,errorCode:错误码,errMsg错误信息
        void onEvent(MessageEvent event);  // 事件回调
    }
  • MessageEvent 说明

类具体包名:com.turing.book.eventbus.MessageEvent

- MessageEvent.CODE_START_ORC  开始识别,即检测到运动
- MessageEvent.CODE_RECOGNIZE_FINGER 识别手指
- MessageEvent.CODE_START_QUERY 开始查词查句
- MessageEvent.CODE_OCR_RESULT 识别结果(包含未识别到字符、识别到字符事件)
- MessageEvent.CODE_TIPS 提示信息
- MessageEvent.CAMERA_STATES_OPENING 时机:调用了开启相机方法
- MessageEvent.CAMERA_STATES_OPENED 时机:CameraDevice.StateCallback#onOpened
- MessageEvent.CAMERA_STATES_CLOSEING 时机:调用了关闭相机方法
- MessageEvent.CAMERA_STATES_DISCONNECTED 时机:CameraDevice.StateCallback#onDisconnected
- MessageEvent.CAMERA_STATES_CLOSED 时机:CameraDevice.StateCallback#onClosed
- MessageEvent.CAMERA_STATES_ERROR 时机:CameraDevice.StateCallback#onError
- MessageEvent.CODE_CV_MODEL 算法模型状态的回调事件


​ code = MessageEvent.CODE_CV_MODEL 详解: ​ event.arg1:表示模型状态(-1: 未初始化 1: 开始初始化 2: 初始化成功 3: 初始化失败 4: 开始释放 5: 释放成功 6: 释放失败)。 ​ event.arg2:表示模型初始化失败(arg1=3)、释放失败(arg1=6)的具体原因。

intent 字段
  • intent-operateState 字段

值详情见【其他】

注:1. 文本\音频输入使用通用方案输入即可(需要robotSkill中useQa设置为true);

  1. 文本\音频输入关闭后,继续使用文本\音频输入,接口将返回operateState=1008;
  2. 文本\音频输入关闭后,继续使用文本\音频输入,接口将返回operateState=1008;
  • intent-code 字段

值详情见【其他】

TextBookParameters 字段
参数 类型 说明
intentCode int 绘本状态
msg String 返回信息(英文)
commandUrl String 提示语音
bookSign String 绘本标识
titleData TitleData 封面识别返回信息
titleExt TitleExtBean 封面附加信息
innerData InnerData 内页识别返回信息
cardData CardData 卡片信息
debugData DebugData 调试信息
funcData FuncData 功能参数,支持OCR和指读结果
hotZone HotZone 点读热区信息
hotZoneExt HotZoneExtBean 指读信息附加输出信息
pageExt PageExtBean 内页附加输出信息
similarBooks List 多版本相似信息(biz平台需要开通权限)
sleepSec int 休眠状态,距离下次可请求绘本识别时间
ext map 附加输出信息
answerTimeoutSec int 问答状态,上传已读题目状态或回答题目时返回问题剩余可回答时间
questionTimeoutSec int 问答状态,等待用户确认题目播放状态时间,有效期内图片问题不能作答,文本与音频类型可以回答
backEvent boolean 问答状态事件回溯:如果上下文中的题目因为未读受保护而导致最近一次识别事件没有请求新题,记录该次事件的时间。规定时间内用于用户上传状态readQuestion=FALSE/CANCEL则事件回溯。
success boolean 问答状态,用户回答是否正确
qParam QParamBean 问答状态,题目问题其他参数
aParam map 问答状态,题目答案其他参数
TitleData

封面信息

参数 类型 是否必须 说明
name String Y 绘本名称
nameUrl String Y 绘本名称的url
zipUrl String Y 绘本压缩包的url
bookVersion Integer Y 绘本版本,音频版本,判断是否需要更新
cover String N 封面图片的url(版本2.0.0新增字段)
bookName String Y 绘本模型标识
author String N 绘本作者名称(版本2.0.0新增字段)
publisher String N 出版社名称(版本2.0.0新增字段)
finger int N 0无指读 1有指读
bookId Long N 绘本Id
isbn String N 绘本的isbn
bookSort int 绘本类型 1=中文绘本  2=英文绘本  3=语文教材  4=英语教材  5=数学教材  6=卡片
zhEnData List N 中英文数据
ZhEnDataBean
参数 类型 说明
bookId long 绘本id
bookSign String 绘本标识
name String 绘本名称
nameUrl String 绘本名称音频
author String 绘本作者名称
cover String 封面图片的url
publisher String 出版社名称
language int 1所属中文,2 所属英文
modified long 更新时间
TitleExtData

封面附加信息

参数 类型 说明
bookEvalFlag boolean true:书本包含口语评测 false:书本不包含口语评测
bookSupportQa List 封面识别返回 书本支持的多元互动类型 TEXT=问答;AUDIO=口语评测;IMAGE=图片(如:指答)
customData Map 自定义数据
InnerData

内页信息

参数 类型 说明
bookId Long 绘本Id
dbKey String 绘本所属key
pageNum Integer 绘本页数
pageUrl String 绘本内页音频
physicsPageNum int 绘本物理页,可为空(非绘本页数)
PageExt

内页附加信息

参数 类型 说明
multiAudios Map 自定义热区多音频内容,其中map的key=textKey,map中的value其他值意义不变

multiAudios 参数

"multiAudios": {
    "0": {
        "audioUrl": "http://universe-file-limit.turingapi.com/202303231421/a54417e4e1df34df5b70b17894/hint/error-1.mp3",
        "audioText": "让我们拼读,听和唱。读,听,打勾(√)。猫蛋糕爸爸约会帽子讨厌听,圈和写。a, e, a, e, a, e, a, e, a, e, cap我们来谈谈让我们打扫教室"
    },
    "1": {
        "audioUrl": "http://universe-audio.turingapi.com/202303231420/robot_story/9641a1ae4026cc2d5464982.mp3",
        "audioText": "Let's spell  Read,listen and chant.  cake  face  name  make  Read,listen and tick (√). cat cake dad date hat hate Listen,circle and write. a a-e a a-e a a-e a a-e  cap Let's talk Let's clean the class"
    }
}
参数 类型 说明
text String 热区文本
url String 热区音频文件URL或音频ID: URL有效时间为10分钟(自己上传的URL除外)
textKey String 音频名称 textKey=0:中文 textKey=1:英文 textKey=2:粤语 textKey=3:讲解 textKey=4:视频
HotZone

点读热区信息

参数 类型 介绍
pieceIndex int 热区索引
pieceUrl String 热区在线的音频链接
pieceContent String 热区文本
transContent String 热区文本对应的中文文本
HotZoneExt

热区附加信息

参数 类型 说明
evalFlag int 1进入口语评测;0或者没有则不需要
multiAudios Map 自定义热区多音频内容,其中map的key=textKey,map中的value其他值意义不变
languageType int 书本语言版本,0,中文;1英文
charDetail Array 自定义热区中文汉字详情
transContent String 热区文本对应的中文文本(热区资源,有则输出)
  • evalFlag:指读热区识别成功之后,evalFlag为1标识改热区文字支持口语评测,为0表示不支持口语评测。

multiAudios 参数

"multiAudios": {
    "0": {
        "text": "请打开门。",
        "url": "http://universe-file-limit.turingapi.com/202303211836/192092962f5b676f4b25199b60d83a5d/book_audio/70104/70104-21-647.mp3"
    },
    "1": {
        "text": "Open the door,please.",
        "url": "http://universe-file-limit.turingapi.com/202303211836/c627c4a829017dcd00a76794ab10c561/robot_story/70104/70104-21-647.mp3"
    }
}
参数 类型 说明
text String 热区文本
url String 热区音频文件URL或音频ID: URL有效时间为10分钟(自己上传的URL除外)
textKey String 音频名称 textKey=0:中文 textKey=1:英文 textKey=2:粤语 textKey=3:讲解 textKey=4:视频
FuncData

功能参数信息

参数 类型 说明
ocr int 0:普通;1:ocr  0是普通绘本,英语,数学教材,不需要更改分辨率。 1是文本类型的绘本,语文教材,需要传入大分辨率的图片,比如正常320分辨率的图片。 如果ocr为1就要传入640的图片
finger int 0:无指读;1:可支持指读
SimilarBookBean

多版本相似信息

参数 类型 介绍
cover String 封面url
author String 绘本作者名称
name String 绘本名称
nameUrl String 绘本名称的url
publisher String 出版社名称
bookId long 绘本id
bookSign String 绘本标识
online boolean
updateTimeMills long 更新时间  值不为0,表示当前信息为默认绘本
DebugData
参数 类型 说明
imgOriginalUrl String 原图片链接
imgProcessedUrl String 算法处理后的图片链接

2. 传输图片开启绘本识别

适用于客户端自定义相机开发,传输图片给SDK,开启绘本识别功能。

方法

/**
 * 设置绘本识别回调,与startBookDetect配套使用
 *
 * @param listener
 */
void setBookOcrListener(BookListener<BaseResponse<TextBookParameters>> listener);

/**
 * 开始图文检测识别
 *
 * @param imageData 相机预览返回的原始。
 *                  图片分辨率:如果使用云端参数,请与云端配置保持一致;如果使用本地参数,请与turing_config.json 中 bookCamera#previewWidth、previewHeight值保持一致。
 *                  图片角度、镜像:如果使用云端参数,请与云端配置保持一致;如果使用本地参数,请在turing_config.json 中填写 globalConfig#camera#rotation、mirror 值。
 *                  图片+角度+镜像,最终得到 倒向无镜像 图片。
 *
 * @param format    仅支持android.graphics.ImageFormat.NV21、 android.graphics.ImageFormat.YUV_420_888
 */
void startBookDetect(byte[] imageData, int format);

请求示例

  1. 先初始化回调监听

    java // textBookListener回调同【1. 开启绘本识别】 turingTextBook.setBookOcrListener(textBookListener);

  2. 客户端开启相机,传输图片进行识别

    ```java // SDK不包含CameraView,下面给出客户端自定义相机开发调用方法示例 int width = mainView.getWidth(); int height = mainView.getHeight(); cameraView = new CameraView(TextBookActivity.this, width, height, mainView, 0, "", 640, 480, 640, 480, 0, true, 0, false); cameraView.setOnFrameListener(new OnFrameListener() {

    @Override public void onError(int code, String error) {

    }

    @Override public void onFrameData(byte[] videodata, int length) { if (videodata != null && videodata.length != 0) { // 传输图,进行识别 turingTextBookPro.startBookDetect(videodata); } }

    @Override public void onCameraEvent(int event) {

    }

    @Override public void onPicture(byte[] data, int length) {

    } }); ```

输入说明

参数名称 类型 是否必须 描述
imageData byte[] Y 相机预览返回的原始数据
format int Y 图片格式 仅支持android.graphics.ImageFormat.NV21、 android.graphics.ImageFormat.YUV_420_888

客户端开发相机,图片要求如下;SDK处理图片(图片+角度+镜像)得到 倒向无镜像 图片。 

图片分辨率:如果使用云端参数,请与云端配置保持一致;如果使用本地参数,请与turing_config.json 中 bookCamera#previewWidth、previewHeight值保持一致。

图片角度、镜像:如果使用云端参数,请与云端配置保持一致;如果使用本地参数,请在turing_config.json 中填写 globalConfig#camera#rotation、mirror 值。

输出说明

同【开启绘本识别】中的输出

3. 更新绘本识别优先级

仅用于相似绘本功能。先通过startTextBookOcr()识别封面,得到相似书籍(中英文或多版本)的列表,再更新识别书的优先级,如果相似书籍返回的时多版本列表则type=1,返回中英文列表则type=2。

注:切换中英文绘本时,turing_config.json中textBook可以不指定languageOrder,否则默认的数据优先输出languageOrder的绘本。

方法

void updatePriorityRecognition(int type, String bookSign, boolean languageZn, TuringListener<Boolean> listener);

输入说明

参数 类型 说明
type int 1-设置多版本优先级  2-设置中英文优先级
bookSign String 指定切换到目标绘本的booksign
languageZn boolean true-中文  false-英文  (type=2时才有效)
listener TuringListener 回调接口

输出说明

listener 中 result值说明:true-更新成功,false- 更新失败。

4. 初始化绘本状态

绘本初始化接口,清除云端状态。

避免在上次封面识别成功的情况下,第二次进入绘本页直接拿内页识别,能识别成功 或 提示内页识别失败。

方法

void resetBookState(TuringListener<String> listener);

输出说明

listener 中 result值说明:"状态重置成功"-成功。

5. 动态设置参数

动态设置绘本参数,需在startBookOcr之后调用。

方法

void postBookParam(TextBookParamListener listener);

输入说明

参数 类型 说明
listener TextBookParamListener 实现该接口,修改onBookParam方法中返回的配置参数。

请求示例

turingTextBook.postBookParam(new TextBookParamListener() {
    @Override
    public TextBookRequestConfig onBookParam(TextBookRequestConfig.Builder builder) {
        builder.textFlag(3);  // 只返回整读信息
        return builder.build();
    }
});

6. 指定书籍

可固定识别某一本书籍。

方法

boolean setBookSign(String bookSign);

输入

参数 类型 说明
bookSign String 书籍的bookSign

输出

参数 类型 说明
result boolean 是否设置成功

7. 停止/启动识别

调用 pause() 只会停止识别,预览画面会实时显示。  调用resume() 恢复识别。

方法

/**
 * 暂停识别
 */
void pause();

/**
 * 重新开始识别
 */
void resume();

8. 停止预览识别/ 重新开始预览识别

此方法影响预览画面,调用了stopPreView() 后画面不会实时刷新。若想恢复请调用 resumePreview()。

方法

/**
 * 暂停预览
 */
void stopPreview();

/**
 * 重新开始预览
 */
void resumePreview();

9. 资源释放

方法

void release();

其他

intent-code  说明

下面列出绘本识别时intent code字段值说明

intent code 说明
200 识别绘本封面成功
201 识别绘本内页成功
202 绘本扉页识别成功
203 绘本无文本内页识别成功
204 绘本无意义内页识别成功
205 封面识别成功,热区识别成功
206 封面识别成功,热区识别失败
207 内页识别成功,热区识别成功
208 内页识别成功,热区识别失败
209 卡片识别成功,无指读判断
210 卡片识别成功,指读识别成功
211 卡片识别成功,指读识别失败
212 小卡片识别成功
300 绘本封面识别失败
301 绘本内页识别失败
302 非缺省参数未找到
303 摄像头ID信息未找到
304 图片无法打开
305 图片尺寸异常
306 绘本内容未录入
307 当前绘本页音频缺失
308 未开通OCR功能
309 未开通指读功能
310 暂不支持该功能
311 此绘本为私有绘本
312 非法bookId
313 此书不支持指读
314 不支持此资源类型
315 卡片识别失败(预留)
350 小卡模式识别失败
400 封面算法识别超时
401 内页算法识别超时
402 绘本算法未知异常

intent-operateState  说明

下面列出绘本识别时intent operateState字段值说明

operateState 说明
1010 上传状态错误
1110 上传状态正确
1120 上传状态重复
1200 休眠状态
2000 绘本识别正常
3000 文本类问题数据输出,开启文本输入
3100 回答问题结束状态, 不再处理非图片类型请求
3200 回答问题状态(所有类型)-继续回答问题
3240 图片类问题-回答问题时被判断为无效的输入(不参与答题,前端可忽略该输出)
3300 音频类问题数据输出,开启音频输入(注意音频类型!)
3400 图片类问题数据输出。
1001 绘本图片识别异常,有intentCode
1005 图片内容大小非法(取值范围:1,200kb)
1006 图片内容处理异常
1007 请求Type非法
1008 请求中无图片信息
1009 错误输入(非法使用唤醒功能)

云端限流

由于设备在绘本模式使用过程中,设备受到翻页检测触发会不断的进行请求,云端已经对绘本请求做了限流。具体表现为下面输出参数intentCode=1200,即触发了云端限流。

具体返回示例如下:

{
    "code":200,
    "globalId":"116456280610447001",
    "message":"success",
    "nlpResponse":{
        "intent":{
            "code":1000056,
            "operateState":1200
        },
        "results":[
            {
                "groupType":0,
                "resultType":"text",
                "values":{
                    "text":"休眠中,请3秒后再试试吧。"
                }
            }
        ]
    }
}
  • 当接收到请求识别返回的intentCode=1200时,说明触发了云端的限流开关。

  • 此时图灵云端返回信息中会告知休眠状态和提醒距离下次自动唤醒的时间,该时间会随着无效请求进入休眠次数不断叠加。

  • 云端唤醒:增加传参osState=clean可以唤醒休眠状态,或者等待提示的时间之后将会重新获得识别机会