图片审核

本文介绍了如何使用PHP SDK图片审核接口,检测图片中是否包含风险内容。

功能描述

图片审核支持同步检测和异步检测两种方式。

  • 同步检测实时返回检测结果。关于参数的详细信息,请参见同步检测

  • 异步检测需要您轮询结果或者通过callback回调通知获取检测结果。关于参数的详细信息,请参见异步检测

前提条件

已安装PHP依赖。关于安装PHP依赖的具体操作,请参见安装PHP依赖

说明

请一定按照安装PHP依赖页面中的版本安装,否则会导致调用失败。

(推荐)图片同步检测

接口

描述

支持的地域

ImageSyncScanRequest

提交图片同步检测任务,对图片进行多个风险场景的识别,包括色情、暴恐涉政、广告、二维码、不良场景、Logo(商标台标)识别。

  • cn-shanghai:华东2(上海)

  • cn-beijing:华北2(北京)

  • cn-shenzhen:华南1(深圳)

  • ap-southeast-1:新加坡

示例代码

<?php

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Green\Green;

try {
    /**
     * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
     * 常见获取环境变量方式:
     * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
     * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
     */
    AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret')
        ->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置。
        ->connectTimeout(3) // 连接超时3秒,当小于1秒时,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置。
        ->regionId('cn-shanghai')
        ->asDefaultClient();

    $task1 = array('dataId' => '业务数据ID',
        'url' => '待检测图片链接地址'
    );

    /* 设置待检测的图片,一张图片对应一个检测任务。
     * 多张图片同时检测时,处理时间由最后一张处理完的图片决定。
     * 通常情况下批量检测的平均响应时间比单张检测要长。一次批量提交的图片数越多,响应时间被拉长的概率越高。
     * 代码中以单张图片检测作为示例,如果需要批量检测多张图片,请自行构建多个检测任务。
     * OCR检测按照实际检测的图片张数*检测的卡证类型单价计费。
     */
    $response = Green::v20180509()->imageSyncScan()
        ->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效。
        ->connectTimeout(3) // 连接超时3秒,当小于1秒时,则自动转换为毫秒,request超时设置,仅对当前请求有效。
        ->body(json_encode(array('tasks' => array($task1), 'scenes' => array('porn'), 'bizType' => '业务场景')))
        ->request();
    print_r($response->toArray());
    if (200 == $response->code) {
        $taskResults = $response->data;
        foreach ($taskResults as $taskResult) {
            if (200 == $taskResult->code) {
                $sceneResults = $taskResult->results;
                foreach ($sceneResults as $sceneResult) {
                    $scene = $sceneResult->scene;
                    $suggestion = $sceneResult->suggestion;
                    // 根据scene和suggestion做相关的处理。
                    print_r($scene);
                    print_r($suggestion);
                }
            } else {
                print_r("task process fail:" . $response->code);
            }
        }
    } else {
        print_r("detect not success. code:" . $response->code);
    }
} catch (Exception $exception) {
    echo $exception->getMessage() . PHP_EOL;
}

提交图片异步检测任务

使用PHP SDK对图片进行风险检测,通过异步请求提交检测任务,结果可以通过提交请求时设置callback回调获取,也可以通过接口轮询获取。

接口

描述

支持的地域

ImageAsyncScanRequest

提交图片异步检测任务,对图片进行多个风险场景的识别,包括色情、暴恐涉政、广告、二维码、不良场景、Logo(商标台标)识别。

  • cn-shanghai:华东2(上海)

  • cn-beijing:华北2(北京)

  • cn-shenzhen:华南1(深圳)

  • ap-southeast-1:新加坡

示例代码

<?php

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Green\Green;

try {
     /**
     * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
     * 常见获取环境变量方式:
     * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
     * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
     */
    AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret')
        ->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置。
        ->connectTimeout(3) // 连接超时3秒,当小于1秒时,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置。
        ->regionId('cn-shanghai')
        ->asDefaultClient();

    $task1 = array('dataId' => '业务数据ID',
        'url' => '待检测图片链接地址'
    );

    // 示例:porn(色情)、terrorism(暴恐)。
    $result = Green::v20180509()->imageAsyncScan()
        ->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效。
        ->connectTimeout(3) // 连接超时3秒,当小于1秒时,则自动转换为毫秒,request超时设置,仅对当前请求有效。
        ->body(json_encode(array("tasks" => array($task1), "scenes" => array("porn", "terrorism"), "bizType" => "业务场景")))
        ->request();
    print_r($result->toArray());
} catch (ClientException $exception) {
    echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
    echo $exception->getMessage() . PHP_EOL;
    echo $exception->getErrorCode() . PHP_EOL;
    echo $exception->getRequestId() . PHP_EOL;
    echo $exception->getErrorMessage() . PHP_EOL;
}

查询异步检测结果

接口

描述

支持的地域

ImageAsyncScanResultsRequest

查询图片异步检测任务的结果。支持同时查询多个检测任务的返回结果。

  • cn-shanghai:华东2(上海)

  • cn-beijing:华北2(北京)

  • cn-shenzhen:华南1(深圳)

  • ap-southeast-1:新加坡

示例代码

<?php

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Green\Green;

try {
     /**
     * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
     * 常见获取环境变量方式:
     * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
     * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
     */
    AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret')
        ->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置。
        ->connectTimeout(3) // 连接超时3秒,当小于1秒时,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置。
        ->regionId('cn-shanghai')
        ->asDefaultClient();

    $result = Green::v20180509()->imageAsyncScanResults()
        ->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效。
        ->connectTimeout(3) // 连接超时3秒,当小于1秒时,则自动转换为毫秒,request超时设置,仅对当前请求有效。
        ->body(json_encode(array('图片异步检测任务ID')))
        ->request();
    print_r($result->toArray());

} catch (ClientException $exception) {
    echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
    echo $exception->getMessage() . PHP_EOL;
    echo $exception->getErrorCode() . PHP_EOL;
    echo $exception->getRequestId() . PHP_EOL;
    echo $exception->getErrorMessage() . PHP_EOL;
}

图片检测结果反馈

如果您认为图片检测结果与您的预期不符,可以通过图片检测结果反馈接口,对检测结果进行纠正(系统会根据您反馈的结果,将图片添加到相似图片的黑名单库或者白名单库)。当您再次提交相似的内容进行检测时,以您反馈的label返回结果。

关于接口的说明,请参见检测结果反馈

接口

描述

支持的Region

ImageScanFeedbackRequest

提交图片检测结果的反馈,以人工反馈的检测结果纠正算法检测结果。

  • cn-shanghai:华东2(上海)

  • cn-beijing:华北2(北京)

  • cn-shenzhen:华南1(深圳)

  • ap-southeast-1:新加坡

示例代码

<?php

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Green\Green;

try {
     /**
     * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
     * 常见获取环境变量方式:
     * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
     * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
     */
    AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret')
        ->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置。
        ->connectTimeout(3) // 连接超时3秒,当小于1秒时,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置。
        ->regionId('cn-shanghai')
        ->asDefaultClient();

    // 示例:porn(色情)、terrorism(暴恐)。
    $result = Green::v20180509()->imageScanFeedback()
        ->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效。
        ->connectTimeout(3) // 连接超时3秒,当小于1秒时,则自动转换为毫秒,request超时设置,仅对当前请求有效。
        ->body(json_encode(array("suggestion" => "block", "scenes" => array("porn", "terrorism"), "url" => "待检测图片链接地址")))
        ->request();
    print_r($result->toArray());
} catch (ClientException $exception) {
    echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
    echo $exception->getMessage() . PHP_EOL;
    echo $exception->getErrorCode() . PHP_EOL;
    echo $exception->getRequestId() . PHP_EOL;
    echo $exception->getErrorMessage() . PHP_EOL;
}