
图片审核 API 指南:如何过滤用户上传的不安全图片

难点不在于调用 API 本身,而在于围绕 API 设计整套上传工作流。
摘要
- 当公开或半公开用户可以上传头像、帖子、商品图、AI 生成图片或消息附件时,就需要图片审核。
- 在图片对外可见之前,在服务端完成审核。
- 先将图片存入临时存储,审核通过后再迁移到正式存储。
- 把自动审核视为第一道防线,而非最终裁决。
- 对模糊案例,叠加人工审核、用户举报和申诉机制。
- EvoLink Moderation 支持纯图片和图文混合请求,接口兼容 OpenAI
/v1/moderations端点。
图片审核与文本审核有何不同
文本审核和图片审核解决的是相关但不同的问题。
文本审核可以检查词语、短语和语言模式。图片审核则需要理解像素、物体、视觉上下文,有时还要识别图片中嵌入的文字。
这带来了几方面差异:
| 维度 | 文本审核 | 图片审核 |
|---|---|---|
| 输入大小 | 通常较小 | 往往大得多 |
| 上下文 | 语言与对话 | 视觉场景、物体、OCR、图注 |
| 常见误判 | 反讽、暗语、语境缺失 | 艺术作品、医学图片、泳装、梗图、裁剪、叠加 |
| 工作流影响 | 评论被拒或排队 | 上传的媒体文件可能需要临时存储 |
| 用户敏感度 | 用户通常可以重新措辞 | 拒绝头像或个人照片可能让用户更加敏感 |
因此,可靠的图片审核体系通常需要将 API 与产品规则、审核队列和用户举报结合使用。
常见图片审核场景
1. 头像与个人资料照片
头像在产品全局可见,也很容易被滥用。
审核检查通常关注:
- 色情或露骨图片
- 血腥暴力
- 自残图片
- 仇恨符号
- 威胁或恐吓性视觉内容
对于头像场景,误报(false positive)的影响尤其大。如果一张正常头像被误拒,用户体验会迅速恶化。推荐的做法是:仅自动拦截高风险图片,不确定的图片送人审,明确低风险的图片直接放行。
2. 论坛和社交媒体上传
论坛和社交平台经常图文并存。帖子配文可以改变图片的含义,图片也可以改变配文的含义。
在这类场景中,图文混合审核非常有用——应用可以在发布前同时评估提交内容的文本和图片。
3. 电商商品图
电商图片审核不仅仅是 NSFW 检测。商品平台可能还需要识别:
- 违禁物品
- 武器或毒品
- 水印
- 图片质量问题
- 误导性照片
- 违反政策的视觉声明
对于图片质量检查、OCR、水印检测或特定的电商规则,可以根据工作流选用 Sightengine、Amazon Rekognition 或 Azure AI Content Safety 等专业视觉审核服务。
4. AI 生成图片
AI 生成的图片同样可能违反内容政策。如果用户在应用内生成图片或上传 AI 生成的素材,需要同时审核:
- 提示词或配文
- 生成的图片
当输出内容公开展示、用于商业化或关联品牌安全场景时,这一点尤为重要。
5. 消息附件
私信或半私密消息让产品决策更加困难,因为审核会与用户的隐私预期产生冲突。有些产品在发送前扫描附件,有些只扫描被举报的内容,还有些将客户端警告与服务端拦截相结合。
具体采用哪种方案取决于产品形态、法律义务、隐私政策和用户预期。
图片审核 API 的工作原理
大多数图片审核 API 遵循相同的基本流程:
- 你提供一个图片 URL、上传文件、存储对象或图片字节流。
- API 使用一个或多个审核模型分析图片。
- 响应返回类别标签、置信度分数或布尔标记。
- 你的应用根据结果决定放行、人审还是拦截。
DetectModerationLabels API 返回带有置信度分数和层级分类体系的审核标签。Sightengine 的图片审核 API 针对所选模型返回详细的审核分数。OpenAI 的 Moderation 端点为文本和图片返回类别标记与分数,其中图片支持因类别而异。资料来源:
- OpenAI Moderation guide
- Amazon Rekognition DetectModerationLabels
- Sightengine image moderation principles
推荐的上传架构
对于大多数公开应用,最安全的模式是:
user upload
-> temporary storage
-> image moderation API
-> allow / review / block
-> permanent storage only if allowed or review-approved这样可以确保不安全的图片在审核完成前不会对外可见。
模式一:上传前客户端预警
客户端检查可以快速给出用户反馈,但不应作为唯一的拦截手段。
客户端检查适用于:
- 即时用户反馈
- 在上传前拦截明显违规
- 在低风险场景中节省带宽
但务必在服务端执行策略,因为客户端检查可以被绕过。
模式二:上传后、发布前审核
这是生产环境的默认模式。
- 将图片上传到临时私有存储。
- 将图片 URL 发送给审核 API。
- 低风险:迁移到正式存储。
- 中风险:排入人审队列。
- 高风险:拒绝并删除临时文件。
模式三:异步审核
对于可信社区或高并发场景,可以先存储再在后台审核。如果这样做,请在审核通过前将图片保持为私有状态,或仅对上传者本人可见。
使用 EvoLink Moderation 作为图片审核 API
- 纯文本审核
- 纯图片审核
- 图文混合审核(单张图片)
/v1/moderations 端点,返回标准审核字段以及 evolink_summary。evolink_summary 专为产品决策设计,包含以下字段:risk_levelflaggedviolationsmax_scoremax_category
纯图片示例
from openai import OpenAI
client = OpenAI(
api_key="YOUR_EVOLINK_API_KEY",
base_url="https://api.evolink.ai/v1"
)
response = client.moderations.create(
model="evolink-moderation-1.0",
input=[
{
"type": "image_url",
"image_url": {
"url": "https://example.com/user-upload.jpg"
}
}
]
)
risk = response.evolink_summary.risk_level
if risk == "high":
block_image()
elif risk == "medium":
send_to_review()
else:
approve_image()图文混合示例
response = client.moderations.create(
model="evolink-moderation-1.0",
input=[
{"type": "text", "text": "User caption or message"},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/user-upload.jpg"
}
}
]
)处理多张图片
EvoLink Moderation 每次请求支持一张图片。如果用户上传多张图片,可以发送并发请求或通过队列逐一处理。
def decide_album_status(results):
risk_order = {"low": 0, "medium": 1, "high": 2}
highest = max(results, key=lambda r: risk_order[r.evolink_summary.risk_level])
return highest.evolink_summary.risk_level在很多应用中,只要有一张高风险图片就应拦截整个提交,而中风险图片则将整个提交送入人审。
生产环境图片审核最佳实践
1. 在服务端审核
客户端检查可以提升用户体验,但最终决策必须在服务端完成。否则用户可以直接调用上传 API 绕过检查。
2. 使用临时存储
不要直接发布上传的图片。先私有存储,完成审核后再迁移到公开 Bucket 或 CDN。
3. 使用三级决策
避免简单的二元判断。三级工作流提供更大的灵活性:
- 低风险:放行
- 中风险:人审
- 高风险:拦截
4. 给出具体的用户反馈
笼统的拒绝消息会增加客服压力。在可能的情况下,用概括性语言说明拒绝类别:
- "该图片疑似包含色情内容。"
- "该图片疑似包含血腥暴力内容。"
- "该图片需要审核后才能发布。"
避免暴露精确阈值或模型弱点,以防用户借此规避审核。
5. 增加举报和申诉机制
没有模型是完美的。提供用户举报和申诉通道,让团队能够纠正误报、补充漏检。
6. 跟踪审核质量
建议监控以下指标:
- 拦截率
- 人审队列率
- 审核员改判率
- 申诉成功率
- 用户举报率
- 重复违规率
- 延迟和 API 错误率
这些数据帮助你调整阈值,并决定是否需要叠加更多审核层。
7. 用真实内容测试
使用来自自有应用的脱敏或合规样本。公开的基准测试结果很少能准确预测审核 API 在你的社区、电商或图片风格上的实际表现。
常见误区
误区一:认为一个 API 就能覆盖所有场景
图片审核 API 很有用,但它无法理解每一条产品政策。你可能仍需要自定义规则来处理电商品类、品牌安全、版权、水印或本地合规要求。
误区二:审核完成前就发布图片
即使不安全图片只短暂出现,用户也可能截图传播。在审核完成前,始终保持上传内容为私有。
误区三:拦截所有不确定的图片
阈值过严会造成大量误报。对于不确定的内容,应送入人审而非一律自动拒绝。
误区四:忽略图片周围的文本
配文可以改变图片的含义。如果产品允许配文,应将文本和图片一起审核。
误区五:忽视隐私和数据留存
图片可能包含人脸、证件、私人空间或未成年人。在上线前,务必审查供应商的数据处理、留存策略、部署地域和训练使用条款。
何时选择专业图片审核服务
EvoLink Moderation 非常适合在兼容 OpenAI 的 API 工作流中完成图文安全决策。
当你需要以下能力时,可以考虑 Sightengine、Amazon Rekognition 或 Azure AI Content Safety 等专业图片服务:
- 重 OCR 审核
- 水印检测
- 人脸检测
- 深度伪造检测
- 视频审核
- 直播审核
- 自定义视觉分类
- 与 AWS 或 Azure 的云原生集成
最优解可能是分层架构:用 EvoLink 做图文安全路由,再叠加专业视觉服务处理图片质量、OCR 或电商场景的特定检查。
FAQ
什么是图片审核 API?
图片审核 API 对图片进行分析,返回类别标签、置信度分数或风险等级等安全信号。应用根据这些信号决定放行、人审还是拦截上传的图片。
EvoLink Moderation 支持图片审核吗?
支持。EvoLink Moderation 1.0 通过兼容 OpenAI 的审核端点,支持纯图片请求和图文混合请求。
一次 EvoLink 请求可以审核多张图片吗?
不可以。EvoLink Moderation 每次请求支持一张图片。如需审核多张图片,请发送并发请求或使用队列。
应该在上传前还是上传后审核图片?
先将图片上传到临时存储,在服务端完成审核,再将通过的图片迁移到正式存储。这样可以确保不安全图片在审核完成前不会对外可见。
图片审核对电商来说够用吗?
通常单靠图片审核是不够的。电商平台往往还需要安全检查之外的质量规则、违禁品检查、OCR、水印检测以及人工审核。
相关审核指南
- Best Content Moderation APIs and Tools for Developers
- omni-moderation-latest Explained: OpenAI Moderation API Guide
- OpenAI Moderation API Pricing: Is It Free? Limits and Alternatives
- How to Add Content Moderation to Your Chatbot or AI Agent


