帮你快速理解、总结文档立即下载

图片审核

最近更新时间:2025-06-17 19:18:02
我的收藏

简介

内容审核功能是由 数据万象(Cloud Infinite,CI)提供的,数据万象将处理能力与 COS SDK 完全结合,您可以直接按照本篇文档指引进行使用。
说明:
使用内容审核服务需拥有数据万象使用权限:
主账号请 单击此处 进行角色授权。
子账号请参见 授权子账号接入数据万象服务 文档。
本文档提供关于图片审核的 API 概览和 SDK 示例代码。
注意:
需要 COS PHP SDK v2.6.15 及以上版本。旧版本可能存在 bug,使用时建议升级到 最新版本。
API
操作描述
图片审核功能支持同步、异步请求方式,您可以通过本接口对图片文件进行内容审核。该接口属于 GET 请求。
图片批量审核接口为同步请求方式,您可以通过本接口对多个图片文件进行内容审核。该接口属于 POST 请求。
本接口用于主动查询指定的图片审核任务结果。

单次图片审核

功能说明

图片审核功能支持同步、异步请求方式,您可以通过本接口对图片文件进行内容审核。该接口属于 GET 请求。

方法原型

public Guzzle\\Service\\Resource\\Model detectImage(array $args = array());

请求示例

示例一:审核某个存储桶路径下的图片

<?php

require dirname(__FILE__) . '/../vendor/autoload.php';

$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\\Cos\\Client(
array(
'region' => $region,
'schema' => 'https', // 审核时必须为 https
'credentials' => array(
'secretId' => $secretId,
'secretKey' => $secretKey)));
try {
//存储桶图片审核
$result = $cosClient->detectImage(array(
'Bucket' => 'examplebucket-1250000000', //存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
'Key' => 'test.png', // 桶文件
// 'BizType' => '', // 可选 定制化策略,不传走默认策略
// 'Interval' => 5, // 可选 审核 GIF 时使用 截帧的间隔
// 'MaxFrames' => 5, // 可选 针对 GIF 动图审核的最大截帧数量,需大于0。
// 'LargeImageDetect' => '',
// 'DataId' => '',
// 'Async' => '',
// 'Callback' => '',
));
// 请求成功
print_r($result);
} catch (\\Exception $e) {
// 请求失败
echo($e);
}

示例二:审核图片 URL

<?php

require dirname(__FILE__) . '/../vendor/autoload.php';

$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\\Cos\\Client(
array(
'region' => $region,
'schema' => 'https', // 审核时必须为 https
'credentials' => array(
'secretId' => $secretId,
'secretKey' => $secretKey)));
try {
//图片链接审核
$imgUrl = 'https://test.jpg';
$result = $cosClient->detectImageUrl(array(
'Bucket' => 'examplebucket-125000000', //存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
'DetectUrl' => $imgUrl,
// 'BizType' => '', // 可选 定制化策略,不传走默认策略
// 'Interval' => 5, // 可选 审核 GIF 时使用 截帧的间隔
// 'MaxFrames' => 5, // 可选 针对 GIF 动图审核的最大截帧数量,需大于0。
// 'LargeImageDetect' => '',
// 'DataId' => '',
// 'Async' => '',
// 'Callback' => '',
));
// 请求成功
print_r($result);
} catch (\\Exception $e) {
// 请求失败
echo($e);
}

单次审核参数说明

Request 中的主要参数描述如下:
参数名称
描述
类型
是否必选
Key
COS 存储桶中的图片文件名称,COS 存储桶由 Host 指定,例如在北京的 examplebucket-1250000000存储桶中的目录 test 下的文件 img.jpg,则 Host 填写 examplebucket-1250000000.cos.ap-beijing.myqcloud.com,Key 填写 test/img.jpg。
String
否
BizType
表示审核策略的唯一标识,您可以通过控制台上的审核策略页面,配置您希望审核的场景,如涉黄、广告、违法违规等,配置指引: 设置公共审核策略。您可以在控制台上获取到 biz-type。biz-type 填写时,此条审核请求将按照该审核策略中配置的场景进行审核。 biz-type 不填写时,将自动使用默认的审核策略。
String
否
DetectUrl
您可以通过填写 detect-url 审核任意公网可访问的图片链接不填写 detect-url 时,后台会默认审核 ObjectKey 填写了 detect-url 时,后台会审核 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg。
String
否
Interval
审核 GIF 动图时,可使用该参数进行截帧配置,代表截帧的间隔。例如值设为5,则表示从第1帧开始截取,每隔5帧截取一帧,默认值5。
Int
否
MaxFrames
针对 GIF 动图审核的最大截帧数量,需大于0。例如值设为5,则表示最大截取5帧,默认值为5。
Int
否
LargeImageDetect
对于超过大小限制的图片是否进行压缩后再审核,取值为: 0(不压缩),1(压缩)。默认为0。 注:压缩最大支持32MB的图片,且会收取图片压缩费用。对于 GIF 等动态图过大时,压缩时间较长,可能会导致审核超时失败。
Int
否
DataId
图片标识,该字段在结果中返回原始内容,长度限制为512字节。
String
否
Async
请求方式参数,有效值: 0(同步返回结果),1(异步进行审核),默认值为0。
Int
否
Callback
回调地址,审核结果(Detail版本)以回调形式发送至您的回调地址,仅在异步审核时生效,支持以 http:// 或者 https:// 开头的地址,例如: http://www.callback.com 。
String
否

批量图片审核

功能说明

图片批量审核接口为同步请求方式,您可以通过本接口对多个图片文件进行内容审核。该接口属于 POST 请求。

方法原型

public Guzzle\\Service\\Resource\\Model detectImages(array $args = array());

请求示例

<?php

require dirname(__FILE__, 2) . '/vendor/autoload.php';

$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\\Cos\\Client(
array(
'region' => $region,
'schema' => 'https', // 审核时必须为 https
'credentials' => array(
'secretId' => $secretId,
'secretKey' => $secretKey)));
try {
// 获取图片base64编码
// $localImageFile = '/tmp/test.jpg';
// $img = file_get_contents($localImageFile);
// $imgInfo = getimagesize($localImageFile);
// $imgBase64Content = base64_encode($img);

$result = $cosClient->detectImages(array(
'Bucket' => 'examplebucket-1250000000', //存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
'Inputs' => array(
array(
'Object' => 'test01.png', // 桶文件
// 'Interval' => '', // 可选 审核 GIF 时使用 截帧的间隔
// 'MaxFrames' => '', // 可选 针对 GIF 动图审核的最大截帧数量,需大于0。
// 'DataId' => 'aaa', // 可选 图片标识,该字段在结果中返回原始内容,长度限制为512字节
// 'LargeImageDetect' => 1, // 对于超过大小限制的图片是否进行压缩后再审核,取值为: 0(不压缩),1(压缩)。默认为0。注:压缩最大支持32M的图片,且会收取压缩费用
// 'UserInfo' => array(
// 'TokenId' => '',
// 'Nickname' => '',
// 'DeviceId' => '',
// 'AppId' => '',
// 'Room' => '',
// 'IP' => '',
// 'Type' => '',
// 'ReceiveTokenId' => '',
// 'Gender' => '',
// 'Level' => '',
// 'Role' => '',
// ), // 可选 用户业务字段
// 'Encryption' => array(
// 'Algorithm' => '',
// 'Key' => '',
// 'IV' => '',
// 'KeyId' => '',
// 'KeyType' => 0,
// ), // 可选 文件加密信息。如果图片未做加密则不需要使用该字段,如果设置了该字段,则会按设置的信息解密后再做审核。
),
array(
'Url' => 'http://example.com/test.png', // 图片URL
// 'Interval' => 5, // 可选 审核 GIF 时使用 截帧的间隔
// 'MaxFrames' => 5, // 可选 针对 GIF 动图审核的最大截帧数量,需大于0。
// 'DataId' => 'bbb', // 可选 图片标识,该字段在结果中返回原始内容,长度限制为512字节
// 'LargeImageDetect' => 1, // 对于超过大小限制的图片是否进行压缩后再审核,取值为: 0(不压缩),1(压缩)。默认为0。注:压缩最大支持32M的图片,且会收取压缩费用
// 'UserInfo' => array(
// 'TokenId' => '',
// 'Nickname' => '',
// 'DeviceId' => '',
// 'AppId' => '',
// 'Room' => '',
// 'IP' => '',
// 'Type' => '',
// 'ReceiveTokenId' => '',
// 'Gender' => '',
// 'Level' => '',
// 'Role' => '',
// ), // 可选 用户业务字段
// 'Encryption' => array(
// 'Algorithm' => '',
// 'Key' => '',
// 'IV' => '',
// 'KeyId' => '',
// 'KeyType' => 0,
// ), // 可选 文件加密信息。如果图片未做加密则不需要使用该字段,如果设置了该字段,则会按设置的信息解密后再做审核。
),
// array(
// 'Content' => $imgBase64Content, // 图片文件的内容,需要先经过 base64编码。注:Content 方式提交图片不支持文件加密方式
//// 'Interval' => 5, // 可选 审核 GIF 时使用 截帧的间隔
//// 'MaxFrames' => 5, // 可选 针对 GIF 动图审核的最大截帧数量,需大于0。
//// 'DataId' => 'ccc', // 可选 图片标识,该字段在结果中返回原始内容,长度限制为512字节
// ),
),
// 'Conf' => array(
// 'BizType' => '', // 可选 定制化策略,不传走默认策略
// 'Async' => 0, // 可选 是否异步进行审核,0:同步返回结果,1:异步进行审核。默认值为 0。
// 'Callback' => '', // 可选 审核结果(Detail 版本)以回调形式发送至您的回调地址
// 'Freeze' => array(
// 'PornScore' => 90,
// 'AdsScore' => 90,
// 'PoliticsScore' => 90,
// 'TerrorismScore' => 90,
// ), // 可选 可通过该字段,设置根据审核结果给出的不同分值,对图片进行自动冻结,仅当`input`中审核的图片为`object`时有效。
// ) // 可选 在 BizType 不传的情况下,走默认策略及默认审核场景。
));
// 请求成功
print_r($result);
} catch (\\Exception $e) {
// 请求失败
echo($e);
}

批量审核参数说明

Request 中的主要参数描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Input
Request
需要审核的内容,如有多个图片,请传入多个 Input 结构。
Container Array
是
Conf
Request
审核规则配置。
Container
是
Container 类型 Input 的具体数据描述如下,使用其中一种:
节点名称(关键字)
父节点
描述
类型
是否必选
Object
Request.Input
存储在 COS 存储桶中的图片文件名称,例如在目录 test 中的文件 image.jpg,则文件名称为 test/image.jpg。Content,Object 和 Url 只能选择其中一种,传入多个时仅一个生效,按 Content,Object, Url 顺序。
String
否
Url
Request.Input
图片文件的链接地址,例如 http://a-1250000.cos.ap-shanghai.myqcloud.com/image.jpg。Content,Object 和 Url 只能选择其中一种,传入多个时仅一个生效,按 Content,Object, Url 顺序。
String
否
Content
Request.Input
图片文件的内容,需要先经过 base64 编码。Content,Object 和 Url 只能选择其中一种,传入多个时仅一个生效,按 Content,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
对于超过大小限制的图片是否进行压缩后再审核,取值为: 0(不压缩),1(压缩)。默认为0。注:压缩最大支持32M的图片,且会收取压缩费用。
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
否
Async
Request.Conf
是否异步进行审核,0:同步返回结果,1:异步进行审核。默认值为 0。
Integer
否
Callback
Request.Conf
审核结果(Detail版本)以回调形式发送至您的回调地址,异步审核时生效,支持以 http:// 或者 https:// 开头的地址,例如:http://www.callback.com。
String
否
Freeze
Request.Conf
可通过该字段,设置根据审核结果给出的不同分值,对图片进行自动冻结,仅当 input 中审核的图片为 object 时有效。
Container
否
Container 类型 Freeze 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
PornScore
Request.Conf.Freeze
取值为[0,100],表示当色情审核结果大于或等于该分数时,自动进行冻结操作。不填写则表示不自动冻结,默认值为空。
Integer
否
AdsScore
Request.Conf.Freeze
取值为[0,100],表示当广告审核结果大于或等于该分数时,自动进行冻结操作。不填写则表示不自动冻结,默认值为空。
Integer
否

查询图片审核结果

功能说明

本接口用于主动查询指定的图片审核任务结果。

方法原型

public Guzzle\\Service\\Resource\\Model getDetectImageResult(array $args = array());

请求示例

<?php

require dirname(__FILE__, 2) . '/vendor/autoload.php';

$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\\Cos\\Client(
array(
'region' => $region,
'schema' => 'https', // 审核时必须为https
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));
try {
$result = $cosClient->getDetectImageResult(array(
'Bucket' => 'examplebucket-1250000000', //存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
'Key' => '', // jobId
));
// 请求成功
print_r($result);
} catch (\\Exception $e) {
// 请求失败
echo($e);
}

参数说明

Request 中的具体数据描述如下:
参数名称
类型
描述
是否必填
Bucket
String
存储桶名称,格式:BucketName-APPID。
是
Key
String
需要查询的任务 ID。
是

返回结果示例

GuzzleHttp\\Command\\Result Object
(
[RequestId] => NjEzZTBjZWRfZmNjYTNiMGFfNGM2M18zZGUzNzc=
[ContentType] => application/xml
[ContentLength] => 1053
[JobsDetail] => Array
(
[JobId] => sd48e1ea1213d411ec953452540024deb5
[State] => Success
[CreationTime] => 2023-05-15T16:02:39+08:00
[Object] => terrorism/枪械.jpeg
[CompressionResult] => 0
[Text] =>
[Label] => Terrorism
[Category] => Firearms
[SubLabel] => Gun
[Result] => 1
[Score] => 99
[ForbidState] => 0
[PornInfo] => Array
(
[HitFlag] => 0
[Score] => 0
[Label] =>
[Category] =>
[SubLabel] =>
)

[AdsInfo] => Array
(
[HitFlag] => 0
[Score] => 0
[Label] =>
[Category] =>
[SubLabel] =>
)

[PoliticsInfo] => Array
(
[HitFlag] => 0
[Score] => 0
[Label] =>
[Category] =>
[SubLabel] =>
)

[TerrorismInfo] => Array
(
[HitFlag] => 1
[Score] => 99
[Label] => Gun
[Category] => Firearms
[SubLabel] => Gun
)

)

[Key] => sd48e1ea1213d411ec953452540024deb5
[Bucket] => examplebucket-1250000000
[Location] => examplebucket-1250000000.ci.ap-guangzhou.myqcloud.com/image/auditing/sd48e1ea1213d411ec953452540024deb5
)