本文提供了调用图片异步检测任务进行图片风险违规内容审核的具体接口和参数说明,旨在帮助您编写程序构建HTTP调用请求有效地检测图片中的多维度风险内容。

  • 关于如何构造HTTP请求,请参见请求结构
  • 您也可以直接选用已构造好的HTTP请求,具体请参见SDK参考

提交图片异步检测任务

描述

业务接口:/green/image/asyncscan

提交图片异步检测任务,检测图片违规或识别图片中的不良信息。

支持检测的场景包括:图片智能鉴黄、图片暴恐涉政识别、图文违规识别、图片二维码识别、图片不良场景识别、图片logo识别。

异步检测任务不会实时返回检测结果,您需要通过轮询的方式或者callback的方式获取检测结果。
说明 检测结果最长保留一小时。

关于scene与label参数

在提交检测任务时,您需要指定scenes场景参数,并且支持组合使用,即可对同一张图片的多种风险进行检测。
说明 同时检测多个场景的情况下,将按照“每个场景的检测量×每个场景的单价”进行累加计费。
而在检测返回结果中,则包含了您指定的场景对应的label结果分类参数。您可以根据suggestion参数的返回值对图片进行处置,根据label参数的返回值判断风险的具体类型。
在图片审核中,scene与label的对应关系如下:
场景 描述 scene label
图片智能监黄 识别图片中的色情内容。 porn
  • normal:正常图片,无色情内容
  • sexy:性感图片
  • porn:色情图片
图片暴恐涉政识别 识别图片中的暴恐涉政内容。 terrorism
  • normal:正常图片
  • bloody:血腥
  • explosion:爆炸烟光
  • outfit:特殊装束
  • logo:特殊标识
  • weapon:武器
  • politics:涉政
  • violence : 打斗
  • crowd:聚众
  • parade:游行
  • carcrash:车祸现场
  • flag:旗帜
  • location:地标
  • others:其他
图文违规识别 识别图片中的广告以及文字违规信息。 ad
  • normal:正常图片
  • politics:文字含涉政内容
  • porn:文字含涉黄内容
  • abuse:文字含辱骂内容
  • terrorism:文字含暴恐内容
  • contraband:文字含违禁内容
  • spam:文字含其他垃圾内容
  • npx:牛皮藓广告
  • qrcode:包含二维码
  • programCode:包含小程序码
  • ad:其他广告
说明 默认只会返回normal或者ad,如需其他label,请通过工单联系我们进行配置。
图片二维码识别 识别图片中的二维码。 qrcode
  • normal:正常图片
  • qrcode:含二维码的图片
  • programCode:含小程序码的图片
    说明 默认不识别小程序码。如果需要识别,请通过工单联系我们调整。
图片不良场景识别 识别直播或视频中出现的黑屏、黑边、昏暗画面,画中画,抽烟,打架等不良场景图片。 live
  • normal:正常图片
  • meaningless:无意义图片
  • PIP:画中画
  • smoking:吸烟
  • drivelive:车内直播
图片logo识别 识别图片中的logo信息,例如台标,商标等。 logo
  • normal:正常图片
  • TV:带有管控logo的图片
  • trademark:商标

检测时长

同步检测允许的最长检测时间是6秒,如果检测在该时间限制内没有完成,系统会强制返回超时错误码。如果您对实时性要求不高,可以选择异步检测;其它情况下,请选择同步检测,同步检测接口的调用相对简单些。对于同步检测接口的调用,建议您将超时时间设置为6秒。

图片限制
  • 图片链接支持以下协议:HTTP和HTTPS。
  • 图片支持以下格式:PNG、JPG、JPEG、BMP、GIF、WEBP。
  • 图片大小限制为10MB以内(适用于同步和异步调用)。如您有特殊需求(大图片),可以提工单进行调整。
  • 图片下载时间限制为3s内,如果下载时间超过3s,返回下载超时。
  • 图片像素建议不低于256*256,像素过低可能会影响识别效果。
  • 图片检测接口响应时间依赖图片的下载时间。请保证被检测图片所在的存储服务稳定可靠,建议您使用阿里云OSS存储或者CDN缓存等。

请求参数

关于在请求中必须包含的公共请求参数,请参见公共参数

请求body是一个JSON对象,字段说明如下:
名称 类型 是否必需 描述
bizType 字符串 该字段用于标识业务场景。针对不同的业务场景,您可以配置不同的内容审核策略,以满足不同场景下不同的审核标准或算法策略的需求。您可以通过云盾内容安全控制台创建业务场景(bizType),或者通过工单联系我们帮助您创建业务场景。
scenes 字符串数组 指定图片检测的应用场景,可选值包括:
  • porn:图片智能鉴黄
  • terrorism:图片暴恐涉政识别
  • ad:图文违规识别
  • qrcode:图片二维码识别
  • live:图片不良场景识别
  • logo:图片logo识别
说明 支持多场景(scenes)一起检测。 例如,使用scenes=[“porn”, “terrorism”],对一张图片同时进行鉴黄和暴恐识别。
callback 字符串 异步检测结果回调通知您的URL,支持HTTP/HTTPS。该字段为空时,您必须定时检索检测结果。
seed 字符串 随机字符串,该值用于回调通知请求中的签名。当使用callback时,该字段必须提供。
tasks JSON数组 检测对象,JSON数组中的每个元素是一个图片检测任务结构体(image表)。每个元素的具体结构描述见task
表 1. task
名称 类型 是否必需 描述
clientInfo JSON结构体 客户端信息,参见公共参数中的公共查询参数。
服务器会把全局的clientInfo和此处独立的clientInfo合并。
说明 独立的clientInfo优先级更高。
dataId 字符串 数据Id。需要保证在一次请求中所有的Id不重复。
url 字符串 待检测图像的URL。
extras Map 额外调用参数。
interval 整型 截帧频率,GIF图/长图检测专用。GIF图可理解为图片数组,每interval张图片抽取一张进行检测。只有该值存在时,才会对GIF进行截帧。长图同时支持长竖图和长横图。
  • 对长竖图(高大于400像素,高宽比大于2.5),会按照(高:宽)取整来计算总图数,并进行切割。
  • 对长横图(宽大于400像素,宽高比大于2.5),会按照(宽:高)取整来计算总图数,并进行切割。
说明 默认只会检测GIF图/长图的第一帧,interval参数用于指示后台在检测时可按照该间隔跳着检测,以节省检测成本。需要与maxFrames参数组合使用。例如,设置interval为2,maxFrames为100,检测长图/GIF图时,将每间隔1帧检测一次,最多检测100帧,计费则按照实际检测的数量计算。
maxFrames 整型 最大截帧数量,GIF图/长图检测专用,默认值为1

interval*maxFrames小于该图片所包含的图片数量时,截帧间隔会自动修改为该图片所包含的图片数/maxFrames,以提高整体检测效果。

结果回调通知参数(callback、seed)

使用说明

如果您在请求参数中指定了回调通知参数callback、被回调callback值,即一个http(s)协议接口的URL,则需要支持POST方法,传输数据编码采用utf-8,并且支持两个表单参数checksumcontent。系统将按以下描述的生成规则和格式设置checksum和content的值,调用您的callback接口返回检测内容。

您服务端接收到我们推送的结果后,返回的HTTP状态码为200时,表示推送成功,其他的HTTP状态码均视为您接收失败,我们将最多重复推送16次。

回调结果参数的生成规则
名称 类型 描述
checksum String 用户uid + seed + content拼成字符串,通过SHA256算法生产。用户UID即账号ID,您可在阿里云控制台上查询。为防篡改,您可以在获取到推送结果时,按此算法生成字符串,与checksum做一次校验。
content String JSON字符串格式,请自行解析反转成JSON对象。content结果格式参见下文。
content结果格式
{
      "code":200,
      "msg":"OK",
      "dataId":"imageId xxx",
      "taskId":"taskId xxx",
      "results":[
        {
          "label":"porn",
          "rate":99.2,
          "scene":"porn",
          "suggestion":"block"
        }
      ]
}

返回参数

返回结果说明,参见返回结果

返回body中的data字段是JSON数组,每一个元素包含如下字段:
名称 类型 是否必需 描述
code 整型 错误码,和HTTP的status code一致。
msg 字符串 错误描述信息。
dataId 字符串 对应请求中的dataId
taskId 字符串 该检测任务的ID。
url 字符串 对应请求中的URL。

示例

请求示例
{
  "scenes": ["porn"],
  "tasks": [
    {
      "dataId": "test4lNSMdggA0c56MMvfYoh4e-1mwxpx",
      "url": "https://img.alicdn.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png"
    }
  ]
}
返回示例
{
  "code": 200, 
  "msg": "OK", 
  "requestId": "95AD868A-F5D2-4AEA-96D4-E0273B8E074C",
  "data": [
    {
      "code": 200, 
      "msg": "OK", 
      "dataId": "test4lNSMdggA0c56MMvfYoh4e-1mwxpx", 
      "taskId": "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695",
      "url": "https://img.alicdn.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png"
    }
  ]
}

查询图片异步检测结果

描述

业务接口:/green/image/results

客户端定时轮询查询异步检测结果。建议您将查询间隔设置为30秒,最长不能超出1个小时,否则结果将会丢失。
说明 该API接口为免费接口。

请求参数

关于在请求中必须包含的公共请求参数,请参见公共参数

请求body是一个JSON数组,字段说明如下:
名称 类型 是否必需 描述
body JSON数组 要查询的taskId列表。最大长度不超过1,000。

返回参数

返回结果说明,参见返回结果

返回body中的Data字段是JSON数组,每一个元素包含如下字段:
名称 类型 是否必需 描述
code 整型 错误码,和HTTP的status code一致。
msg 字符串 错误描述信息。
dataId 字符串 对应的请求中的dataId
taskId 字符串 该检测任务的ID。
url 字符串 对应的请求中的URL。
extras Map 额外附加信息,可能包含的内容有:

imageAdHitLIbInfo:广告识别场景(scenes包含ad)中,若广告检测若命中了自定义文本库,则返回该字段。格式为数组,具体结构描述见imageAdHitLIbInfo

示例值:
"imageAdHitLIbInfo":"[{"context":"好看视频","libCode":"2144002","libName":"预发测试广告相似文本库a"}]"
results 数组 返回结果。调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述见result
表 2. result
名称 类型 是否必需 描述
scene 字符串 图片检测场景,和调用请求中的场景对应。
label 字符串 检测结果的分类,与具体的scene对应。取值范围参见scene和label说明
suggestion 字符串 建议用户执行的操作,取值范围:
  • pass:图片正常,无需进行其余操作,或者未识别出目标对象
  • review:检测结果不确定,需要进行人工审核,或识别出目标对象
  • block:图片违规,建议执行进一步操作(如直接删除或做限制处理)
说明 qrcode场景中suggestion并非管控建议,仅用于区分图片中是否包含二维码。
rate 浮点数 结果为该分类的概率,取值范围为[0.00-100.00]。值越高,表示越有可能属于该分类。
frames 数组 如果待检测图片因为过长被截断,该参数会返回截断后的每一帧图像的临时访问地址,供您参考。具体结构描述见frames
qrcodeData 字符串数组 图片中含有二维码时,返回图片中所有二维码包含的文本信息。
说明 仅适用于qrcode场景。
programCodeData 数组 图片中含有小程序码时,返回小程序码的位置信息,具体结构描述见programCodeData
说明 仅适用于qrcode场景,且已通过工单联系我们开通了小程序码识别。
logoData 数组 识图片中含有logo时,返回识别出来的logo信息,具体结构描述见logoData
说明 仅适用于logo场景(scene)。
sfaceData 数组 图片中包含暴恐识涉政内容时,返回识别出来的暴恐涉政信息,具体结构描述见sfaceData
说明 仅适用于terrorism和sface场景。关于该参数在sface场景中的具体内容,请参见异步检测
表 3. frames
名称 类型 是否必需 描述
rate 浮点数 置信度,仅作参考,不建议使用。
url 字符串 被截断的图片的临时访问url,地址有效期是5分钟。
表 4. programCodeData
名称 类型 是否必需 描述
x 浮点数 以图片左上角为坐标原点,小程序码区域左上角到y轴距离。
y 浮点数 以图片左上角为坐标原点,小程序码区域左上角到x轴距离。
w 浮点数 小程序码区域宽度。
h 浮点数 小程序码区域高度。
表 5. logoData
名称 类型 是否必需 描述
type 字符串 识别出的logo类型,取值为TV (台标)。
name 字符串 识别出的logo名称。
x 浮点数 以图片左上角为坐标原点,logo区域左上角到y轴距离。
y 浮点数 以图片左上角为坐标原点,logo区域左上角到x轴距离。
w 浮点数 logo区域宽度。
h 浮点数 logo区域高度。
表 6. sfaceData
名称 类型 是否必需 描述
x 浮点数 以图片左上角为坐标原点,人脸区域左上角到y轴距离。
y 浮点数 以图片左上角为坐标原点,人脸区域左上角到x轴距离。
w 浮点数 人脸区域宽度。
h 浮点数 人脸区域高度。
faces 数组 识别出的人脸信息,具体结构描述见face
表 7. face
名称 类型 是否必需 描述
name 字符串 相似人物的名称。
rate 浮点数 相似概率。
id 字符串 人脸Id。
表 8. imageAdHitLIbInfo
名称 类型 是否必需 描述
context 字符串 图片中文字命中的自定义文本内容。
libCode 字符串 图片中文字命中的自定义文本内容对应的库code。
libName 字符串 图片中文字命中的自定义文本内容对应的库名称。

示例

请求示例
["fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695"]
返回示例
{
  "msg": "OK",
  "code": 200,
  "data": [
    {
      "msg": "OK",
      "code": 200,
      "dataId": "uuid-xxxx-xxx-1234",
      "extras": {},
      "results": [
        {
          "rate": 99.63,
          "suggestion": "block",
          "label": "sexy",
          "scene": "porn"
        },
        {
          "label": "politics",
          "rate": 91.54,
          "scene": "terrorism",
          "sfaceData": [
            {
              "faces": [
                {
                  "id": "AliFace_0001234",
                  "name": "命中人名",
                  "rate": 91.54
                }
              ],
              "h": 131,
              "w": 97,
              "x": 49,
              "y": 39
            }
          ],
          "suggestion": "block"
        },
        {
          "extras": {
            "qrcodes": "http://xxxx.xxx.com/0.ZZOliO",
            "npx": "72.01",
            "hitCustomLibCode": "8012345000",
            "hitCustomLibName": "自定义图库名",
            "hitLibInfo": [
              {
                "context": "命中的文本",
                "libCode": "123456",
                "libName": "文本库名"
              }
            ]
          },
          "programCodeData": [
            {
              "w": 402.0,
              "h": 413.0,
              "x": 11.0,
              "y": 0.0
            }
          ],
          "frames": [
            {
              "rate": 89.85,
              "url": "http://xxx.xxx.com/xxx-0.jpg"
            },
            {
              "rate": 68.06,
              "url": "http://xxx.xxx.com/xxx-1.jpg"
            }
          ],
          "rate": 99.91,
          "suggestion": "block",
          "label": "ad",
          "scene": "ad"
        },
        {
          "rate": 99.91,
          "suggestion": "block",
          "label": "drug",
          "scene": "live"
        },
        {
          "qrcodeData": [
            "http://xxx.xxx.com/01ZZOliO"
          ],
          "rate": 99.91,
          "suggestion": "review",
          "label": "qrcode",
          "scene": "qrcode"
        },
        {
          "logoData": [
            {
              "name": "xxx台",
              "type": "TV",
              "x": 140,
              "y": 68,
              "w": 106,
              "h": 106
            }
          ],
          "rate": 99.9,
          "suggestion": "block",
          "label": "TV",
          "scene": "logo"
        }
      ],
      "taskId": "img4wlJcb7p4wH4lAP3111111-123456",
      "url": "http://xxx.xxx.xxx/xxx.jpg"
    }
  ],
  "requestId": "69B41AE8-1234-1234-1234-12D395695D2D"
}