图片检测最佳实践方案

2025.12.26 14:25:26

    1. 检测效果优化实践

    1.1 背景

    内容安全检测技术在不断更新迭代,为了确保您的业务总能获得最新、最准确的检测结果,我们需要采用适合的接入方案。简单来说,由于算法和模型持续优化,同一批图片在不同时期的检测结果可能会有差异,我们希望通过最佳实践方案确保您始终获得最新的准确结果。

    1.2 同步检测方案(适合实时性要求高的场景)

    1.2.1 流程图示意

    image title

    1.2.2 接入流程

    1. 接入同步检测接口

      • 文档参考同步检测接口文档
      • 核心概念:同步检测是指您发送图片后,立即获得检测结果,适合需要实时反馈的场景(如用户上传图片时的即时审核)。
      • 操作建议
        • 调用检测接口获取即时结果,根据结果对图片进行初步处理(如允许发布或拒绝)。
        • 保存返回的taskId值,这是易盾给每张检测图片分配的唯一ID,后续用于关联回调结果。
    2. 接入主动回调接口

      • 文档参考回调接入文档
      • 核心概念: 主动回调是指易盾在后续优化检测结果后,主动将最新结果推送到您指定的服务器地址。
      • 为什么需要: 由于算法和模型的持续优化,有时会返回同步检测机审结果的补充结果,返回比首次机审结果严重程度更高的结果。
      • 操作方法: 在请求参数中设置callbackUrl(您的服务器接收回调的接口地址),用于接收最新准确结果的推送,便于二次业务处理。
      • 返回示例
        • 首次检测结果为"通过",后续优化分析发现实际应为"不通过"
        • 首次检测结果为"不通过-涉价值观",后续优化发现实际应为更严重的"不通过-涉政"
      • 操作建议
        • 解析回调结果,识别回调数据中的resultType=1的字段,这表示是机器审核结果。
        • 解析回调结果,识别回调中的taskid,匹配之前保存的记录,根据最新结果调整处理策略,做出适合的二次处理动作

    1.3 异步检测方案(适合批量处理或历史数据扫描)

    1.3.1 流程图示意

    image title

    1.2.2 接入流程

    1. 提交异步检测请求

      • 文档参考异步检测接口文档
      • 核心概念:异步检测是指您提交图片后,易盾立即返回任务taskId,模型检测在异步进行,检测完成后通过回调通知您检测结果。
      • 接入方式:调用图片异步检测接口,通过主动回调获取检测结果。
      • 适用场景:历史数据批量扫描、非实时性要求的场景。
      • 操作建议
        • 解析接口响应信息,需将响应信息中的taskid存储,该值是检测任务的唯一标识,便于主动回调时匹配查询。
    2. 接入主动回调

      • 文档参考回调接入文档
      • 接入方式强烈建议接入主动推送回调方式,即在请求参数中指定回调地址参数callbackUrl(客户侧用于接收回调的接口地址)
      • 操作建议
        • 当收到回调数据时,根据检测结果进行业务处理

    2. 系统稳定性保障实践

    2.1 背景

    由于线上请求接口所处的网络环境较为复杂,可能出现各种异常情况(如DNS劫持、网络攻击、运营商线路故障等),为确保内容安全检测服务不因这些异常而中断,需要采取多重保障措施。

    2.2 域名不可用、运营商链路异常

    2.2.1 超时报错处理

    • 超时时间建议
      • 最小超时时间建议设置为 3秒
      • 推荐超时时间设置为 5-10秒
      • 根据业务容忍度适当调整
    //Java SDK 使用示例
    ClientProfile clientProfile = AntispamRequester.createDefaultProfile("SecretId", "SecretKey");
    // 按照需求设置http请求的多个参数配置
    HttpClientConfig httpClientConfig = clientProfile.getHttpClientConfig();
    httpClientConfig.setSocketTimeoutMillis(60000);
    

    2.2.2 同步重试-域名切换

    • 目的:解决当前域名不可用或运营商链路故障问题
    • SDK接入方式
      • SDK内自带域名自动切换能力
      • 当检测到当前接口请求失败时,自动切换其他域名进行重试
      • 参考文档:熔断降级
    • API接入方式
      • 推荐使用 Sentinel、Hystrix 等熔断降级组件
      • 在请求失败时,降级到使用备用域名访问

    2.2.3 异步重试

    • 目的:建议走先发后审,解决同步重试也无法请求到接口的情况
    • SDK接入方式
      • SDK内置基于文件的异步重试能力
      • 同步重试仍不成功时,会写入文件进行异步重试
      • 参考文档:失败重试
    • API接入方式
      • 推荐接入消息队列(MQ)
      • 请求失败时推送到MQ中,通过异步消费进行重试

    2.3 图片下载优化建议

    2.3.1 背景

    • 图片检测耗时依赖于图片的下载耗时,若下载较慢引起下载超时导致检测失败;
    • 检测链路为:易盾下载服务发起下载请求 --> 资源服务 --> 资源服务返回图片内容 --> 易盾进行检测

    2.3.2 CDN使用建议

    • 推荐做法

      • 建议使用CDN加速图片下载,提升下载速度
      • 建议进行CDN预热,避免首次下载耗时较久导致超时
      • 建议压缩图片,不要使用过大图片,图片过大下载较慢
    • 避免做法

      • 不要使用CDN的预处理功能,首次处理耗时较久
      • 避免使用未经压缩的大图,大图对于检测有害而无利

    2.3.2 图片规格建议

    • 单张图片大小建议不超过 2MB
    • 分辨率建议控制在 1920×1080 以内
    • 推荐使用 WebP 或 JPEG 格式以优化下载速度

    2.4 回调地址安全建议

    2.4.1 安全防护

    • Referer校验:建议通过Referer白名单机制限制回调请求来源
    • IP白名单:配置可信IP地址段
    • 签名验证:对回调请求进行签名验证,确保请求合法性

    2.4.2 回调处理建议

    • 实现幂等性处理,避免重复处理同一回调
    • 设置合理的超时时间和重试机制
    • 记录完整的回调日志用于问题排查
    Online Chat Tel:95163223 Free trial