跳到主要内容

图片同步识别接口

1. 接口介绍

该接口对图片内容进行检测识别,并同步返回识别结果,适用于静态图片及动态图片。动态图片支持 gifwebp 格式, 满足下述条件时,转换为默认最多 10 张静态图片进行识别:

  1. 请求中的图片数量为 1,并且是 gifwebp 动态图片

动态图片转换、计费和结果响应规则:

  1. 当动图帧数 <= 10 时,取全部帧;按照实际帧数计费;按照实际帧数返回每张图片的结果;
  2. 当动图帧数 >= 10 时,间隔取 10 帧;按照 10 帧计费;按照 10 帧返回每张图片的结果。

业务流程如下:

提示
  • 接口并发限制:默认每秒请求数不超过 50 次;
  • 图片文件大小限制:base64 编码后默认不超过 1M,请联系我们调整并发及文件限制;
  • 请求大小限制:每次请求中最多包含 10 张图片,单次请求体不超过 30M;
  • 支持的图片格式:pngjpgjpegtifwebpbmpgifheic

2. 请求

2.1 请求地址

区域请求地址
国内https://api.open.tuputech.com/v3/recognition/<secretId>
国外https://api-oversea.open.tuputech.com/v3/recognition/<secretId>
提示

<secretId> 需替换为您的应用 SID,请联系客户经理为您开通及配置。关于 SID 详见 常见问题(FAQ)

2.2 请求方法

POST

2.3 请求头

Content-Type: application/json

2.4 超时时间及异常处理

  • 通过图片链接接入审核时,建议配置超时时间 10 秒(下载图片超时时间为 3 秒,最多重试一次);
  • 通过图片 base64 接入审核时,建议配置超时时间 5 秒;
  • 在 HTTP 响应状态码非 200 或业务状态码不为 0 时进行重试。
危险

由于模型基于请求流量动态伸缩,在空闲一定时间后会关闭(部分专用模型空闲一定时间后会关闭全部实例)。 由于模型冷启动耗时较长,部分请求可能无法处理,最终返回非 200 HTTP 状态码或业务状态码 101。该现象可能在以下情况下出现:

  • 初次请求
  • 长时间未调用后再次请求
  • 请求流量突增
  • 请求存在规律性的流量波动(例如每隔超过 5 分钟请求一批数据,或仅在工作日期间有大量请求)

针对以上情况,我们分别建议您:

  • 间隔 2~3 分钟后重试
  • 间隔 2~3 分钟后重试,并且后续保持至少每分钟 1 次调用
  • 提前进行预热,或及时联系我们扩容
  • 调整业务请求时间间隔到 5 分钟内,或联系我们调整实例保持策略。若您的业务仅在工作日期间有大量请求,节假日期间较少,请务必联系我们

2.5 请求参数说明 🔥

参数名称类型是否必需说明
imageString/Array<String>图片链接。

1. 优先使用字符串数组指定图片链接,字符串传参即将废弃;
2. 支持的图片格式:pngjpgjpegtifwebpbmpgifheic
3. 图片 base64 编码后默认限制在 1M 以内;
4. 出于安全考虑,图片链接端口除 80, 443 端口外,应在 1025-65535 范围内
timestampNumber当前服务器的 Unix 时间戳
nonceNumber随机数
signatureString

RSA-SHA256 算法签名。签名步骤:

  1. 将参与签名的参数(secretIdtimestampnonce)用英文半角逗号 , 拼接,得到 SignString
  2. 使用您的私钥以 RSA-SHA256 算法对 SignString 签名,然后进行 Base64 编码,得到 signature 字符串。
  • 点击 数字证书 下载私钥。私钥有 rsapkcs8 两种格式,通常 Golang,Python 使用 rsa 格式私钥,Java 使用 pkcs8 格式私钥
  • 点击 签名及验证示例 查看签名示例
tagString/Array<String>图片业务信息,后续可根据 tag 搜索对应调用记录。例如:直播场景可传房间号或主播 ID 信息。

1. 优先使用字符串数组指定 tag 参数,和 image 参数一一对应;
2. 如果 tag 只有一个,或者 tag 数量少于 image,默认使用最后一个 tag 补全(尾补全)
taskString/Array<String>识别任务 ID,如:54bcfc6c329af61034f7c2fc。如果需要只执行接口下的某些审核的任务,可通过此参数指定,默认执行该接口下的全部审核任务。

1. 优先使用字符串数组传参
sequenceIdString/Array<String>连续帧图的组别 ID,例如直播间 ID 等,基于此 ID 进行该 ID 组别下的连续帧相似度识别(启用连续帧相似度识别服务必传)。

1. 优先使用字符串数组指定 sequenceId 参数,和 image 参数按照顺序一一对应;
2. 需要保证同一 sequenceId 下的图片帧,在同一请求中唯一,并且在不同请求间按照时间顺序有一定的间隔(防止乱序)
3. 建议按照图片帧的出现顺序依次调用接口,而非在一次请求中传入多张图片帧
refererString下载图片时,请求在 HTTP Header 中携带的 Referer,用于图片防盗链

2.6 请求示例

{
"image": [
"<url>"
],
"tag": [
"<tag>"
],
"nonce": 1685000000,
"timestamp": 1685000000,
"signature": "<signature>"
}

3. 同步响应

3.1 响应参数说明 🔥🔥

参数名称类型说明
signatureString

同步响应或回调请求签名,由图普使用私钥签名,在需要时,您可以通过 图普公钥 进行验签以确保此响应内容来自图普(与您调用接口时使用的公私钥不同)。验签步骤:

  1. json 字段内容为 SignString
  2. signature 字段内容进行 Base64 解码,得到 RawSignature
  3. 使用图普公钥以 SHA256 算法验证 RawSignatureSignString
jsonString

同步响应或回调请求经过 JSON 转义后的字符串,需进一步解析得到业务数据。

  • 字段内容示例:{\"code\":0, \"message\":\"success\"}
  • 字段详见下述 JSON 参数说明
  • 为方便展示,同步响应及回调请求的示例中,均为解析后的 JSON

JSON 参数说明

参数名称类型是否必有说明
codeNumber请求状态码,详见 业务状态码
messageString状态信息
summaryArray<Summary>应用下所有任务的汇总结果,数组长度与入参图片数量对应,汇总结果详见 汇总结果解析summary 参数详见 Summary 参数说明
imageInfoImageInfo图片进行了预处理时(动态图片拆分静态图片、长图切分),解析到的图片信息。详见 ImageInfo 参数说明
<任务 ID>Object识别任务的结果,每个识别任务会有 全局固定不变taskId 和对应数据结构,详见下述链接:

1. 图片类任务结果
2. 文本类任务结果
3. 语音类任务结果
timestampNumber当前服务器的 Unix 时间戳
nonceNumber随机数

Summary 参数说明

参数名称类型是否必有说明
codeNumber图片识别状态码,详见 业务状态码
nameString图片 url 或文件名
suggestionNumber建议的操作,详见汇总结果解析中的 Suggestion 处理建议说明
riskTypeNumber风险类型,详见汇总结果解析中的 RiskType 风险类型说明
riskTaskString风险任务 ID
tagString图片业务信息

ImageInfo 参数说明

参数名称类型是否必有说明
typeString图片类型,取值如:gifwebpjpg
extractedBoolean预处理时,动态图片是否拆分静态图片
croppedBoolean预处理时,长图是否切分
resolutionString预处理长图切分时,图片切分前的分辨率,格式为 <height>x<width>
countNumber预处理动态图片拆分静态图片时,拆分的静态图片数量;或预处理长图切分时,图片切分的数量
originalNameString预处理动态图片拆分静态图片或长图切分时,图片原始名称

3.2 响应示例

{
"code": 0,
"message": "success",
"summary": [
{
"code": 0,
"message": "success",
"name": "<name>",
"suggestion": 0,
"riskType": 1,
"riskTask": "<风险任务 id>",
"tag": "<tag>"
},
{
"code": 14,
"message": "download failed",
"name": "<name>",
"tag": "<tag>"
}
],
"54bcfc6c329af61034f7c2fc": {
"fileList": [
{
"name": "<name>",
"tag": "<tag>",
"label": 2,
"review": false,
"rate": 0.9927366971969604,
"subLabels": [
{
"label": "隐晦性行为",
"rate": 0.989293
},
{
"label": "女性只露肩膀",
"rate": 0.774093
}
]
}
]
},
"nonce": 1685000000,
"timestamp": 1685000000
}