HappyHorse 1.0 正式上线立即体验
图片审核 API 指南:如何过滤用户上传的不安全图片
guide

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

EvoLink Team
EvoLink Team
Product Team
2026年4月29日
16 分钟阅读
图片审核 API 能在不安全或违规的视觉内容触达用户之前将其检出。对于允许用户上传图片的应用来说,这通常意味着要对头像、论坛帖子、电商商品图、聊天附件或 AI 生成图片进行审核,识别色情、暴力、自残、血腥内容或其他违规行为。

难点不在于调用 API 本身,而在于围绕 API 设计整套上传工作流。

本指南将介绍图片审核在产品链路中的位置、图片 API 能检测和不能检测的内容,以及如何使用 EvoLink Moderation 1.0 搭建一套可落地的放行 / 人审 / 拦截工作流。

摘要

  • 当公开或半公开用户可以上传头像、帖子、商品图、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 遵循相同的基本流程:

  1. 你提供一个图片 URL、上传文件、存储对象或图片字节流。
  2. API 使用一个或多个审核模型分析图片。
  3. 响应返回类别标签、置信度分数或布尔标记。
  4. 你的应用根据结果决定放行、人审还是拦截。
例如,Amazon Rekognition 的 DetectModerationLabels API 返回带有置信度分数和层级分类体系的审核标签。Sightengine 的图片审核 API 针对所选模型返回详细的审核分数。OpenAI 的 Moderation 端点为文本和图片返回类别标记与分数,其中图片支持因类别而异。

资料来源:

推荐的上传架构

对于大多数公开应用,最安全的模式是:

user upload
  -> temporary storage
  -> image moderation API
  -> allow / review / block
  -> permanent storage only if allowed or review-approved

这样可以确保不安全的图片在审核完成前不会对外可见。

模式一:上传前客户端预警

客户端检查可以快速给出用户反馈,但不应作为唯一的拦截手段。

客户端检查适用于:

  • 即时用户反馈
  • 在上传前拦截明显违规
  • 在低风险场景中节省带宽

但务必在服务端执行策略,因为客户端检查可以被绕过。

模式二:上传后、发布前审核

这是生产环境的默认模式。

  1. 将图片上传到临时私有存储。
  2. 将图片 URL 发送给审核 API。
  3. 低风险:迁移到正式存储。
  4. 中风险:排入人审队列。
  5. 高风险:拒绝并删除临时文件。

模式三:异步审核

对于可信社区或高并发场景,可以先存储再在后台审核。如果这样做,请在审核通过前将图片保持为私有状态,或仅对上传者本人可见。

  • 纯文本审核
  • 纯图片审核
  • 图文混合审核(单张图片)
接口兼容 OpenAI /v1/moderations 端点,返回标准审核字段以及 evolink_summary
evolink_summary 专为产品决策设计,包含以下字段:
  • risk_level
  • flagged
  • violations
  • max_score
  • max_category
完整的请求示例和限制说明,请参阅 EvoLink Moderation API 文档

纯图片示例

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 1.0 通过兼容 OpenAI 的审核端点,支持纯图片请求和图文混合请求。

不可以。EvoLink Moderation 每次请求支持一张图片。如需审核多张图片,请发送并发请求或使用队列。

应该在上传前还是上传后审核图片?

先将图片上传到临时存储,在服务端完成审核,再将通过的图片迁移到正式存储。这样可以确保不安全图片在审核完成前不会对外可见。

图片审核对电商来说够用吗?

通常单靠图片审核是不够的。电商平台往往还需要安全检查之外的质量规则、违禁品检查、OCR、水印检测以及人工审核。

相关审核指南

Explore EvoLink Moderation 1.0

准备好把 AI 成本降低 89% 吗?

现在就开始使用 EvoLink,体验智能 API 路由的强大能力。