阿里云图片审核 API 调用教程
阿里云图片审核 API 调用教程
本教程将教您如何通过代理服务快速调用阿里云图片审核增强版API,对图片进行内容安全检测。
目录
前置知识
在开始本教程之前,建议您了解以下基础概念。如果您已经熟悉这些内容,可以直接跳过此章节。
什么是API?
API(Application Programming Interface,应用程序编程接口)就像是两个软件之间的”桥梁”或”翻译官”。
打个比方:
- 🏪 API就像是餐厅的服务员:您(用户)想点菜(使用功能),但您不能直接进入厨房(服务器),需要通过服务员(API)来传递您的需求。
简单理解:API就是让不同的软件能够互相”对话”的方式。
什么是HTTP请求?
HTTP请求就是您的程序向服务器发送”请求”,告诉服务器您需要什么服务。
常见类型:
- GET:获取数据(比如查看图片)
- POST:提交数据(比如上传图片进行审核)
本教程使用的是 POST 请求,因为我们把图片发送给服务器进行审核。
什么是JSON?
JSON(JavaScript Object Notation)是一种数据格式,就像一个”表格”或”清单”,用来组织信息。
示例:
{ "姓名": "张三", "年龄": 25, "城市": "北京"}这个JSON记录了一个人的基本信息。我们的API也会返回类似的JSON格式,包含审核结果。
什么是AccessKey?
AccessKey就像是您的”身份证”和”密码”,用来证明您的身份。
- AccessKey ID:就像您的用户名,告诉服务器”我是谁”
- AccessKey Secret:就像您的密码,用来验证您的身份
⚠️ 重要:AccessKey Secret 只显示一次,必须妥善保存!就像银行卡密码一样,不要告诉别人。
什么是cURL?
cURL是一个命令行工具,可以用来向服务器发送HTTP请求。它就像是”网页浏览器”的命令行版本。
优点:
- 无需编写代码就能测试API
- 适合快速验证功能是否正常
编程语言基础
本教程提供了两种编程语言的示例:
- Node.js:基于JavaScript,适合Web开发
- Python:简单易学,适合初学者
如果您完全不懂编程,建议先学习基础的Python语法(大约需要1-2周)。
小贴士
如果您是第一次接触这些概念,不用担心:
- 📚 可以先复制示例代码,运行起来看看效果
- 🔧 遇到问题时,查看本教程的”常见问题”章节
- 💡 不需要一次性理解所有细节,先能用起来再说
教程概述
学习目标
完成本教程后,您将能够:
- 理解阿里云图片审核API的基本概念
- 获取并配置必要的认证信息
- 使用不同编程语言调用API
- 解析和理解API响应结果
- 处理各种错误场景
适用人群
✅ 适合:
- 有一定编程基础的开发者
- 了解HTTP、JSON等技术概念的用户
- 想要在项目中集成图片审核功能的开发者
❌ 不适合:
- 完全没有编程基础的小白(建议先学习基础编程知识)
- 只想使用图形界面工具的用户(本教程需要编写代码)
预计学习时间
- 📖 阅读时间: 30-45 分钟
- 💻 实践时间: 1-2 小时
- ⏱️ 总计: 约 2-3 小时
难度评级
| 评级 | 说明 |
|---|---|
| ⭐⭐⭐ | 中级难度 - 需要一定的编程基础和HTTP/API概念 |
评级说明:
- 本教程适合有一定编程经验的开发者
- 涉及HTTP请求、JSON数据处理等概念
- 提供了多种编程语言的实现示例
- 新手可能需要额外时间理解API调用原理
最低要求
在开始本教程之前,您需要满足以下最低要求:
📚 知识要求
| 要求 | 说明 | 资源推荐 |
|---|---|---|
| 基础编程概念 | 了解变量、函数、条件判断等基础编程概念 | Python基础教程 / JavaScript入门 |
| HTTP基础 | 了解GET/POST请求的概念 | MDN HTTP文档 |
| JSON格式 | 了解JSON数据结构的基本语法 | JSON教程 |
| 命令行操作 | 会使用命令行工具(cmd/终端)执行命令 | 命令行基础教程 |
💻 环境要求
| 要求 | 说明 |
|---|---|
| 编程环境 | Node.js(v14+)或 Python(3.6+) |
| 网络环境 | 能够访问阿里云服务和代理API |
| 文本编辑器 | VS Code、Sublime Text 等代码编辑器 |
🔑 账号要求
| 要求 | 说明 |
|---|---|
| 阿里云账号 | 已注册并完成实名认证 |
| 内容安全服务 | 已开通内容安全服务 |
| AccessKey | 已创建AccessKey ID和Secret |
学习建议
为了帮助您更好地掌握本教程内容,我们提供以下学习建议:
🎯 学习路径建议
1. 快速上手路径(推荐初学者)
阅读前置知识 → 完成前置准备 → 使用cURL快速测试 → 理解响应结果 → 尝试代码实现2. 深入学习路径(推荐有经验的开发者)
跳过前置知识 → 完成前置准备 → 直接使用代码示例 → 研究详细参数 → 探索高级功能📖 学习技巧
| 技巧 | 说明 |
|---|---|
| 先跑通再理解 | 先复制示例代码运行起来,看到效果后再理解原理 |
| 分步验证 | 每完成一个步骤就测试一下,确保没有问题再继续 |
| 记录问题 | 遇到问题时记录下来,方便后续查找和解决 |
| 对比学习 | 对比不同编程语言的实现,加深理解 |
⚠️ 常见误区
| 误区 | 正确做法 |
|---|---|
| 一次性理解所有概念 | 不需要,先能用起来,再逐步深入 |
| 跳过前置准备 | 必须完成前置准备,否则无法调用API |
| 直接使用生产环境 | 建议先在测试环境验证,确保功能正常 |
| 忽略错误处理 | 务必处理各种错误场景,提高代码健壮性 |
🔄 进阶学习方向
完成本教程后,您可以继续学习:
- 批量审核:学习如何批量审核多张图片
- 自定义图库:配置自定义图库进行精准匹配
- 视频审核:学习视频内容审核API
- 文本审核:学习文本内容安全检测
- 语音审核:学习语音内容安全检测
💡 实践项目建议
为了巩固学习成果,建议您尝试以下实践项目:
| 项目 | 难度 | 说明 |
|---|---|---|
| 图片上传审核工具 | ⭐⭐ | 创建一个简单的图片上传页面,上传后自动审核 |
| 批量图片审核脚本 | ⭐⭐⭐ | 编写脚本批量审核指定目录下的图片 |
| 审核结果可视化 | ⭐⭐⭐⭐ | 将审核结果以图表形式展示,便于分析 |
| 审核日志系统 | ⭐⭐⭐⭐⭐ | 记录所有审核历史,支持查询和统计 |
前置准备
WARNING在开始使用图片审核API之前,请务必完成所有准备工作。特别是 AccessKey 的创建和保存,这是调用API的关键凭证。AccessKey Secret 只显示一次,丢失后无法找回,必须妥善保存!
在开始使用图片审核API之前,您需要完成以下准备工作。请按顺序完成每个步骤。
1. 注册阿里云账号
如果您还没有阿里云账号,请先注册:
📝 操作步骤:
- 访问 阿里云官网
- 点击右上角的”免费注册”按钮
- 填写手机号或邮箱,设置密码
- 按照提示完成验证
💡 提示:注册需要手机号验证,请确保您的手机能接收短信。
2. 开通内容安全服务
注册账号后,需要开通”内容安全”服务。
📝 操作步骤:
- 登录阿里云控制台(使用刚才注册的账号)
- 在搜索框中输入”内容安全”
- 点击搜索结果中的”内容安全”进入产品页面
- 点击”立即开通”按钮
重要说明:
- ✅ 开通免费:不需要支付任何费用
- 💰 按量计费:只在实际使用时才收费,就像”用多少付多少”
- 📊 查看价格:可以在产品页面查看详细的价格表
⚠️ 注意:开通服务后,建议先了解价格,避免产生意外费用。
3. 创建 AccessKey
AccessKey是您调用API的”身份证”和”密码”。
📝 操作步骤:
- 访问 AccessKey 管理页面
- 点击”创建 AccessKey”按钮
- 验证身份(输入手机号或邮箱接收验证码)
- 系统会显示两串字符:
- AccessKey ID:类似于
LTAI5t...的字符串 - AccessKey Secret:类似于
xxx...的字符串
- AccessKey ID:类似于
⚠️ 安全提示:
- 🔐 只显示一次:AccessKey Secret 只在创建时显示一次,之后无法查看!请立即复制保存
- 📝 妥善保存:建议保存在安全的地方,比如密码管理器
- 🚫 不要泄露:不要将 AccessKey 暴露在前端代码或公开的代码仓库中
- 👥 使用子账号:建议创建RAM子账号的AccessKey,而不是使用主账号
4. 赋予权限(可选)
如果您使用的是RAM子账号的AccessKey,需要给它添加权限。
📝 操作步骤:
- 进入 RAM 控制台
- 在左侧菜单中找到”用户”,点击进入
- 找到您刚才创建的子账号
- 点击该子账号右侧的”添加权限”按钮
- 在搜索框中输入:
AliyunYundunGreenWebFullAccess - 选中该权限,点击”确定”
💡 提示:如果您使用主账号的AccessKey,可以跳过这一步。
5. 选择服务地域
根据您的业务所在地选择合适的服务器区域。
📝 如何选择:
- 🇨🇳 国内用户:选择距离您最近的城市(上海、杭州、北京、深圳、成都)
- 🌍 海外用户:选择距离您最近的国家或地区
| 地域 | 外网接入地址 | 支持服务 | 适合用户 |
|---|---|---|---|
| 华东2(上海) | https://green-cip.cn-shanghai.aliyuncs.com | 全部服务 | 中国东部用户 |
| 华东1(杭州) | https://green-cip.cn-hangzhou.aliyuncs.com | 全部服务 | 中国东部用户 |
| 华北2(北京) | https://green-cip.cn-beijing.aliyuncs.com | 全部服务 | 中国北部用户 |
| 华南1(深圳) | https://green-cip.cn-shenzhen.aliyuncs.com | 全部服务 | 中国南部用户 |
| 西南1(成都) | https://green-cip.cn-chengdu.aliyuncs.com | 全部服务 | 中国西部用户 |
| 新加坡 | https://green-cip.ap-southeast-1.aliyuncs.com | 出海版服务 | 东南亚用户 |
| 英国(伦敦) | https://green-cip.eu-west-1.aliyuncs.com | 出海版服务 | 欧洲用户 |
| 美国(弗吉尼亚) | https://green-cip.us-east-1.aliyuncs.com | 出海版服务 | 美国东部用户 |
| 德国(法兰克福) | https://green-cip.eu-central-1.aliyuncs.com | 出海版服务 | 欧洲中部用户 |
说明:
- 带有
_cb后缀的服务类型为”出海版”,专为海外业务设计 - 选择距离您用户最近的地域,速度会更快
💡 新手建议:如果您不确定选择哪个,选择”华东2(上海)“即可,这是最常用的区域。
✅ 准备工作检查清单
完成以上步骤后,您应该已经准备好以下信息:
- 阿里云账号已注册
- 内容安全服务已开通
- AccessKey ID(类似
LTAI5t...) - AccessKey Secret(类似
xxx...,已妥善保存) - 已选择服务地域(如上海:
https://green-cip.cn-shanghai.aliyuncs.com)
如果以上都已完成,恭喜您!可以继续学习下一章节了。🎉
API 基础知识
API 概述
阿里云图片审核增强版API用于识别图像中是否有违反网络内容传播相关规定、影响平台内容秩序、影响用户体验的内容或元素,支持60+的内容风险标签和100+的风险管控项。
🔄 API 调用流程
调用方式
本API采用 POST 请求方式,通过 HTTP/HTTPS 协议调用。
认证方式
本教程使用代理服务API,认证方式更加简单:
- AccessKey ID: 用于标识用户的访问密钥ID
- AccessKey Secret: 用于验证请求的合法性
💡 提示: 本教程使用的是代理服务,无需手动计算签名,大大简化了调用过程。
📡 请求交互时序
流程说明:
- 用户/程序:向代理服务发送POST请求,包含图片URL和AccessKey
- 代理服务:验证AccessKey的有效性
- 代理服务:计算请求签名(无需用户手动计算)
- 代理服务:将请求转发到阿里云API
- 阿里云API:下载图片并使用AI进行内容审核
- 阿里云API:返回审核结果给代理服务
- 代理服务:将结果返回给用户/程序
- 用户/程序:接收JSON格式的响应
请求限制
| 限制项 | 说明 |
|---|---|
| QPS限制 | 单用户100次/秒 |
| 图片大小 | 不超过20MB |
| 图片尺寸 | 高或宽不超过16,384 px,总像素不超过1.67亿 px |
| 图片格式 | PNG、JPG、JPEG、BMP、WEBP、TIFF、SVG、HEIF、GIF、ICO |
| 图片下载时间 | 3秒内 |
支持的服务类型
| 服务类型 | 说明 | 使用场景 |
|---|---|---|
baselineCheck | 通用基线检测 | 通用图片内容审核 |
baselineCheck_pro | 通用基线检测_专业版 | 需要更高精度的场景 |
baselineCheck_cb | 通用基线检测_出海版 | 出海业务使用(海外区域) |
tonalityImprove | 内容治理检测 | 内容治理和审核 |
tonalityImprove_cb | 内容治理检测_出海版 | 出海业务使用(海外区域) |
aigcCheck | AIGC图片风险 | 识别AI生成内容 |
aigcCheck_cb | AIGC图片风险检测_出海版 | 出海业务使用(海外区域) |
profilePhotoCheck | 头像图片检测 | 用户头像审核 |
postImageCheck | 帖子评论图片检测 | 社交媒体帖子图片 |
advertisingCheck | 营销素材检测 | 营销内容审核 |
liveStreamCheck | 视频/直播截图检测 | 直播画面审核 |
riskDetection | 恶意图片检测 | 风险内容识别 |
riskDetection_cb | 恶意图片检测_出海版 | 出海业务使用(海外区域) |
快速入门
TIP本节提供了三种调用API的方式,您可以根据自己的情况选择:
- 如果您是新手,建议先使用 cURL 快速测试,了解API的工作原理
- 如果您熟悉 JavaScript,可以选择 Node.js 方式
- 如果您是 Python 用户,可以选择 Python 方式
无论选择哪种方式,都需要先完成前置准备工作。
现在让我们开始实际调用API!本节提供了三种方式,您可以根据自己的情况选择:
🚀 方式一:使用 cURL 快速测试(推荐新手)
cURL是最简单的方式,不需要写任何代码,直接在命令行中输入命令即可。
适用场景:
- ✅ 快速验证API是否可用
- ✅ 测试参数是否正确
- ✅ 了解API的响应格式
如何使用:
- 打开命令行工具(Windows按
Win+R输入cmd,Mac按Cmd+Space输入终端) - 复制以下命令(记得替换成您自己的信息)
- 粘贴到命令行并回车
# 发送POST请求到图片审核APIcurl -X POST https://api.mizhoubaobei.top/aliyun/image-moderation \ -H "Content-Type: application/json" \ # 告诉服务器我们发送的是JSON格式数据 -d '{ "service": "baselineCheck", # 服务类型:通用基线检测 "accessKeyId": "YOUR_ACCESS_KEY_ID", # 替换成您的AccessKey ID "accessKeySecret": "YOUR_ACCESS_KEY_SECRET", # 替换成您的AccessKey Secret "endpoint": "https://green-cip.cn-shanghai.aliyuncs.com", # 服务端点 "imageUrl": "https://example.com/image.jpg" # 要审核的图片URL(必须公网可访问) }'预期结果:您会看到一个JSON格式的响应,包含审核结果。
💡 提示:如果您没有可用的图片URL,可以使用一些公开的图片URL进行测试,但请确保图片内容合规。
💻 方式二:使用 Node.js(适合Web开发)
如果您熟悉JavaScript或Node.js,可以使用以下代码。
前提条件:
- 已安装Node.js(建议版本 >= 14)
- 了解基础的JavaScript语法
// 引入Node.js的HTTPS模块(用于发送HTTPS请求)const https = require('https');
// 定义图片审核函数async function checkImage(imageUrl) { // 1. 准备要发送的数据 const data = JSON.stringify({ service: 'baselineCheck', // 服务类型:通用基线检测 accessKeyId: 'YOUR_ACCESS_KEY_ID', // 替换成您的AccessKey ID accessKeySecret: 'YOUR_ACCESS_KEY_SECRET', // 替换成您的AccessKey Secret endpoint: 'https://green-cip.cn-shanghai.aliyuncs.com', // 服务端点 imageUrl: imageUrl // 要审核的图片URL });
// 2. 配置请求参数 const options = { hostname: 'api.mizhoubaobei.top', // 服务器地址 port: 443, // HTTPS默认端口 path: '/aliyun/image-moderation', // API路径 method: 'POST', // 请求方法:POST headers: { 'Content-Type': 'application/json', // 内容类型:JSON 'Content-Length': data.length // 数据长度 } };
// 3. 发送请求 return new Promise((resolve, reject) => { const req = https.request(options, (res) => { let body = '';
// 接收数据 res.on('data', (chunk) => body += chunk);
// 数据接收完成 res.on('end', () => { try { const result = JSON.parse(body); // 解析JSON响应 resolve(result); // 返回结果 } catch (error) { reject(error); // 解析失败,返回错误 } }); });
// 处理请求错误 req.on('error', reject);
// 发送数据 req.write(data); req.end(); });}
// 使用示例:审核一张图片checkImage('https://example.com/image.jpg') .then(result => { console.log('审核结果:', JSON.stringify(result, null, 2)); // 打印结果 }) .catch(error => { console.error('调用失败:', error); // 打印错误信息 });如何运行:
- 将代码保存为
check-image.js - 修改其中的
YOUR_ACCESS_KEY_ID和YOUR_ACCESS_KEY_SECRET - 在命令行中运行:
node check-image.js
🐍 方式三:使用 Python(推荐新手)
Python语法简单易懂,非常适合初学者。
前提条件:
- 已安装Python(建议版本 >= 3.6)
- 需要安装
requests库(安装命令:pip install requests)
import requests
def check_image(image_url): """ 审核图片函数
参数: image_url (str): 要审核的图片URL
返回: dict: 审核结果 """ # 1. 定义API地址和请求头 url = 'https://api.mizhoubaobei.top/aliyun/image-moderation' headers = {'Content-Type': 'application/json'}
# 2. 准备请求数据 data = { 'service': 'baselineCheck', # 服务类型:通用基线检测 'accessKeyId': 'YOUR_ACCESS_KEY_ID', # 替换成您的AccessKey ID 'accessKeySecret': 'YOUR_ACCESS_KEY_SECRET', # 替换成您的AccessKey Secret 'endpoint': 'https://green-cip.cn-shanghai.aliyuncs.com', # 服务端点 'imageUrl': image_url # 要审核的图片URL }
# 3. 发送POST请求 response = requests.post(url, headers=headers, json=data)
# 4. 返回JSON格式的结果 return response.json()
# 使用示例:审核一张图片if __name__ == '__main__': result = check_image('https://example.com/image.jpg') print('审核结果:', result)如何运行:
- 将代码保存为
check_image.py - 修改其中的
YOUR_ACCESS_KEY_ID和YOUR_ACCESS_KEY_SECRET - 在命令行中运行:
python check_image.py
💡 提示:如果提示找不到
requests模块,请先运行pip install requests安装。
📝 参数说明
无论使用哪种方式,都需要准备以下参数:
| 参数 | 说明 | 示例 |
|---|---|---|
| service | 服务类型 | baselineCheck(通用基线检测) |
| accessKeyId | 您的AccessKey ID | LTAI5t... |
| accessKeySecret | 您的AccessKey Secret | xxx... |
| endpoint | 服务端点地址 | https://green-cip.cn-shanghai.aliyuncs.com |
| imageUrl | 要审核的图片URL | https://example.com/image.jpg |
⚠️ 重要:
imageUrl必须是公网可访问的URL- 不要使用本地文件路径(如
C:\image.jpg)- 图片URL中不能包含中文
✅ 测试成功标志
如果一切正常,您会收到类似以下的响应:
{ "Msg": "OK", "Code": 200, "Data": { "Result": [ { "Label": "nonLabel", "Description": "未检测出风险" } ], "RiskLevel": "none" }}关键信息:
Code: 200表示请求成功RiskLevel: none表示图片安全,未检测到风险
如果看到这个结果,恭喜您!您已经成功调用图片审核API了!🎉
详细参数说明
WARNING正确设置参数是成功调用API的关键。请务必仔细阅读参数说明,特别是必填参数和服务类型的选择。错误的参数可能导致请求失败或产生意外的费用。
请求参数
必填参数
| 参数 | 类型 | 说明 |
|---|---|---|
| service | String | 服务类型,见下文服务类型说明 |
| accessKeyId | String | 阿里云 AccessKey ID |
| accessKeySecret | String | 阿里云 AccessKey Secret |
| endpoint | String | 阿里云服务端点,如 https://green-cip.cn-shanghai.aliyuncs.com |
| imageUrl | String | 待检测图片的URL,必须公网可访问 |
可选参数
| 参数 | 类型 | 说明 |
|---|---|---|
| dataId | String | 检测对象对应的数据ID。由大小写英文字母、数字、下划线(_)、短划线(-)、英文句号(.)组成,不超过64个字符,可以用于唯一标识您的业务数据 |
| referer | String | referer请求头,用于防盗链等场景。长度不超过256个字符 |
| infoType | String | 需要获取的辅助信息内容,取值:customImage(自定义图库命中信息)、textInImage(图片中文字信息)、publicFigure(命中人物信息)、logoData(标识标志信息)。支持指定多个内容,以英文逗号分隔。例如,customImage,textInImage表示同时返回自定义图库和图片中文字信息 |
服务类型说明
| 服务类型 | 说明 | 使用场景 |
|---|---|---|
baselineCheck | 通用基线检测 | 通用图片内容审核 |
baselineCheck_pro | 通用基线检测_专业版 | 需要更高精度的场景 |
baselineCheck_cb | 通用基线检测_出海版 | 出海业务使用(海外区域) |
tonalityImprove | 内容治理检测 | 内容治理和审核 |
tonalityImprove_cb | 内容治理检测_出海版 | 出海业务使用(海外区域) |
aigcCheck | AIGC图片风险 | 识别AI生成内容 |
aigcCheck_cb | AIGC图片风险检测_出海版 | 出海业务使用(海外区域) |
profilePhotoCheck | 头像图片检测 | 用户头像审核 |
postImageCheck | 帖子评论图片检测 | 社交媒体帖子图片 |
advertisingCheck | 营销素材检测 | 营销内容审核 |
liveStreamCheck | 视频/直播截图检测 | 直播画面审核 |
riskDetection | 恶意图片检测 | 风险内容识别 |
riskDetection_cb | 恶意图片检测_出海版 | 出海业务使用(海外区域) |
说明:
- 不同服务针对不同的业务场景,请根据实际需求选择
- 出海版(带
_cb后缀)只能在海外区域使用 - AIGC专用服务用于识别AI生成内容
- 如果希望同时调用多个服务,请使用多Service同步检测API
图片要求
支持的格式
PNG、JPG、JPEG、BMP、WEBP、TIFF、SVG、HEIF(该格式最长边需小于8192 px)、GIF(取第一帧)、ICO(取最后一图)
大小限制
- 图片大小限制在20 MB以内
- 高或者宽不能超过16,384 px
- 总像素不能超过1.67亿 px
- 像素建议大于200*200(px),像素过低会影响内容安全检测算法的效果
下载限制
- 图片下载时间限制为3秒内,如果下载时间超过3秒,返回下载超时
- URL必须公网可访问
- URL长度不超过2048个字符
- URL中不能包含中文
说明:
- 确保图片URL稳定可访问,避免因网络问题导致审核失败
- 若URL下载超时,请检查图片URL是否可访问
响应结果解析
TIP正确理解API响应是使用图片审核服务的关键。响应中包含了审核结果、风险等级和辅助信息。建议您根据业务需求,合理处理不同风险等级的响应,例如:拒绝高风险内容、人工审核中风险内容、自动通过低风险内容。
调用API后,您会收到一个JSON格式的响应。本节将教您如何理解这个响应。
📊 响应结构概览
API的响应包含三层结构:
✅ 场景一:图片安全,未检测到风险
这是最常见的情况,表示图片内容正常,可以放心使用。
{ "Msg": "OK", "Code": 200, "Data": { "DataId": "img123****", "Result": [ { "Label": "nonLabel", "Description": "未检测出风险" } ], "RiskLevel": "none" }, "RequestId": "ABCD1234-1234-1234-1234-1234XYZ"}字段说明:
Msg: 响应消息,OK表示成功Code: 状态码,200表示成功DataId: 数据ID(您传入的dataId)Label: 标签,nonLabel表示未检测到风险Description: 描述,说明图片安全RiskLevel: 风险等级,none表示无风险RequestId: 请求ID,用于排查问题
如何处理:
- ✅ 图片安全,可以直接使用
- ✅ 可以通过审核,展示给用户
⚠️ 场景二:检测到风险内容
当图片包含违规内容时,会返回相应的风险标签。
{ "Msg": "OK", "Code": 200, "Data": { "DataId": "img123****", "Result": [ { "Label": "pornographic_adultContent", "Confidence": 81, "Description": "成人色情" } ], "RiskLevel": "high" }, "RequestId": "ABCD1234-1234-1234-1234-1234XYZ"}字段说明:
Label: 标签,pornographic_adultContent表示成人色情Confidence: 置信度,81分(满分100)Description: 描述,标签的中文含义RiskLevel: 风险等级,high表示高风险
如何处理:
- ❌ 图片包含违规内容,建议直接拦截
- ❌ 不要展示给用户
- 📝 可以记录违规信息,用于后续分析
📋 响应字段详解
1. 顶层字段(最外层)
| 字段 | 类型 | 说明 | 示例 |
|---|---|---|---|
| RequestId | String | 请求的唯一标识,用于排查问题 | ABCD1234-1234-1234-1234-1234XYZ |
| Data | Object | 包含审核结果的核心数据 | 见下方说明 |
| Code | Integer | 状态码,200表示成功 | 200 |
| Msg | String | 响应消息,描述请求状态 | OK |
重要提示:
- 📌 只有
Code: 200才表示请求成功 - 📌 如果
Code不是200,请查看”错误码说明”章节
2. Data 字段(审核结果)
这是最重要的部分,包含了图片审核的详细信息。
| 字段 | 类型 | 说明 | 示例 |
|---|---|---|---|
| RiskLevel | String | 图片的整体风险等级 | high、medium、low、none |
| Result | Array | 检测到的风险标签列表 | 见下方说明 |
| DataId | String | 您传入的数据ID | img123**** |
| Ext | Object | 辅助信息(如文字识别结果) | 可选字段,见下方详细说明 |
3. Ext 字段(辅助信息)
Ext字段包含图片的辅助参考信息,如自定义图库命中信息、图片中文字信息、人物信息、Logo信息等。这些信息可以帮助您更深入地了解图片内容。
Ext 字段结构:
| 字段 | 类型 | 说明 |
|---|---|---|
| CustomImage | JSONArray | 如果命中自定义图库,返回命中的自定义图库信息 |
| TextInImage | Object | 返回命中的图片中文字信息(OCR识别结果) |
| PublicFigure | JSONArray | 图片中包含特定人物时,返回识别出来的人物信息 |
| LogoData | JSONArray | 返回命中的标识标志信息 |
3.1 CustomImage(自定义图库信息)
当图片命中您配置的自定义图库时,会返回此信息。
| 字段 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| LibId | String | lib0001 | 命中的自定义图库ID |
| LibName | String | 自定义图库A | 命中的自定义图库名 |
| ImageId | String | 20240307 | 命中的自定义图片ID |
3.2 TextInImage(图片中文字信息)
返回图片中文字的OCR识别结果,包括识别到的文字、风险词、自定义词库命中信息等。
| 字段 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| OcrResult | JSONArray | - | 返回识别到的图片中的每行文字信息 |
| RiskWord | StringArray | ["风险词1", "风险词2"] | 命中文本中的风险片段 |
| CustomText | JSONArray | - | 如果命中自定义词库,返回命中的自定义词库信息 |
OcrResult 字段说明:
| 字段 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| Text | String | 识别到的文字行1 | 返回识别到的图片中的文字行内容 |
CustomText 字段说明:
| 字段 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| LibId | String | test20240307 | 命中的自定义词库ID |
| LibName | String | 自定义词库A | 命中的自定义词库名 |
| KeyWords | String | 关键词1 | 命中的自定义关键词 |
3.3 PublicFigure(人物信息)
当图片中包含特定人物时,返回识别出来的人物信息。
| 字段 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| FigureName | String | 张三 | 识别出的人物信息 |
| FigureId | String | xxx001 | 识别出的人物编码。特定人物会返回编码,其他人物返回人物信息。建议先取人物信息,人物信息为空再取人物编码 |
| Location | JSONArray | - | 人物的位置信息。更多信息,请参见Location |
3.4 LogoData(标识标志信息)
返回命中的标识标志信息及其位置。
| 字段 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| Logo | JSONArray | - | 标识信息 |
| Location | Object | - | 标识的位置信息 |
Logo 字段说明:
| 字段 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| Name | String | 钉钉 | 标识名 |
| Label | String | logo_sns | 命中标签 |
| Confidence | Float | 88.18 | 置信度 |
3.5 Location(位置信息)
用于描述图片中特定区域的位置信息(如人物、Logo的位置)。
| 字段 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| X | Float | 41 | 以图片左上角为坐标原点,区域左上角到y轴的距离,单位:像素 |
| Y | Float | 84 | 以图片左上角为坐标原点,区域左上角到x轴的距离,单位:像素 |
| W | Float | 83 | 区域的宽度,单位:像素 |
| H | Float | 26 | 区域的高度,单位:像素 |
Ext 字段示例:
{ "Ext": { "TextInImage": { "OcrResult": [ { "Text": "识别到的文字行1" }, { "Text": "识别到的文字行2" } ], "RiskWord": ["风险词1", "风险词2"] }, "LogoData": [ { "Location": { "H": 44, "W": 100, "X": 45, "Y": 30 }, "Logo": [ { "Confidence": 96.15, "Label": "pt_logotoSocialNetwork", "Name": "CCTV" } ] } ] }}💡 提示:Ext字段是可选的,只有在请求参数中指定了
infoType或命中了相关内容时才会返回。如需获取文字识别结果,可以在请求时设置infoType: "textInImage"。
4. RiskLevel 字段(风险等级)
| 等级 | 含义 | 建议处理方式 | 示例场景 |
|---|---|---|---|
| high | 高风险 | 🚫 直接拦截,不展示给用户 | 色情、暴力、政治敏感内容 |
| medium | 中风险 | 👀 转人工审核 | 可能违规但不确定的内容 |
| low | 低风险 | ⚠️ 可通过,但需注意 | 轻微违规或边缘内容 |
| none | 无风险 | ✅ 通过审核,正常使用 | 内容安全的图片 |
处理建议:
// 伪代码示例if (riskLevel === 'high') { // 高风险:直接拦截 blockImage();} else if (riskLevel === 'medium') { // 中风险:转人工审核 sendToManualReview();} else { // low或none:通过审核 approveImage();}4. Result 字段(风险标签)
这是一个数组,可能包含多个标签。
| 字段 | 类型 | 说明 | 示例 |
|---|---|---|---|
| Label | String | 风险标签的标识符 | pornographic_adultContent |
| Confidence | Float | 置信度(0-100分) | 81.5 |
| Description | String | 标签的中文描述 | 成人色情 |
置信度说明:
- 📊 90-100分:非常确定,几乎可以肯定是这个类型
- 📊 70-90分:比较确定,有较大可能是这个类型
- 📊 50-70分:有一定把握,但不够确定
- 📊 50分以下:不太确定,建议人工审核
示例:
{ "Result": [ { "Label": "pornographic_adultContent", "Confidence": 95.5, "Description": "成人色情" }, { "Label": "sexual_partialNudity", "Confidence": 88.2, "Description": "肢体裸露或性感" } ]}这个例子中,图片同时被检测到两个标签:
- 成人色情(95.5分,非常确定)
- 肢体裸露(88.2分,比较确定)
📚 如何使用这些信息?
🔄 响应处理决策流程
步骤1:检查请求是否成功
if (response.Code !== 200) { console.error('请求失败:', response.Msg); return;}步骤2:获取风险等级
const riskLevel = response.Data.RiskLevel;console.log('风险等级:', riskLevel);步骤3:查看检测到的标签
response.Data.Result.forEach(item => { console.log(`标签: ${item.Label}`); console.log(`置信度: ${item.Confidence}%`); console.log(`描述: ${item.Description}`);});步骤4:根据结果采取行动
switch (riskLevel) { case 'high': console.log('高风险,拦截图片'); blockImage(); break; case 'medium': console.log('中风险,转人工审核'); sendToManualReview(); break; case 'low': case 'none': console.log('低风险或无风险,通过审核'); approveImage(); break;}🔍 常见标签类型
API支持60+种风险标签,主要分为以下几类:
| 类别 | 典型标签 | 说明 |
|---|---|---|
| 🚫 色情类 | pornographic_adultContent | 成人色情内容 |
| 🔫 暴力类 | violent_explosion | 爆炸、枪支、刀具等 |
| 🏛️ 政治类 | political_politicalFigure | 政治人物、国旗等 |
| 💊 违禁类 | contraband_drug | 毒品、赌博等 |
| 🤖 AIGC类 | aigcCheck | AI生成的内容 |
| 📺 广告类 | advertisingCheck | 违法广告内容 |
📚 详细标签说明: 如需了解所有60+种标签的详细含义、命名规则和使用建议,请查看 风险标签释义表。
💡 实用技巧
技巧1:保存请求ID
每次请求都会返回 RequestId,建议保存它。如果遇到问题,可以通过这个ID向阿里云客服求助。
console.log('请求ID:', response.RequestId);// 保存到日志或数据库logRequestId(response.RequestId);技巧2:处理多个标签
一张图片可能被检测到多个标签,建议按照置信度排序,优先处理置信度最高的。
// 按置信度降序排序const sortedResults = response.Data.Result.sort((a, b) => { return b.Confidence - a.Confidence;});
console.log('最可能的违规类型:', sortedResults[0].Label);技巧3:记录审核结果
建议将审核结果保存到数据库,用于后续分析和统计。
const auditRecord = { imageUrl: 'https://example.com/image.jpg', riskLevel: response.Data.RiskLevel, labels: response.Data.Result.map(r => r.Label), auditTime: new Date(), requestId: response.RequestId};
// 保存到数据库saveToDatabase(auditRecord);错误码说明
WARNING错误码是API调用失败时的重要信息。当收到非200的状态码时,请根据错误码表查找原因并采取相应措施。特别注意:只有Code为200的请求才会计费,其他错误码不会产生费用。如果遇到系统异常(500),请稍后重试或联系客服。
| Code | 说明 | 处理建议 |
|---|---|---|
| 200 | 请求正常 | - |
| 400 | 请求参数为空 | 检查请求参数是否完整 |
| 401 | 请求参数错误 | 检查参数格式是否正确 |
| 402 | 请求参数长度不符合接口规定 | 检查并修改参数长度 |
| 403 | 请求超过QPS限制 | 检查并调整并发,或联系客服提升配额 |
| 404 | 传入的图片下载遇到错误或超时 | 检查图片URL是否可访问,或重试 |
| 405 | 传入的图片下载超时 | 检查图片URL是否可访问,或重试 |
| 406 | 传入的图片过大 | 检查调整图片大小后再重试 |
| 407 | 传入的图片格式暂不支持 | 检查调整图片格式后重试 |
| 408 | 该账号无权限调用该接口 | 检查账号是否开通服务或已欠费 |
| 500 | 系统异常 | 稍后重试或联系客服 |
💡 提示: 系统仅对code返回为200的请求计量计费,其他code不会计费。
常见问题
Q1: AccessKey 如何获取?
A:
- 登录 阿里云控制台
- 点击”创建 AccessKey”
- 验证身份后,系统会显示 AccessKey ID 和 AccessKey Secret
- 重要: AccessKey Secret 只显示一次,请立即保存
Q2: 如何选择合适的服务类型?
A:
- 通用场景: 使用
baselineCheck - 需要更高精度: 使用
baselineCheck_pro - 检测AI生成内容: 使用
aigcCheck - 用户头像审核: 使用
profilePhotoCheck - 社交媒体内容: 使用
postImageCheck - 广告内容: 使用
advertisingCheck - 直播截图: 使用
liveStreamCheck - 出海业务: 使用带
_cb后缀的服务类型
Q3: 超过QPS限制怎么办?
A:
- 单用户QPS限制为100次/秒
- 如果业务量较大,可以:
- 使用队列进行批量处理
- 联系阿里云商务经理申请更高的QPS
- 使用多个AccessKey分散请求
Q4: 如何降低成本?
A:
- 购买资源包: 相比按量付费更优惠
- 优化调用策略:
- 对已审核的图片进行缓存
- 对相同内容的图片进行去重
- 合理设置审核频率
相关资源
- 🔗 阿里云内容安全API文档
- 🎛️ 阿里云内容安全控制台
- 🔐 RAM权限管理
文档版本: 1.0.0
最后更新: 2026-01-10
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
MZ-Blog
提供网站内容分发