简介
本文档提供关于图片审核的 API 概览和 SDK 示例代码。
图片同步审核
功能说明
图片审核的存量扫描功能通过借助数据万象的持久化处理接口,实现对 COS 存量数据的涉黄、违法违规以及广告引导类图片的扫描。
方法原型
ImageAuditingResponse imageAuditing(ImageAuditingRequest request);
请求示例
//1.创建任务请求对象ImageAuditingRequest request = new ImageAuditingRequest();//2.添加请求参数 参数详情请见api接口文档//2.1设置请求bucketrequest.setBucketName("examplebucket-1250000000");//2.2设置审核类型request.setDetectType("porn,ads");//2.3设置bucket中的图片位置request.setObjectKey("1.png");//3.调用接口,获取任务响应对象ImageAuditingResponse response = client.imageAuditing(request);
参数说明
Request 中的具体数据描述如下:
节点名称(关键字) | 描述 | 类型 | 是否必选 |
ObjectKey | COS 存储桶中的图片文件名称,COS 存储桶由 Host 指定,例如在北京的 examplebucket-1250000000存储桶中的目录 test 下的文件 img.jpg,则Host 填写 examplebucket-1250000000.cos.ap-beijing.myqcloud.com,ObjectKey 填写 test/img.jpg。 | String | 否 |
bizType | 表示审核策略的唯一标识,您可以通过控制台上的审核策略页面,配置您希望审核的场景,如涉黄、广告、违法违规等,配置指引: 设置审核策略。您可以在控制台上获取到 bizType。bizType 填写时,此条审核请求将按照该审核策略中配置的场景进行审核。bizType 不填写时,将自动使用默认的审核策略。 | String | 否 |
detectUrl | 您可以通过填写 detectUrl 审核任意公网可访问的图片链接不填写detectUrl 时,后台会默认审核ObjectKey 填写了detectUrl 时,后台会审核detectUrl 链接,无需再填写ObjectKey``detectUrl 示例:http://www.example.com/abc.jpg。 | String | 否 |
interval | 审核 GIF 动图时,可使用该参数进行截帧配置,代表截帧的间隔。例如值设为5,则表示从第1帧开始截取,每隔5帧截取一帧,默认值5。 | Int | 否 |
maxFrames | 针对 GIF 动图审核的最大截帧数量,需大于0。例如值设为5,则表示最大截取5帧,默认值为5。 | Int | 否 |
largeImageDetect | 对于超过5MB的图片,需要使用该参数进行审核。取值为: 0(不处理),1(压缩图片)。默认为0。
注意:最大可支持的图片大小为32MB,使用该参数且会收取 图片基础处理费用
。对于 GIF 等动态图过大,压缩时间较长时,可能会导致审核超时失败。 | Int | 否 |
dataId | 图片标识,该字段在结果中返回原始内容,长度限制为512字节。 | String | 否 |
async | 是否异步进行审核,取值 0:同步返回结果,1:异步进行审核,默认为0。 | Int | 否 |
callback | 审核结果(Detail版本)以回调形式发送至您的回调地址,异步审核时生效,支持以 http:// 或者 https:// 开头的地址,例如: http://www.callback.com 。 | String | 否 |
返回结果说明
成功:成功则返回 ImageAuditingResponse 实例,内含审核结果内容。
失败:发生错误(例如 Bucket 不存在),抛出异常 CosClientException 或者 CosServiceException。详情请参见 异常处理。
ImageAuditingResponse对象转为json后内容展示
{"requestId":"NjJkOTI3YTJfNGNhY2ZhMDlfOWJhOV9hZ*****","jobId":"si461d9f9608de11ed9b3d525400b*****","object":"1.png","compressionResult":"0","result":"0","label":"Normal","category":"","subLabel":"","score":"42","text":"","state":"Success","pornInfo":{"code":"0","msg":"OK","hitFlag":"0","score":"0","label":"","ocrResults":{"text":"","keywords":""},"category":""}}
响应包体具体数据内容如下:
参数名称 | 类型 | 描述 |
DataId | String | 图片标识,审核结果会返回原始内容,长度限制为512字节。 |
JobId | String | 图片审核任务的 ID。 |
State | String | 审核任务的状态,值为 Success(审核成功)。 |
Object | String | 存储在 COS 桶中的图片名称,创建任务使用 ObjectKey 时返回。 |
Url | String | 图片文件的链接地址,创建任务使用 detect-url 时返回。 |
CompressionResult | Int | 图片是否被压缩处理,值为 0(未压缩),1(正常压缩)。 |
Result | Int | 该字段表示本次判定的审核结果,您可以根据该结果,进行后续的操作;建议您按照业务所需,对不同的审核结果进行相应处理。有效值:0(审核正常),1 (判定为违规敏感文件),2(疑似敏感,建议人工复核)。 |
Label | String | 该字段用于返回检测结果中所对应的优先级最高的恶意标签,表示模型推荐的审核结果,建议您按照业务所需,对不同违规类型与建议值进行处理。返回值:Normal 表示正常,Porn 表示色情,Ads 表示广告,Quality 表示低质量,以及其他不安全或不适宜的类型。 |
Category | String | 该字段为 Label 的子集,表示审核命中的具体审核类别。例如 Sexy,表示色情标签中的性感类别。 |
SubLabel | String | 该图命中的二级标签结果。 |
Score | Int | 该字段表示审核结果命中审核信息的置信度,取值范围:0(置信度最低)-100(置信度最高 ),越高代表该内容越有可能属于当前返回审核信息例如:色情 99,则表明该内容非常有可能属于色情内容。 |
Text | String | 该图里的文字内容(OCR),当审核策略开启文本内容检测时返回。 |
PornInfo | Container | 审核场景为涉黄的审核结果信息。 |
AdsInfo | Container | 审核场景为广告引导的审核结果信息。 |
审核信息(PornInfo、AdsInfo)中包含如下内容:
参数名称 | 类型 | 描述 |
Code | Int | |
Msg | String | 具体错误信息,如正常则为 OK。 |
HitFlag | Int | 用于返回该审核场景的审核结果,返回值:0:正常。1:确认为当前场景的违规内容。2:疑似为当前场景的违规内容。 |
Score | Int | 该字段表示审核结果命中审核信息的置信度,取值范围:0(置信度最低)-100(置信度最高),越高代表该内容越有可能属于当前返回审核信息。其中: 0 - 60分表示图片正常 61 - 90分表示图片疑似敏感 91 - 100分表示图片确定敏感 例如:色情 99,表明该内容非常有可能属于色情内容。 |
Label | String | 该字段表示该截图的综合结果标签(可能为 SubLabel,可能为人物名字等)。 |
Category | String | 该字段为 Label 的子集,表示审核命中的具体审核类别。例如 Sexy,表示色情标签中的性感类别。 |
SubLabel | String | 该字段表示审核命中的具体子标签,例如:Porn 下的 SexBehavior 子标签。 注意:该字段可能返回空,表示未命中具体的子标签。 |
OcrResults | Container Array | 该字段表示 OCR 文本识别的详细检测结果,包括文本识别结果、命中的关键词等信息,有相关违规内容时返回。 |
LibResults | Container Array | 该字段用于返回基于风险库识别的结果。 注意:未命中风险库中样本时,此字段不返回。 |
Container 节点 LibResults 的内容:
参数名称 | 类型 | 描述 |
ImageId | String | 该字段表示命中的风险库中的图片样本 ID。 |
Score | String | 该字段用于返回当前标签下的置信度,取值范围:0(置信度最低)-100(置信度最高 ),越高代表当前的图片越有可能命中库中的样本。例如:色情 99,表明该数据非常有可能命中库中的色情样本。 |
Container 节点 OcrResults 的内容:
参数名称 | 类型 | 描述 |
Text | String | 图片 OCR 文本识别出的具体文本内容。 |
Keywords | Array | 在当前审核场景下命中的关键词。 |
Location | Container | 该参数用于返回 OCR 检测框在图片中的位置(左上角 xy 坐标、长宽、旋转角度),以方便快速定位识别文字的相关信息。 |
名称 | 类型 | 描述 |
X | Float | 该参数用于返回检测框左上角位置的横坐标(x)所在的像素位置,结合剩余参数可唯一确定检测框的大小和位置。 |
Y | Float | 该参数用于返回检测框左上角位置的纵坐标(y)所在的像素位置,结合剩余参数可唯一确定检测框的大小和位置。 |
Width | Float | 该参数用于返回检测框的宽度(由左上角出发在 x 轴向右延伸的长度),结合剩余参数可唯一确定检测框的大小和位置。 |
Height | Float | 该参数用于返回检测框的高度(由左上角出发在 y 轴向下延伸的长度),结合剩余参数可唯一确定检测框的大小和位置。 |
Rotate | Float | 该参数用于返回检测框的旋转角度,该参数结合 X 和 Y 两个坐标参数可唯一确定检测框的具体位置;取值:0-360(角度制),方向为逆时针旋转。 |
图片批量审核
功能说明
图片批量审核接口为同步请求方式,您可以通过本接口对多个图片文件进行内容审核。该接口属于 POST 请求。
方法原型
BatchImageAuditingResponse batchImageAuditing(BatchImageAuditingRequest request);
请求示例
//1.创建任务请求对象BatchImageAuditingRequest request = new BatchImageAuditingRequest();//2.添加请求参数 参数详情请见api接口文档//2.1设置请求bucketrequest.setBucketName("examplebucket-1250000000");//2.2添加请求内容List<BatchImageAuditingInputObject> inputList = request.getInputList();BatchImageAuditingInputObject input = new BatchImageAuditingInputObject();input.setObject("1.jpg");input.setDataId("DataId");inputList.add(input);input = new BatchImageAuditingInputObject();input.setUrl("https://examplebucket-1250000000.cos.ap-chongqing.myqcloud.com/1.png");input.setDataId("DataId");inputList.add(input);//2.2设置审核类型request.getConf().setDetectType("all");//3.调用接口,获取任务响应对象BatchImageAuditingResponse response = client.batchImageAuditing(request);List<BatchImageJobDetail> jobList = response.getJobList();
参数说明
request 的数据描述如下:
节点名称(关键字) | 父节点 | 描述 | 类型 | 是否必选 |
Request | 无 | 图片批量审核的具体配置项。 | Container | 是 |
Container 类型 Request 的具体数据描述如下:
节点名称(关键字) | 父节点 | 描述 | 类型 | 是否必选 |
Input | Request | 需要审核的内容,如有多个图片,请传入多个 Input 结构。 | Container Array | 是 |
Conf | Request | 审核规则配置。 | Container | 是 |
Container 类型 Input 的具体数据描述如下,使用其中一种:
节点名称(关键字) | 父节点 | 描述 | 类型 | 是否必选 |
Object | Request.Input | 存储在 COS 存储桶中的图片文件名称,例如在目录 test 中的文件 image.jpg,则文件名称为 test/image.jpg。Object 和 Url 只能选择其中一种。 | String | 否 |
Url | Request.Input | 图片文件的链接地址,例如 http://a-1250000.cos.ap-shanghai.myqcloud.com/image.jpg 。Object 和 Url 只能选择其中一种。 | String | 否 |
Interval | Request.Input | 截帧频率,GIF 图检测专用,默认值为5,表示从第一帧(包含)开始每隔5帧截取一帧。 | Int | 否 |
MaxFrames | Request.Input | 最大截帧数量,GIF 图检测专用,默认值为5,表示只截取 GIF 的5帧图片进行审核,必须大于0。 | Int | 否 |
DataId | Request.Input | 图片标识,该字段在结果中返回原始内容,长度限制为512字节。 | String | 否 |
LargeImageDetect | Request.Input | 对于超过5MB的图片,需要使用该参数进行审核。取值为: 0(不处理),1(压缩图片)。默认为0。
注意:最大可支持的图片大小为32MB,使用该参数且会收取 图片基础处理费用。对于 GIF 等动态图过大时,压缩时间较长,可能会导致审核超时失败。 | Int | 否 |
UserInfo | Request.Input | 用户业务字段。 | Container | 否 |
Container 节点 UserInfo 的内容:
节点名称(关键字) | 描述 | 类型 | 是否必选 |
TokenId | 一般用于表示账号信息,长度不超过128字节。 | String | 否 |
Nickname | 一般用于表示昵称信息,长度不超过128字节。 | String | 否 |
DeviceId | 一般用于表示设备信息,长度不超过128字节。 | String | 否 |
AppId | 一般用于表示 App 的唯一标识,长度不超过128字节。 | String | 否 |
Room | 一般用于表示房间号信息,长度不超过128字节。 | String | 否 |
IP | 一般用于表示 IP 地址信息,长度不超过128字节。 | String | 否 |
Type | 一般用于表示业务类型,长度不超过128字节。 | String | 否 |
ReceiveTokenId | 一般用于表示接收消息的用户账号,长度不超过128字节。 | String | 否 |
Gender | 一般用于表示性别信息,长度不超过128字节。 | String | 否 |
Level | 一般用于表示等级信息,长度不超过128字节。 | String | 否 |
Role | 一般用于表示角色信息,长度不超过128字节。 | String | 否 |
Container 类型 Conf 的具体数据描述如下:
节点名称(关键字) | 父节点 | 描述 | 类型 | 是否必选 |
BizType | Request.Conf | 表示审核策略的唯一标识,您可以通过控制台上的审核策略页面,配置您希望审核的场景,如涉黄、广告、违法违规等,配置指引: 设置审核策略。您可以在控制台上获取到 BizType。BizType 填写时,此条审核请求将按照该审核策略中配置的场景进行审核。BizType 不填写时,将自动使用默认的审核策略。 | String | 否 |
DetectType | Request.Conf | (后续不再维护)审核的场景类型,有效值:Porn(涉黄)、Ads(广告)等,可以传入多种类型,不同类型以逗号分隔,例如:Porn,Ads。如您有更多场景的审核需要,请使用 BizType 参数。 | String | 否 |
Async | Request.Conf | 是否异步进行审核,0:同步返回结果,1:异步进行审核。默认值为 0。 | Integer | 否 |
Callback | Request.Conf | 审核结果(Detail版本)以回调形式发送至您的回调地址,异步审核时生效,支持以 http:// 或者 https:// 开头的地址,例如:http://www.callback.com 。 | String | 否 |
注意:
通过 Object 进行审核为内网操作,不会产生额外的外网流量。
通过 Url 进行审核,会产生图片所在源站对应的外网流量。
返回结果说明
成功:成功则返回 BatchImageAuditingResponse 实例,内含审核结果内容。
失败:发生错误(例如 Bucket 不存在),抛出异常 CosClientException 或者 CosServiceException。详情请参见 异常处理。
ImageAuditingResponse对象转为json后内容展示
{"requestId":"NjJkOTJjMjVfMTIwNjUzMDlfNDg5OF8*****","jobList":[{"dataId":"DataId","jobId":"sif6423b8008e011ed9b3d525400*****","category":"","label":"Normal","result":"0","object":"1.jpg","score":"0","subLabel":"","text":"","code":"","message":"","url":"","compressionResult":"0","pornInfo":{"code":"0","msg":"OK","hitFlag":"0","score":"45","label":"","keywords":"","count":"","subLabel":"","ocrResults":{"text":"","keywords":""},"category":""},"adsInfo":{"code":"0","msg":"OK","hitFlag":"0","score":"0","label":"","keywords":"","count":"","subLabel":"","ocrResults":{"text":"","keywords":""},"category":""},"userInfo":{"tokenId":"","nickname":"","deviceId":"","appId":"","room":"","ip":"","type":"","receiveTokenId":"","gender":"","level":"","role":""},"ocrResults":{"text":"","keywords":""}},{"dataId":"DataId","jobId":"sif640a3c108e011ed9b3d525400*****","category":"","label":"Normal","result":"0","object":"","score":"42","subLabel":"","text":"","code":"","message":"","url":"https://demo-1234567890.cos.ap-chongqing.myqcloud.com/1.png","compressionResult":"0","pornInfo":{"code":"0","msg":"OK","hitFlag":"0","score":"0","label":"","keywords":"","count":"","subLabel":"","category":"","ocrResults":{"text":"","keywords":""}},"adsInfo":{"code":"0","msg":"OK","hitFlag":"0","score":"0","label":"","keywords":"","count":"","subLabel":"","category":"","ocrResults":{"text":"","keywords":""}},"userInfo":{"tokenId":"","nickname":"","deviceId":"","appId":"","room":"","ip":"","type":"","receiveTokenId":"","gender":"","level":"","role":""},"ocrResults":{"text":"","keywords":""}}]}
响应包体具体数据内容如下:
Response 的内容:
参数名称 | 类型 | 描述 |
JobsDetail | Array | 图片审核的结果 |
RequestId | String | 每次请求发送时,服务端将会自动为请求生成一个 ID,遇到问题时,该 ID 能更快地协助定位问题。 |
JobsDetail 节点内容如下:
参数名称 | 类型 | 描述 |
Code | String | |
Message | String | 错误描述,只有失败时返回。 |
DataId | String | 图片标识,审核结果会返回原始内容,长度限制为512字节。 |
JobId | String | 本次审核任务的 ID。 |
State | String | 审核任务的状态,值为Success(审核成功)、Failed(审核失败)其中一个。 |
Object | String | 存储在 COS 存储桶中的图片文件名称,创建任务使用Object时返回。 |
Url | String | 图片文件的链接地址,创建任务使用Url时返回。 |
CompressionResult | Integer | 图片是否被压缩处理,值为 0(未压缩),1(正常压缩)。 |
Label | String | 该字段用于返回检测结果中所对应的优先级最高的恶意标签,表示模型推荐的审核结果,建议您按照业务所需,对不同违规类型与建议值进行处理。 返回值:Normal:正常,Porn:色情,Ads:广告,Quality:低质量等。 |
Result | Integer | 该字段表示本次判定的审核结果,您可以根据该结果,进行后续的操作;建议您按照业务所需,对不同的审核结果进行相应处理。有效值:0(审核正常),1 (判定为违规敏感文件),2(疑似敏感,建议人工复核)。 |
Score | Integer | 该字段表示审核结果命中审核信息的置信度,取值范围:0(置信度最低)-100(置信度最高 ),越高代表该内容越有可能属于当前返回审核信息。例如:色情 99,表明该内容非常有可能属于色情内容。 |
Category | String | 该图命中的审核类别结果。 |
SubLabel | String | 该图命中的二级标签结果。 |
Text | String | 该图里的文字内容(OCR),当审核策略开启文本内容检测时返回。 |
PornInfo | Container | 审核场景为涉黄的审核结果信息。 |
AdsInfo | Container | 审核场景为广告引导的审核结果信息。 |
UserInfo | Container | 请求中设置的 UserInfo 原样返回。 |
ListInfo | Container | 账号黑白名单结果。 |
审核信息(PornInfo、AdsInfo 等)中的内容如下:
参数名称 | 类型 | 描述 |
Code | Integer | |
Msg | String | 具体错误信息,如正常则为 OK。 |
HitFlag | Integer | 用于返回该审核场景的审核结果,返回值:0:正常。1:确认为当前场景的违规内容。2:疑似为当前场景的违规内容。 |
Score | Integer | 该字段表示审核结果命中审核信息的置信度,取值范围:0(置信度最低)-100(置信度最高 ),越高代表该内容越有可能属于当前返回审核信息例如:色情 99,则表明该内容非常有可能属于色情内容。 |
Label | String | 该图的结果标签(为综合标签,可能为 SubLabel,可能为人物名字等)。 |
Category | String | 该字段为 Label 的子集,表示审核命中的具体审核类别。例如 Sexy,表示色情标签中的性感类别。 |
SubLabel | String | 该图的二级标签结果。 |
OcrResults | Container Array | 该字段表示 OCR 文本识别的详细检测结果,包括文本坐标信息、文本识别结果等信息,有相关违规内容时返回。 |
LibResults | Container Array | 该字段用于返回基于风险库识别的结果。注意:未命中风险库中样本时,此字段不返回。 |
Container 节点 LibResults 的内容:
节点名称(关键字) | 类型 | 描述 |
ImageId | String | 该字段表示命中的风险库中的图片样本 ID。 |
Score | Integer | 该字段用于返回当前标签下的置信度,取值范围:0(置信度最低)-100(置信度最高 ),越高代表当前的图片越有可能命中库中的样本。例如:色情 99,则表明该数据非常有可能命中库中的色情样本。 |
OcrResults 的内容如下:
节点名称(关键字) | 类型 | 描述 |
Text | String | 有敏感信息的 Ocr 文本内容。 |
Keywords | String Array | 该段内容中的敏感文字。 |
UserInfo 的内容(与请求中的 UserInfo 一致):
节点名称(关键字) | 类型 | 描述 |
TokenId | String | 一般用于表示账号信息,长度不超过128字节。 |
Nickname | String | 一般用于表示昵称信息,长度不超过128字节。 |
DeviceId | String | 一般用于表示设备信息,长度不超过128字节。 |
AppId | String | 一般用于表示App的唯一标识,长度不超过128字节。 |
Room | String | 一般用于表示房间号信息,长度不超过128字节。 |
IP | String | 一般用于表示IP地址信息,长度不超过128字节。 |
Type | String | 一般用于表示业务类型,长度不超过128字节。 |
ReceiveTokenId | String | 一般用于表示接收消息的用户账号,长度不超过128字节。 |
Gender | String | 一般用于表示性别信息,长度不超过128字节。 |
Level | String | 一般用于表示等级信息,长度不超过128字节。 |
Role | String | 一般用于表示角色信息,长度不超过128字节。 |
ListInfo 的内容:
节点名称(关键字) | 类型 | 描述 |
ListResults | Container Array | 命中的所有名单结果。 |
ListResults 的内容:
节点名称(关键字) | 类型 | 描述 |
ListType | String | 命中的名单类型,取值为0(白名单)和1(黑名单)。 |
ListName | String | 命中的名单名称。 |
Entity | String | 命中了名单中的哪条内容。 |