本文介绍了调用图片异步检测接口(/green/image/asyncscan)进行图片内容审核的方法。图片审核帮助您检测图片中的风险或违规内容,具体包括以下场景:图片智能鉴黄、图片暴恐涉政、图文违规、图片二维码、图片不良场景、图片logo。

场景说明

场景名称 描述 检测结果分类
图片智能鉴黄 检测图片是否包含色情、性感内容。 正常、色情、性感
图片暴恐涉政 检测图片是否包含暴恐或涉政类内容。 正常、血腥、爆炸烟光、特殊装束、特殊标识、武器、涉政、打斗、聚众、游行、车祸现场、旗帜、地标
图文违规 检测图片是否包含广告和文字违规信息。 正常、文字含涉政内容、文字含涉黄内容、文字含辱骂内容、文字含暴恐内容、文字含违禁内容、文字含其他垃圾内容、牛皮癣广告、含二维码、含小程序码、其他广告
说明 默认仅支持正常、广告分类。如果需要其他分类,请提交工单联系我们进行配置。
图片二维码 检测图片是否包含二维码或小程序码。 正常、含二维码、含小程序码
说明 默认仅支持正常、含小程序码分类。如果需要其他分类,请提交工单联系我们进行配置。
图片不良场景 检测图片是否包含黑屏、黑边、昏暗画面、画中画、吸烟、车内直播等不良场景。 正常、图片中无内容(例如黑屏、白屏)、画中画、吸烟、车内直播
图片logo 检测图片是否包含logo信息,例如台标,商标等。 正常、含受管控的logo、含商标

图片异步检测接口说明

业务接口:/green/image/asyncscan,表示图片异步检测。

您可以调用该接口创建图片异步检测任务。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,具体请参见SDK概览

  • 计费信息

    该接口为收费接口,具体计费方式请参见内容安全产品定价

  • 检测超时

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

  • 返回结果

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

    • callback获取检测结果:提交异步检测任务时,在请求参数中传入callback参数,用来自动接收检测结果,具体请参见(异步检测)请求参数
    • 轮询获取检测结果:提交异步检测任务时,无需传入callback参数;提交异步检测任务后,调用结果查询接口获取检测结果,具体请参见图片异步检测结果查询接口说明
  • 图片要求
    • 图片链接支持以下协议:HTTP和HTTPS。
    • 图片支持以下格式:PNG、JPG、JPEG、BMP、GIF、WEBP。
    • 图片大小限制为10 MB以内(适用于同步和异步调用)。如果您有特殊需求(例如大图片),可以提交工单进行调整。
    • 图片下载时间限制为3秒内,如果下载时间超过3秒,返回下载超时。
    • 图片像素建议不低于256*256,像素过低可能会影响识别效果。
    • 图片检测接口的响应时间依赖图片的下载时间。请保证被检测图片所在的存储服务稳定可靠,建议您使用阿里云OSS存储或者CDN缓存等。

(异步检测)请求参数

名称 类型 是否必须 描述
bizType 字符串 该字段用于标识您的业务场景。您可以通过内容安全控制台创建业务场景(具体操作请参见自定义机审标准),或者提交工单联系我们帮助您创建业务场景。
scenes 字符串数组 指定检测场景。取值:
  • porn:图片智能鉴黄
  • terrorism:图片暴恐涉政
  • ad:图文违规
  • qrcode:图片二维码
  • live:图片不良场景
  • logo:图片logo
支持指定多个场景,例如,[“porn”, “terrorism”]表示对图片同时进行智能鉴黄和暴恐摄政检测。
说明 同时检测多个场景的情况下,将按照每个场景的检测图片数量×每个场景的单价进行累加计费。
callback 字符串 异步检测结果回调通知您的URL,支持使用HTTP和HTTPS协议的地址。该字段为空时,您必须定时轮询检测结果。
callback接口必须支持POST方法、UTF-8编码的传输数据,以及表单参数checksumcontent。内容安全按照以下规则和格式设置checksumcontent,调用您的callback接口返回检测结果。
  • checksum:字符串格式,由用户uid + seed + content拼成字符串,通过SHA256算法生成。用户UID即阿里云账号ID,可以在阿里云控制台查询。为防篡改,您可以在获取到推送结果时,按上述算法生成字符串,与checksum做一次校验。
    说明 用户UID必须是阿里云主账号UID,而非子账号UID。
  • content:JSON字符串格式,请自行解析反转成JSON对象。content结果的示例请参见查询异步检测结果的返回示例。
说明 您的服务端callback接口收到内容安全推送的结果后,如果返回的HTTP状态码为200,则表示接收成功,其他的HTTP状态码均视为接收失败。接收失败时,内容安全将最多重复推送16次检测结果,直到接收成功。重复推送16次后仍未接收成功,则不再推送,建议您检查callback接口的状态。
seed 字符串 随机字符串,该值用于回调通知请求中的签名。当使用callback时,该字段必须提供。
tasks JSON数组 检测对象,JSON数组中的每个元素是一个图片检测任务结构体。每个元素的具体结构描述请参见task
表 1. task
名称 类型 是否必须 描述
clientInfo JSON结构体 客户端信息,请参见公共参数中的公共查询参数。
服务器会把全局的clientInfo和此处独立的clientInfo合并。
说明 独立的clientInfo优先级更高。
dataId 字符串 数据ID。需要保证在一次请求中所有的ID不重复。
url 字符串 待检测图像的URL。
extras JSON结构体 额外调用参数。图片审核场景下无需传入该参数。
interval 整型 截帧频率,GIF图、长图检测专用。
  • GIF图可理解为图片数组,interval参数指定了每隔多少张图片抽取一帧进行检测。只有该值存在时,才会对GIF进行截帧。
  • 长图分为长竖图和长横图。
    • 对长竖图(高大于400像素,高宽比大于2.5),按照(高:宽)取整来计算总图数,并进行切割。
    • 对长横图(宽大于400像素,宽高比大于2.5),按照(宽:高)取整来计算总图数,并进行切割。

默认只会检测GIF图、长图的第一帧,interval参数用于指示后台在检测时可按照该间隔跳着检测,以节省检测成本。

说明 interval需要与maxFrames参数组合使用。例如,设置interval为2,maxFrames为100,在检测GIF图、长图时,将每间隔1帧检测一次,最多检测100帧,计费则按照实际检测的数量计算。
maxFrames 整型 最大截帧数量,GIF图、长图检测专用,默认值为1

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

(异步检测)返回数据

名称 类型 描述
code 整型 错误码,和HTTP状态码一致。
msg 字符串 错误描述信息。
dataId 字符串 检测对象对应的数据ID。
说明 如果在检测请求参数中传入了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,表示查询图片异步检测结果。

您可以调用该接口查询图片异步检测任务的结果。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,具体请参见SDK概览

  • 计费信息

    该接口不计费。

  • 查询超时

    建议您将查询间隔设置为30秒(即在提交异步检测任务30秒后查询结果),最长不能超出4个小时,否则结果将会丢失。

(结果查询)请求参数

名称 类型 是否必须 描述
body JSON数组 要查询的异步检测任务的taskId列表。数组长度不超过1000。

(结果查询)返回数据

名称 类型 描述
code 整型 错误码,和HTTP的status code一致。
msg 字符串 错误描述信息。
dataId 字符串 检测对象对应的数据ID。
说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId
taskId 字符串 检测任务的ID。
url 字符串 检测对象的URL。
extras JSON结构体 额外附加信息。

图文违规(ad)场景中,该参数可能返回以下内容。

hitLibInfo:如果图片中的文字命中了自定义文本库,则返回命中的文本库信息。格式为数组,具体结构描述请参见hitLibInfo

示例值:
"hitLibInfo":[{"context":"好看视频","libCode":"2144002","libName":"预发测试广告相似文本库a"}]
results 数组 返回结果。调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述请参见result
表 2. result
名称 类型 描述
scene 字符串 图片检测场景,和调用请求中的场景对应。取值:
  • porn:图片智能鉴黄
  • terrorism:图片暴恐涉政
  • ad:图文违规
  • qrcode:图片二维码
  • live:图片不良场景
  • logo:图片logo
label 字符串 检测结果的分类。不同检测场景的结果分类不同,具体如下:
  • 图片智能鉴黄(porn)结果分类:
    • normal:正常
    • sexy:性感
    • porn:色情
  • 图片暴恐涉政(terrorism)结果分类:
    • normal:正常
    • bloody:血腥
    • explosion:爆炸烟光
    • outfit:特殊装束
    • logo:特殊标识
    • weapon:武器
    • politics:涉政
    • violence :打斗
    • crowd:聚众
    • parade:游行
    • carcrash:车祸现场
    • flag:旗帜
    • location:地标
    • others:其他
  • 图文违规(ad)结果分类:
    说明 默认返回normalad。如果您需要其他label,请提交工单联系我们进行配置。
    • normal:正常
    • ad:其他广告
    • politics:文字含涉政内容
    • porn:文字含涉黄内容
    • abuse:文字含辱骂内容
    • terrorism:文字含暴恐内容
    • contraband:文字含违禁内容
    • spam:文字含其他垃圾内容
    • npx:牛皮癣广告
    • qrcode:含二维码
    • programCode:含小程序码
  • 图片二维码(qrcode)结果分类:
    说明 默认不识别小程序码。如果需要识别小程序码,请提交工单联系我们进行配置。
    • normal:正常
    • qrcode:含二维码
    • programCode:含小程序码
  • 图片不良场景(live)结果分类:
    • normal:正常
    • meaningless:图片中无内容(例如黑屏、白屏)
    • PIP:画中画
    • smoking:吸烟
    • drivelive:车内直播
  • 图片logo(logo)结果分类:
    • normal:正常
    • TV:含受管控的logo
    • trademark:含商标
sublabel 字符串 如果检测场景包含智能鉴黄(porn)和暴恐涉政(terrorism),则该字段可以返回检测结果的细分类标签。

该字段默认不会返回。如果有需要,您可以提交工单联系我们进行配置,配置后才会返回。

suggestion 字符串 建议您执行的后续操作。取值:
  • pass:结果正常,无需进行其余操作。
  • review:结果不确定,需要进行人工审核。
  • block:结果违规,建议直接删除或者限制公开。
rate 浮点数 结果属于当前分类的概率,取值范围:0.00~100.00。值越高,表示越有可能属于当前分类。
frames 数组 如果待检测图片因为过长被截断,该参数返回截断后的每一帧图像的临时访问地址。具体结构描述请参见frame
hintWordsInfo 数组 图片中含有广告时,返回图片中广告文字命中的风险关键词信息。格式为数组,具体结构描述请参见hintWordsInfo
说明 只有图文违规(ad)场景会返回该结果。
示例值:
"hintWordsInfo":[{"context":"敏感词"}]
qrcodeData 字符串数组 图片中含有二维码时,返回图片中所有二维码包含的文本信息。
说明 只有图片二维码(qrcode)场景会返回该结果。
programCodeData 数组 图片中含有小程序码时,返回小程序码的位置信息,具体结构描述请参见programCodeData
说明 只有图片二维码(qrcode)场景会返回该结果,且必须已经开启小程序码识别。
logoData 数组 识图片中含有logo时,返回识别出来的logo信息,具体结构描述请参见logoData
说明 只有图片logo(logo)场景会返回该结果。
sfaceData 数组 图片中包含暴恐识涉政内容时,返回识别出来的暴恐涉政信息,具体结构描述请参见sfaceData
说明 只有图片暴恐涉政(terrorism)场景会返回该结果。
ocrData 字符串数组 识别到的图片中的完整文字信息。
说明 默认不返回。如果需要该结果,请提交工单联系我们进行配置。
表 3. frame
名称 类型 描述
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 数组 识别出的人脸信息,具体结构如下:
  • name:字符串类型,相似人物的名称。
  • rate:浮点数类型,相似概率。
  • id:字符串类型,人脸ID。
表 7. hitLibInfo
名称 类型 描述
context 字符串 文字命中的自定义文本内容。
libCode 字符串 文字命中的自定义文本内容对应的库code。
libName 字符串 文字命中的自定义文本内容对应的库名称。
表 8. hintWordsInfo
名称 类型 描述
context 字符串 文字命中的风险关键词内容。

(结果查询)示例

请求示例
[
    "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695"
]
正常返回示例
{
     "msg": "OK",
     "code": 200,
     "data": [
          {
               "msg": "OK",
               "code": 200,
               "dataId": "test4lNSMdggA0c56MMvfYoh4e-1mwxpx",
               "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": "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695",
               "url": "https://img.alicdn.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png"
        }
    ],
     "requestId": "69B41AE8-1234-1234-1234-12D395695D2D"
}