腾讯云图片内容安全(IMS)完全接入指南:从开通服务到API深度集成
1. 图片内容安全(IMS)产品概述
腾讯云图片内容安全(Image Moderation System,IMS)是一款采用前沿图像识别算法、结合海量图片数据进行深度训练的内容识别产品。它能够对图片文件进行多样化场景检测,精准识别其中可能令人反感、不安全或不适宜的内容,有效降低内容违规风险与有害信息识别成本。
IMS的核心识别维度覆盖六大类别:色情内容检测(含直接裸露、漫画色情、隐晦涉黄等)、暴恐内容检测(含暴恐组织标识、刀具枪支、血腥残肢等)、违法内容检测(含赌博器具、毒品违禁品等)、性感内容检测(含性感着装、大面积露肤、暗示性姿势等)、广告内容检测(含二维码、条形码、商业LOGO、引流文字水印等),以及支持用户自定义维护的违规图片库,通过相似图匹配技术进行定向识别。
此外,IMS还于2025年新增了图片AI生成识别服务,能够检测图片是否存在AI工具生成或深度伪造的痕迹。识别结果分为Block(大概率AI生成)、Review(存在AI生成特征,建议复审)、Pass(未检测出AI生成特征)三个等级。
IMS提供两种服务方式:一是通过内容安全控制台直接操作,适用于小批量快速任务查询;二是通过开放API调用,便于高效构建智能化业务系统。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
2. 接入前的准备工作
2.1 开通服务与领取免费试用
接入IMS的第一步是开通服务。首次开通服务的用户可免费领取3000张图片的试用额度,有效期为15天。试用额度适用于图片内容安全服务(涉黄、暴恐、违法、广告等检测),但不包含图片AI生成识别服务(该服务按0.1元/张单独计费)。
开通步骤如下:访问腾讯云官网注册账号并完成实名认证;进入图片内容安全控制台,一键开通服务;系统将自动发放3000张免费试用额度。
2.2 获取API密钥
API调用需要用到SecretId和SecretKey进行身份认证。进入访问管理控制台,创建或查看已有的API密钥。密钥信息需妥善保管,切勿泄露到公开代码仓库中。
如果使用子账号调用IMS服务,主账号需要为子账号授权。登录访问管理控制台,将子账号关联权限策略QcloudIMSFullAccess,授权成功后子账号即可获得相应的调用权限。
2.3 配置审核策略与获取BizType
进入内容安全控制台的应用管理页面,新增应用。选择应用后进入场景管理,新建场景并选择需要检测的风险类型(涉黄、暴恐、违法、广告等)。保存后即可获取BizType字段值,该值在API调用时需要传入。
如果业务场景较为通用,也可以直接使用系统默认策略,无需额外配置。默认策略基于腾讯多行业模型沉淀,已能覆盖大部分场景。
3. API接入方式详解
IMS支持原生API和SDK两种接入方式。原生API接入需要用户根据腾讯云的签名指引自行构建签名进行鉴权;而SDK方式封装了签名过程,开发时只需关注产品提供的具体接口即可,接入流程更为便捷。因此,强烈推荐使用SDK接入。
API调用地址为 ims.tencentcloudapi.com。SDK支持Python、Java、Go、Node.js、PHP等多种编程语言。
3.1 同步检测
同步检测适用于需要实时返回审核结果的场景,如用户发帖、评论上传图片等实时拦截场景。调用同步检测接口后,请求会阻塞等待审核结果返回。
图片文件大小支持审核32MB以下的图片。对于大小超过5MB的图片,需要在调用请求时使用 large-image-detect 参数。建议图片分辨率大于256x256,否则可能影响识别效果。
以下是Python SDK调用同步检测的完整示例:
# 安装SDK:pip install tencentcloud-sdk-python\n\nfrom tencentcloud.common import credential\nfrom tencentcloud.common.profile.client_profile import ClientProfile\nfrom tencentcloud.common.profile.http_profile import HttpProfile\nfrom tencentcloud.ims.v20201229 import ims_client, models\n\n# 配置密钥\ncred = credential.Credential(\"你的SecretId\", \"你的SecretKey\")\n\n# 配置HTTP\nhttpProfile = HttpProfile()\nhttpProfile.endpoint = \"ims.tencentcloudapi.com\"\n\nclientProfile = ClientProfile()\nclientProfile.httpProfile = httpProfile\n\n# 创建客户端\nclient = ims_client.ImsClient(cred, \"ap-guangzhou\", clientProfile)\n\n# 构造请求\nreq = models.ImageModerationRequest()\nreq.FileUrl = \"https://example.com/test-image.jpg\"\n# 如需使用自定义策略,传入BizType\n# req.BizType = \"你的BizType\"\n\n# 发送请求\nresp = client.ImageModeration(req)\n\n# 处理结果\nprint(\"建议操作:\", resp.Suggestion) # Pass / Review / Block\nprint(\"恶意标签:\", resp.Label)\nprint(\"置信度分数:\", resp.Score)审核结果中的Suggestion字段包含三个可能的值:Pass表示正常,建议放行;Review表示疑似违规,建议人工复审;Block表示违规,建议直接拦截。
3.2 异步检测
异步检测适用于批量回扫历史内容、非实时审核等场景。调用异步检测接口后,请求立即返回任务ID,审核在后台异步执行。审核完成后,结果会通过配置的回调地址以JSON格式推送。
以下是Python SDK调用异步检测的示例:
from tencentcloud.common import credential\nfrom tencentcloud.ims.v20201229 import ims_client, models\n\ncred = credential.Credential(\"你的SecretId\", \"你的SecretKey\")\nclient = ims_client.ImsClient(cred, \"ap-guangzhou\")\n\nreq = models.ImageModerationRequest()\nreq.FileUrl = \"https://example.com/test-image.jpg\"\nreq.Async = 1 # 开启异步检测\n\nresp = client.ImageModeration(req)\nprint(\"任务ID:\", resp.TaskId) # 可用于后续查询结果回调内容分为简洁回调(Simple)和详细回调(Detail)两种格式。建议使用回调消息中的 type、score、suggestion 三个参数对违规图片进行评判。由于检测系统无法做到100%准确率,少量图片可能被识别为疑似违规或识别结果不准确,可根据实际应用场景判断是否需要进行人工二次确认。
3.3 批量检测
批量检测接口采用同步POST请求方式,单次请求最多可检测100张图片。适用于需要一次性审核多张图片的场景,如图片库的存量扫描。
from tencentcloud.common import credential\nfrom tencentcloud.ims.v20201229 import ims_client, models\n\ncred = credential.Credential(\"你的SecretId\", \"你的SecretKey\")\nclient = ims_client.ImsClient(cred, \"ap-guangzhou\")\n\nreq = models.ImageModerationRequest()\n# 批量检测通过传入多个图片URL\nreq.FileUrls = [\n \"https://example.com/image1.jpg\",\n \"https://example.com/image2.jpg\",\n \"https://example.com/image3.jpg\"\n]\n\nresp = client.ImageModeration(req)\nfor result in resp.Results:\n print(f\"图片: {result.FileUrl}, 建议: {result.Suggestion}\")3.4 Java SDK调用示例
// Maven依赖\n// <dependency>\n// <groupId>com.tencentcloudapi</groupId>\n// <artifactId>tencentcloud-sdk-java</artifactId>\n// <version>3.1.1309</version></dependency>\n\nimport com.tencentcloudapi.common.Credential;\nimport com.tencentcloudapi.common.exception.TencentCloudSDKException;\nimport com.tencentcloudapi.ims.v20201229.ImsClient;\nimport com.tencentcloudapi.ims.v20201229.models.*;\n\npublic class ImageModerationDemo {\n public static void main(String[] args) {\n try {\n Credential cred = new Credential(\"你的SecretId\", \"你的SecretKey\");\n ImsClient client = new ImsClient(cred, \"ap-guangzhou\");\n \n ImageModerationRequest req = new ImageModerationRequest();\n req.setFileUrl(\"https://example.com/test-image.jpg\");\n \n ImageModerationResponse resp = client.ImageModeration(req);\n System.out.println(\"建议操作: \" + resp.getSuggestion());\n System.out.println(\"恶意标签: \" + resp.getLabel());\n System.out.println(\"置信度分数: \" + resp.getScore());\n } catch (TencentCloudSDKException e) {\n e.printStackTrace();\n }\n }\n}3.5 Go SDK调用示例
// 安装:go get -u github.com/tencentcloud/tencentcloud-sdk-go\n\npackage main\n\nimport (\n \"fmt\"\n \"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common\"\n \"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors\"\n \"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile\"\n ims \"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ims/v20201229\"\n)\n\nfunc main() {\n credential := common.NewCredential(\"你的SecretId\", \"你的SecretKey\")\n cpf := profile.NewClientProfile()\n cpf.HttpProfile.Endpoint = \"ims.tencentcloudapi.com\"\n client, _ := ims.NewClient(credential, \"ap-guangzhou\", cpf)\n\n request := ims.NewImageModerationRequest()\n request.FileUrl = common.StringPtr(\"https://example.com/test-image.jpg\")\n\n response, err := client.ImageModeration(request)\n if _, ok := err.(*errors.TencentCloudSDKError); ok {\n fmt.Printf(\"API错误: %s\\n\", err)\n return\n }\n if err != nil {\n panic(err)\n }\n fmt.Printf(\"建议操作: %s\\n\", *response.Response.Suggestion)\n fmt.Printf(\"恶意标签: %s\\n\", *response.Response.Label)\n}4. 高级功能与配置
4.1 自定义黑白名单
IMS支持自定义图片黑白名单功能。进入IMS控制台的名单管理,进入图库名单,可将特定图片添加到黑名单或白名单中,并关联到相应的审核策略。配置完成后约10分钟生效,所有相似图片(包括裁剪版、加滤镜版)将被自动拦截或放行。
自定义黑白名单在应对突发舆情事件时尤为有效。当标准AI模型无法立即应对特定违规图片时,可通过自定义黑名单在10分钟内上线定向拦截规则。
4.2 多场景审核策略定制
IMS支持分场景自定义审核策略,满足企业精细化审核的需求。例如,可以为不同的业务线(如社区论坛、电商平台、在线教育)配置不同的审核策略,每个策略独立选择需要检测的风险类型和敏感度阈值。不同审核策略对应不同的策略分类,可通过自定义策略定制个性化场景审核。
4.3 与COS对象存储联动审核
IMS与腾讯云对象存储(COS)深度集成,支持对COS中存储的图片进行自动审核。在数据万象控制台的存储桶管理中,选择目标存储桶,在左侧导航栏中选择内容审核,然后点击自动审核配置,选择图片审核。
审核类型支持增量审核(自动审核新上传的图片)和存量审核(审核已有图片)两种模式。这一功能对于已有大量图片数据的平台尤为实用,无需逐一调用API即可完成全量图片的合规扫描。
5. 最佳实践
5.1 同步与异步检测的场景选型
同步检测适合用户发帖、评论上传等实时交互场景,能够在用户操作完成前即时返回审核结果并做出拦截或放行决策。异步检测适合批量回扫历史内容、非实时审核等场景。对于图片库的存量扫描,建议采用异步检测方式,避免阻塞主业务流程。
5.2 审核结果的分级处理策略
识别结果分为正常、疑似与违规三部分。建议的业务处理策略是:放行正常的图片(Pass),人工审查可疑的图片(Review),屏蔽违规的图片(Block)。这种分级处理策略能够在保证内容安全的同时,最大限度节省人力成本,提高审核效率。
5.3 成本优化建议
IMS采用预付费套餐包模式,套餐包有效期为一年。超出套餐额度未续费的用户,将按照按量后付费日结的方式结算,单价为25元/万张。
成本优化的核心策略包括:根据业务量估算选择合适的套餐包,预付费套餐包相比按量后付费更具价格优势;如果图片存储在COS的标准IA(低频访问)存储类型中,调用审核API会产生数据取回费用,需纳入成本考量;图片AI生成识别服务费用独立计算,单价为0.1元/张。
5.4 子账号权限管理
在生产环境中,建议使用子账号而非主账号进行API调用。主账号为子账号授权时,需将子账号关联权限策略QcloudIMSFullAccess。这样可以有效控制权限范围,降低主账号密钥泄露的风险。
6. 计费说明
IMS的计费方式主要为预付费套餐包模式。首次开通服务的用户可免费试用3000张图片,有效期15天。试用到期后,如未购买套餐包,将自动转为按量后付费日结方式。
图片内容安全服务与图片AI生成识别服务为独立计费的两个产品。图片内容安全服务的按量后付费单价为25元/万张;图片AI生成识别服务的按量后付费单价为0.1元/张。
需要注意的是,每个审核场景独立计费。例如,如果同时选择涉黄和广告两个场景进行审核,则一张图片会被审核两次并计费两次。
7. 常见问题解答
问题1:免费试用额度用完后怎么办?
免费试用额度用完后,系统会自动转为按量后付费方式(25元/万张)进行日结结算。建议根据业务量提前购买预付费套餐包以降低成本。
问题2:同步检测和异步检测有什么区别?
同步检测会阻塞请求直到审核结果返回,适合实时拦截场景;异步检测立即返回任务ID,审核在后台执行,适合批量处理场景。
问题3:审核一张图片大概需要多长时间?
同步检测通常在数百毫秒到数秒内返回结果,具体时间取决于图片大小和网络状况。异步检测的时间取决于任务队列的排队情况。
问题4:如何提高审核的准确率?
建议结合使用自定义黑白名单和自定义审核策略。对于AI模型难以精准识别的特定类型图片,可通过黑白名单进行定向拦截或放行。
问题5:子账号调用IMS需要什么权限?
子账号需要主账号授权关联QcloudIMSFullAccess权限策略。授权后子账号即可获得IMS的完整调用权限。
问题6:图片审核支持哪些格式和大小?
支持PNG、JPG、JPEG、BMP、静态WebP等格式的非长图。单张图片大小不超过5MB(使用large-image-detect参数可支持到32MB)。建议分辨率大于256x256。





