跳到主要内容

图片同步识别接口

1. 接口介绍

该接口对图片内容进行检测识别,并同步返回识别结果,适用于静态图片及动态图片。

动态图片支持 gifwebp 格式,目前仅截取首帧进行识别。 从 2023 年 12 月开始,变更为满足下述条件时,转换为最多 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 秒。
危险

由于模型基于请求流量动态伸缩,在空闲一定时间后会关闭(部分专用模型空闲一定时间后会关闭全部实例)。 由于模型冷启动耗时较长,部分请求可能无法处理,最终返回非 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 和对应数据结构,请参考审核结果示例中的 54bcfc6c329af61034f7c2fc。具体各识别任务的返回结果数据结构,请参考 具体任务识别结果 页面,例如 色情识别
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",
"nonce": 1685000000,
"timestamp": 1685000000,
"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
}
]
}
]
}
}