すべてのプロダクト
Search
ドキュメントセンター

Content Moderation:ドキュメントモデレーション拡張版 2.0 SDK と統合ガイド

最終更新日:Feb 20, 2025

ドキュメントモデレーション2.0 は、SDK ベースの呼び出しとネイティブ HTTPS 呼び出しの両方をサポートしています。署名検証と本文形式の構築手順を簡素化するために、SDK 統合をお勧めします。このガイドでは、ドキュメントモデレーション2.0 の統合方法について説明します。

ステップ 1:サービスのアクティブ化

Content Moderation 2.0 サービスを有効にする ページにアクセスして、ドキュメントモデレーション 2.0 サービスを有効にします。統合後は従量課金が適用されます。詳細については、「課金説明」をご参照ください。

ドキュメントモデレーション2.0 サービスをアクティブ化すると、デフォルトの課金方法は従量課金制になり、実際の使用量に基づいて日割りで課金されます。サービスを使用していない場合は、料金は発生しません。

ステップ 2:RAM ユーザーに権限を付与する

SDK または API を使用する前に、RAM ユーザーに必要な権限を付与します。Alibaba Cloud API を呼び出すときに認証を行うために、RAM ユーザーの AccessKey ペアを作成します。詳細については、「AccessKey を取得する」をご参照ください。

  1. RAM 管理者として RAM コンソール にログオンします。

  2. RAM ユーザーを作成します。

    詳細については、「RAM ユーザーを作成する」をご参照ください。

  3. RAM ユーザーに AliyunYundunGreenWebFullAccess システムポリシーを付与します。

    詳細については、「RAM ユーザーに権限を付与する」をご参照ください。

    上記の手順を完了すると、RAM ユーザーとして Content Moderation API を呼び出すことができます。

ステップ 3:ドキュメントモデレーションサービスをインストールして統合する

このサービスは、以下のリージョンでの統合をサポートしています。

リージョン

パブリックネットワークアクセスアドレス

内部ネットワークアクセスアドレス

サポートされているサービス

シンガポール

green-cip.ap-southeast-1.aliyuncs.com

green-cip-vpc.ap-southeast-1.aliyuncs.com

document_detection_global

説明

他の言語の SDK サンプルコードが必要な場合は、OpenAPI デベロッパーポータル オンラインデバッグツールを使用して API 操作をテストできます。このツールは、対応する API の SDK サンプルコードを自動的に生成します。

Alibaba Cloud SDK コードでは、ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を定義することで、デフォルトのアクセス認証情報を作成できます。Alibaba Cloud サービスの API 操作を呼び出すと、システムは認証情報に直接アクセスし、AccessKey ペアを読み取って、自動的に認証を完了します。SDK サンプルコードを使用する前に、環境変数を構成する必要があります。詳細については、「認証情報を構成する」をご参照ください。

API インターフェースフィールドの詳細については、「ドキュメントレビュー API の拡張バージョン 2.0」をご参照ください。

Java SDK

Java 1.8 以降のバージョンをサポートしています。

ソースコードについては、GitHub の Java SDK または Java SDK (OSS パス) を参照してください。

3 種類のドキュメントモデレーションをサポートしています。

パブリックにアクセス可能なドキュメントの検出

シナリオ

レビューが必要なドキュメントがパブリックネットワークリンク経由で利用可能な場合、ドキュメントレビューサービスの 2.0 は、ドキュメントの URL を使用してドキュメントを取得し、検査できます。

URL 経由でパブリックにアクセスできるドキュメントの場合、Content Moderation 拡張版 2.0 サービスはレビューのためにファイルを取得できます。Maven プロジェクトで SDK を使用するには、必要な依存関係を pom.xml ファイルに追加します。

  1. dependencies に以下を含めます。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>2.2.11</version>
    </dependency>
  2. Java SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード:

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.FileModerationRequest;
      import com.aliyun.green20220302.models.FileModerationResponse;
      import com.aliyun.green20220302.models.FileModerationResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      public class FileModerationDemo {
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
               * 環境変数を取得する一般的な方法:
               * 方法 1:
               *     RAM ユーザー AccessKey ID を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザー AccessKey ID を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします");
              config.setAccessKeySecret("環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします");
              // 実際の状況に応じてリージョンとアドレスを変更します。
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // 接続タイムアウト(ミリ秒)。
              config.setReadTimeout(6000);
              // 読み取りタイムアウト(ミリ秒)。
              config.setConnectTimeout(3000);
      
              Client client = new Client(config);
              JSONObject serviceParameters = new JSONObject();
              serviceParameters.put("url", "https://xxx.oss.aliyuncs.com/xxx.pdf"); // ファイル URL
      
              FileModerationRequest fileModerationRequest = new FileModerationRequest();
              // 検出タイプ:document_detection_global 一般ドキュメント検出
              fileModerationRequest.setService("document_detection_global");
              fileModerationRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  FileModerationResponse response = client.fileModeration(fileModerationRequest);
                  if (response.getStatusCode() == 200) {
                      FileModerationResponseBody result = response.getBody();
                      System.out.println(JSON.toJSONString(result));
                      System.out.println("requestId = " + result.getRequestId());
                      System.out.println("code = " + result.getCode());
                      System.out.println("msg = " + result.getMessage());
                      Integer code = result.getCode();
                      if (200 == code) {
                          FileModerationResponseBody.FileModerationResponseBodyData data = result.getData();
                          System.out.println("taskId = [" + data.getTaskId() + "]");
                      } else {
                          System.out.println("ファイルモデレーションは成功しませんでした。 code:" + code);
                      }
                  } else {
                      System.out.println("レスポンスは成功しませんでした。 status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
      
    • ドキュメント検出タスクの結果を取得するためのサンプルコード:

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.DescribeFileModerationResultRequest;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponse;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      
      public class DescribeFileModerationResultDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
               * 環境変数を取得する一般的な方法:
               * 方法 1:
               *     RAM ユーザー AccessKey ID を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザー AccessKey ID を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします");
              config.setAccessKeySecret("環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします");
              // 実際の状況に応じてリージョンとアドレスを変更します
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // 接続タイムアウト(ミリ秒)。
              config.setReadTimeout(6000);
              // 読み取りタイムアウト(ミリ秒)。
              config.setConnectTimeout(3000);
      
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // タスクの送信時に返される taskId
              serviceParameters.put("taskId", "fi_f_O5z5i*********-1xxp0V");
      
      
              DescribeFileModerationResultRequest describeFileModerationResultRequest = new DescribeFileModerationResultRequest();
      
              describeFileModerationResultRequest.setService("document_detection_global");
              describeFileModerationResultRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  DescribeFileModerationResultResponse response = client.describeFileModerationResult(describeFileModerationResultRequest);
                  if (response.getStatusCode() == 200) {
                      DescribeFileModerationResultResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 == result.getCode()) {
                          DescribeFileModerationResultResponseBody.DescribeFileModerationResultResponseBodyData data = result.getData();
                          System.out.println("pageResult = " + JSON.toJSONString(data.getPageResult()));
                          System.out.println("dataId = " + data.getDataId());
                          System.out.println("url = " + data.getUrl());
                      } else {
                          System.out.println("ファイルモデレーションの結果は成功しませんでした。 code:" + result.getCode());
                      }
                  } else {
                      System.out.println("レスポンスは成功しませんでした。 status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
      

ローカルドキュメントの検出

シナリオ

レビューが必要なドキュメントがパブリックネットワークアクセスリンクのないローカルマシンに保存されている場合は、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードできます。拡張 バージョン 2.0 サービスは、OSS からドキュメントコンテンツを直接取得してレビューできます。

  1. dependencies に以下を含めます。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>2.2.11</version>
    </dependency>

    OSS SDK をインストールします。

    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.16.3</version>
    </dependency>
  2. Java SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード:

      import com.alibaba.fastjson.JSON;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.DescribeUploadTokenResponse;
      import com.aliyun.green20220302.models.DescribeUploadTokenResponseBody;
      import com.aliyun.green20220302.models.FileModerationRequest;
      import com.aliyun.green20220302.models.FileModerationResponse;
      import com.aliyun.green20220302.models.FileModerationResponseBody;
      import com.aliyun.oss.OSS;
      import com.aliyun.oss.OSSClientBuilder;
      import com.aliyun.oss.model.PutObjectRequest;
      import com.aliyun.teaopenapi.models.Config;
      import com.aliyun.teautil.models.RuntimeOptions;
      
      import java.io.File;
      import java.util.HashMap;
      import java.util.Map;
      import java.util.UUID;
      
      public class FileModerationFile {
          /**サービスが vpc にデプロイされているかどうか*/
          public static boolean isVPC = false;
      
          /**ファイルアップロードトークン endpoint->token*/
          public static Map<String, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData> tokenMap = new HashMap<>();
      
          /**ファイルリクエストをアップロードするためのクライアント*/
          public static OSS ossClient = null;
      
          /**
           * リクエストクライアントを作成する
           *
           * @param accessKeyId
           * @param accessKeySecret
           * @param endpoint
           * @return
           * @throws Exception
           */
          public static Client createClient(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
              Config config = new Config();
              config.setAccessKeyId(accessKeyId);
              config.setAccessKeySecret(accessKeySecret);
              // 実際の状況に応じてリージョンとアドレスを変更します
              config.setEndpoint(endpoint);
              return new Client(config);
          }
      
          /**
           * ファイルリクエストをアップロードするためのクライアントを作成する
           *
           * @param tokenData
           * @param isVPC
           */
          public static void getOssClient(DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData, boolean isVPC) {
              // ここでインスタンス化されたクライアントは、可能な限り再利用して、接続の繰り返しを避け、検出パフォーマンスを向上させる必要があります。
              if (isVPC) {
                  ossClient = new OSSClientBuilder().build(tokenData.ossInternalEndPoint, tokenData.getAccessKeyId(), tokenData.getAccessKeySecret(), tokenData.getSecurityToken());
              } else {
                  ossClient = new OSSClientBuilder().build(tokenData.ossInternetEndPoint, tokenData.getAccessKeyId(), tokenData.getAccessKeySecret(), tokenData.getSecurityToken());
              }
          }
      
          /**
           * ファイルをアップロードする
           *
           * @param filePath
           * @param tokenData
           * @return
           * @throws Exception
           */
          public static String uploadFile(String filePath, DescribeUploadTokenResponseBody.DescribeUploadTokenResponseBodyData tokenData) throws Exception {
              String[] split = filePath.split("\\.");
              String objectName;
              if (split.length > 1) {
                  objectName = tokenData.getFileNamePrefix() + UUID.randomUUID() + "." + split[split.length - 1];
              } else {
                  objectName = tokenData.getFileNamePrefix() + UUID.randomUUID();
              }
              PutObjectRequest putObjectRequest = new PutObjectRequest(tokenData.getBucketName(), objectName, new File(filePath));
              ossClient.putObject(putObjectRequest);
              return objectName;
          }
      
          public static FileModerationResponse invokeFunction(String accessKeyId, String accessKeySecret, String endpoint) throws Exception {
              // ここでインスタンス化されたクライアントは、可能な限り再利用して、接続の繰り返しを避け、検出パフォーマンスを向上させる必要があります。
              Client client = createClient(accessKeyId, accessKeySecret, endpoint);
              RuntimeOptions runtime = new RuntimeOptions();
      
              // ローカルファイルのフルパス(例:D:\localPath\exampleFile.mp3)。
              String filePath = "D:/test/1.pdf";
              // ファイルアップロードトークンを取得する
              if (tokenMap.get(endpoint) == null || tokenMap.get(endpoint).expiration <= System.currentTimeMillis() / 1000) {
                  DescribeUploadTokenResponse tokenResponse = client.describeUploadToken();
                  tokenMap.put(endpoint, tokenResponse.getBody().getData());
              }
              // ファイルリクエストをアップロードするためのクライアント
              getOssClient(tokenMap.get(endpoint), isVPC);
      
              // ファイルをアップロードする
              String objectName = uploadFile(filePath, tokenMap.get(endpoint));
      
              // 検出パラメータを構築します。
              Map<String, String> serviceParameters = new HashMap<>();
              // ファイルアップロード情報
              serviceParameters.put("ossBucketName", tokenMap.get(endpoint).getBucketName());
              serviceParameters.put("ossObjectName", objectName);
              serviceParameters.put("dataId", UUID.randomUUID().toString());
      
              FileModerationRequest request = new FileModerationRequest();
              // 検出タイプ。
              request.setService("document_detection_global");
              request.setServiceParameters(JSON.toJSONString(serviceParameters));
      
              FileModerationResponse response = null;
              try {
                  response = client.fileModerationWithOptions(request, runtime);
              } catch (Exception e) {
                  e.printStackTrace();
              }
              return response;
          }
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
      
              /**
               * Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
               * 環境変数を取得する一般的な方法:
               * 方法 1:
               *     RAM ユーザー AccessKey ID を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザー AccessKey ID を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              String accessKeyId = "環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします";
              String accessKeySecret = "環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします";
              // 実際の状況に応じてリージョンとアドレスを変更します。
              FileModerationResponse response = invokeFunction(accessKeyId, accessKeySecret, "green-cip.ap-southeast-1.aliyuncs.com");
      
              try {
      
                  // 検出結果を出力します。
                  if (response != null) {
                      if (response.getStatusCode() == 200) {
                          FileModerationResponseBody body = response.getBody();
                          System.out.println(JSON.toJSONString(body));
                          System.out.println("requestId = " + body.getRequestId());
                          System.out.println("code = " + body.getCode());
                          System.out.println("msg = " + body.getMessage());
                          Integer code = body.getCode();
                          if (200 == code) {
                              FileModerationResponseBody.FileModerationResponseBodyData data = body.getData();
                              System.out.println("taskId = [" + data.getTaskId() + "]");
                          } else {
                              System.out.println("ファイルモデレーションは成功しませんでした。 code:" + code);
                          }
                      } else {
                          System.out.println("レスポンスは成功しませんでした。 status:" + response.getStatusCode());
                      }
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
      
    • ドキュメント検出タスクを取得するためのサンプルコード:

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.DescribeFileModerationResultRequest;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponse;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      
      public class DescribeFileModerationResultDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
               * 環境変数を取得する一般的な方法:
               * 方法 1:
               *     RAM ユーザー AccessKey ID を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザー AccessKey ID を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします");
              config.setAccessKeySecret("環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします");
              // 実際の状況に応じてリージョンとアドレスを変更します
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // 接続タイムアウト(ミリ秒)。
              config.setReadTimeout(6000);
              // 読み取りタイムアウト(ミリ秒)。
              config.setConnectTimeout(3000);
      
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // タスクの送信時に返される taskId
              serviceParameters.put("taskId", "fi_f_O5z5i*********-1xxp0V");
      
      
              DescribeFileModerationResultRequest describeFileModerationResultRequest = new DescribeFileModerationResultRequest();
      
              describeFileModerationResultRequest.setService("document_detection_global");
              describeFileModerationResultRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  DescribeFileModerationResultResponse response = client.describeFileModerationResult(describeFileModerationResultRequest);
                  if (response.getStatusCode() == 200) {
                      DescribeFileModerationResultResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 == result.getCode()) {
                          DescribeFileModerationResultResponseBody.DescribeFileModerationResultResponseBodyData data = result.getData();
                          System.out.println("pageResult = " + JSON.toJSONString(data.getPageResult()));
                          System.out.println("dataId = " + data.getDataId());
                          System.out.println("url = " + data.getUrl());
                      } else {
                          System.out.println("ファイルモデレーションの結果は成功しませんでした。 code:" + result.getCode());
                      }
                  } else {
                      System.out.println("レスポンスは成功しませんでした。 status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
      

OSS ドキュメントの検出

シナリオ

レビュー対象のドキュメントが Alibaba Cloud Object Storage Service (OSS) に保存されている場合は、サーバーロールを作成して Content Moderation に OSS へのアクセス権を付与できます。Content Moderation 2.0 は、このサーバーロールを介して OSS からドキュメントを取得し、分析します。サーバーロールを設定するには、クラウド リソースアクセス認証ページ にアクセスしてください。

  1. dependencies に以下を含めます。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>green20220302</artifactId>
      <version>2.2.11</version>
    </dependency>

    OSS SDK をインストールします。

    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.16.3</version>
    </dependency>
  2. Java SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード:

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.FileModerationRequest;
      import com.aliyun.green20220302.models.FileModerationResponse;
      import com.aliyun.green20220302.models.FileModerationResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      public class FileModerationDemo {
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
               * 環境変数を取得する一般的な方法:
               * 方法 1:
               *     RAM ユーザー AccessKey ID を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザー AccessKey ID を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします");
              config.setAccessKeySecret("環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします");
              // 実際の状況に応じてリージョンとアドレスを変更します。
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // 接続タイムアウト(ミリ秒)。
              config.setReadTimeout(6000);
              // 読み取りタイムアウト(ミリ秒)。
              config.setConnectTimeout(3000);
      
              Client client = new Client(config);
              JSONObject serviceParameters = new JSONObject();
              serviceParameters.put("ossBucketName", "bucket_01");
              serviceParameters.put("ossObjectName", "2022023/04/24/test.pdf");
              serviceParameters.put("ossRegionId", "ap-southeast-1");
      
              FileModerationRequest fileModerationRequest = new FileModerationRequest();
              // 検出タイプ:document_detection_global 一般ドキュメント検出
              fileModerationRequest.setService("document_detection_global");
              fileModerationRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  FileModerationResponse response = client.fileModeration(fileModerationRequest);
                  if (response.getStatusCode() == 200) {
                      FileModerationResponseBody result = response.getBody();
                      System.out.println(JSON.toJSONString(result));
                      System.out.println("requestId = " + result.getRequestId());
                      System.out.println("code = " + result.getCode());
                      System.out.println("msg = " + result.getMessage());
                      Integer code = result.getCode();
                      if (200 == code) {
                          FileModerationResponseBody.FileModerationResponseBodyData data = result.getData();
                          System.out.println("taskId = [" + data.getTaskId() + "]");
                      } else {
                          System.out.println("ファイルモデレーションは成功しませんでした。 code:" + code);
                      }
                  } else {
                      System.out.println("レスポンスは成功しませんでした。 status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
      
    • ドキュメント検出タスクを取得するためのサンプルコード:

      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.green20220302.Client;
      import com.aliyun.green20220302.models.DescribeFileModerationResultRequest;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponse;
      import com.aliyun.green20220302.models.DescribeFileModerationResultResponseBody;
      import com.aliyun.teaopenapi.models.Config;
      
      
      public class DescribeFileModerationResultDemo {
      
          public static void main(String[] args) throws Exception {
              Config config = new Config();
              /**
               * Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
               * 環境変数を取得する一般的な方法:
               * 方法 1:
               *     RAM ユーザー AccessKey ID を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               * 方法 2:
               *     RAM ユーザー AccessKey ID を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
               *     RAM ユーザー AccessKey Secret を取得する:System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
               */
              config.setAccessKeyId("環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします");
              config.setAccessKeySecret("環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします");
              // 実際の状況に応じてリージョンとアドレスを変更します
              config.setRegionId("ap-southeast-1");
              config.setEndpoint("green-cip.ap-southeast-1.aliyuncs.com");
              // 接続タイムアウト(ミリ秒)。
              config.setReadTimeout(6000);
              // 読み取りタイムアウト(ミリ秒)。
              config.setConnectTimeout(3000);
      
              Client client = new Client(config);
      
              JSONObject serviceParameters = new JSONObject();
              // タスクの送信時に返される taskId
              serviceParameters.put("taskId", "fi_f_O5z5i*********-1xxp0V");
      
      
              DescribeFileModerationResultRequest describeFileModerationResultRequest = new DescribeFileModerationResultRequest();
      
              describeFileModerationResultRequest.setService("document_detection_global");
              describeFileModerationResultRequest.setServiceParameters(serviceParameters.toJSONString());
      
              try {
                  DescribeFileModerationResultResponse response = client.describeFileModerationResult(describeFileModerationResultRequest);
                  if (response.getStatusCode() == 200) {
                      DescribeFileModerationResultResponseBody result = response.getBody();
                      System.out.println("requestId=" + result.getRequestId());
                      System.out.println("code=" + result.getCode());
                      System.out.println("msg=" + result.getMessage());
                      if (200 == result.getCode()) {
                          DescribeFileModerationResultResponseBody.DescribeFileModerationResultResponseBodyData data = result.getData();
                          System.out.println("pageResult = " + JSON.toJSONString(data.getPageResult()));
                          System.out.println("dataId = " + data.getDataId());
                          System.out.println("url = " + data.getUrl());
                      } else {
                          System.out.println("ファイルモデレーションの結果は成功しませんでした。 code:" + result.getCode());
                      }
                  } else {
                      System.out.println("レスポンスは成功しませんでした。 status:" + response.getStatusCode());
                  }
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
      

Python SDK

Python 3.6 以降のバージョンをサポートしています。

ソースコードについては、Python SDK リポジトリ を参照してください。

3 種類のドキュメント検出をサポートしています。

パブリックネットワーク経由でアクセス可能なドキュメントを検出する

シナリオ

レビュー待ちのドキュメントがパブリックネットワークリンク経由でアクセス可能な場合、ドキュメントレビューサービスの バージョン 2.0 は、検査のために URL を使用してファイルを取得できます。

  1. pip をインストールするには、次のコマンドを実行します。

    pip install alibabacloud_green20220302==2.2.11

  2. Python SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード:

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
          # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
          # AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
          # 環境変数を取得する一般的な方法:
          # RAM ユーザー AccessKey ID を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          # RAM ユーザー AccessKey Secret を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          access_key_id='環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします',
          access_key_secret='環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします',
          # 接続タイムアウト(ミリ秒)
          connect_timeout=10000,
          # 読み取りタイムアウト(ミリ秒)
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      serviceParameters = {
          'url': 'https://detect-obj.oss-cn-hangzhou.aliyuncs.com/sample/xxxx.pdf',
      }
      fileModerationRequest = models.FileModerationRequest(
          # 検出タイプ
          service='document_detection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.file_moderation(fileModerationRequest)
          if response.status_code == 200:
              # 呼び出し成功
              result = response.body
              print('response success. result:{}'.format(result))
          else:
              print('response not success. status:{} ,result:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
      
    • ドキュメント検出タスクの結果を取得する:

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
          # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
          # AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
          # 環境変数を取得する一般的な方法:
          # RAM ユーザー AccessKey ID を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          # RAM ユーザー AccessKey Secret を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          access_key_id='環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします',
          access_key_secret='環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします',
          # 接続タイムアウト(ミリ秒)
          connect_timeout=10000,
          # 読み取りタイムアウト(ミリ秒)
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # タスクの送信時に返される taskId
      serviceParameters = {
          "taskId": 'fi_f_11w5THcb*******a-1xx7hH'
      }
      describeFileModerationResultRequest = models.DescribeFileModerationResultRequest(
          # 検出タイプ
          service='document_detection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.describe_file_moderation_result(describeFileModerationResultRequest)
          if response.status_code == 200:
              # 呼び出し成功
              # レビュー結果を取得する
              result = response.body
              print('response success. result:{}'.format(result))
          else:
              print('response not success. status:{} ,result:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
      

ローカルドキュメントを検出する

シナリオ

レビューが必要なドキュメントがパブリックネットワークアクセスリンクのないローカルマシンにある場合、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードできます。拡張 バージョン 2.0 サービスは、OSS からドキュメントコンテンツを直接取得してレビューできます。

  1. pip をインストールするには、次のコマンドを実行します。

    pip install alibabacloud_green20220302==2.2.11

    OSS SDK をインストールします。

    pip install oss2
  2. Python SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード:

      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      from alibabacloud_tea_util.client import Client as UtilClient
      from alibabacloud_tea_util import models as util_models
      import json
      import uuid
      
      import oss2
      import time
      
      configs = Config(
          # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
          # AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
          # 環境変数を取得する一般的な方法:
          # RAM ユーザー AccessKey ID を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          # RAM ユーザー AccessKey Secret を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          access_key_id='環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします',
          access_key_secret='環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします',
          # 接続タイムアウト(ミリ秒)。
          connect_timeout=10000,
          # 読み取りタイムアウト(ミリ秒)。
          read_timeout=10000,
          # 実際の状況に応じてアクセスリージョンとアドレスを変更します。
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      # 注:ここでインスタンス化されたクライアントは、可能な限り再利用して、接続の繰り返しを避け、検出パフォーマンスを向上させる必要があります。
      client = Client(configs)
      
      bucket = None
      upload_token = None
      
      
      def get_oss_client(is_vpc):
          global upload_token
          global bucket
          if (upload_token == None) or int(upload_token.expiration) <= int(time.time()):
              response = client.describe_upload_token()
      
              upload_token = response.body.data
              auth = oss2.StsAuth(upload_token.access_key_id, upload_token.access_key_secret, upload_token.security_token)
      
              end_point = upload_token.oss_internet_end_point
              if (is_vpc):
                  end_point = upload_token.oss_internal_end_point
              bucket = oss2.Bucket(auth, end_point, upload_token.bucket_name)
      
      
      def upload_file(file_name, is_vpc):
          get_oss_client(is_vpc)
          object_name = upload_token.file_name_prefix + str(uuid.uuid4()) + '.' + file_name.split('.')[-1]
          bucket.put_object_from_file(object_name, file_name)
          return object_name
      
      
      def file_moderation_by_local_file(file_path, is_vpc):
          # 1. ファイルをアップロードする
          object_name = upload_file(file_path, is_vpc)
      
          # 2. 検出パラメータ
          service_parameters = {
              'dataId': str(uuid.uuid4()),
              'ossBucketName': upload_token.bucket_name,
              'ossObjectName': object_name
          }
      
          file_moderation_request = models.FileModerationRequest(
              # 検出タイプ。
              service='document_detection_global',
              service_parameters=json.dumps(service_parameters)
          )
      
          # RuntimeObject インスタンスを作成し、ランタイムパラメータを設定します。
          runtime = util_models.RuntimeOptions()
          runtime.read_timeout = 10000
          runtime.connect_timeout = 10000
          try:
              global client
              response = client.file_moderation_with_options(file_moderation_request, runtime)
      
      
              if response.status_code == 200:
                  # 呼び出し成功。
                  # レビュー結果を取得します。
                  result = response.body
                  print('response success. result:{}'.format(result))
                  if result.code == 200:
                      result_data = result.data
                      print('result: {}'.format(result_data))
              else:
                  print('response not success. status:{} ,result:{}'.format(response.status_code, response))
          except Exception as err:
              print(err)
      
      
      if __name__ == '__main__':
          # ローカルファイルパス
          file_path = '/Users/test/MS.pdf'
          # VPC にデプロイするかどうか
          is_vpc = False  # True
          file_moderation_by_local_file(file_path, is_vpc)
      
    • ドキュメント検出タスクの結果を取得する:

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
          # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
          # AccessKey ID# AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
          # 環境変数を取得する一般的な方法:
          # RAM ユーザー AccessKey ID を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          # RAM ユーザー AccessKey Secret を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          access_key_id='環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします',
          access_key_secret='環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします',
          # 接続タイムアウト(ミリ秒)
          connect_timeout=10000,
          # 読み取りタイムアウト(ミリ秒)
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # タスクの送信時に返される taskId
      serviceParameters = {
          "taskId": 'fi_f_11w5THcb*******a-1xx7hH'
      }
      describeFileModerationResultRequest = models.DescribeFileModerationResultRequest(
          # 検出タイプ
          service='document_detection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.describe_file_moderation_result(describeFileModerationResultRequest)
          if response.status_code == 200:
              # 呼び出し成功
              # レビュー結果を取得する
              result = response.body
              print('response success. result:{}'.format(result))
          else:
              print('response not success. status:{} ,result:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
      

OSS ドキュメントを検出する

シナリオ

Alibaba Cloud Object Storage Service (OSS) に保存されているドキュメントをレビューする必要がある場合は、サーバーロールを作成して Content Moderation サービスに OSS へのアクセス権を付与できます。ドキュメントレビューサービス 2.0 は、検査のためにサーバーロールを介して OSS からファイルを取得します。サーバーロールを設定するには、クラウド リソースアクセス認証ページ にアクセスしてください。

  1. pip をインストールするには、次のコマンドを実行します。

    pip install alibabacloud_green20220302==2.2.11
  2. Python SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード:

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
          # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
          # AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
          # 環境変数を取得する一般的な方法:
          # RAM ユーザー AccessKey ID を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          # RAM ユーザー AccessKey Secret を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          access_key_id='環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします',
          access_key_secret='環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします',
          # 接続タイムアウト(ミリ秒)
          connect_timeout=10000,
          # 読み取りタイムアウト(ミリ秒)
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      serviceParameters = {
          'ossRegionId': 'cn-hangzhou',
          'ossBucketName': 'detect-obj',
          'ossObjectName': 'sample/xxxx.pdf'
      }
      fileModerationRequest = models.FileModerationRequest(
          # 検出タイプ
          service='document_detection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.file_moderation(fileModerationRequest)
          if response.status_code == 200:
              # 呼び出し成功
              result = response.body
              print('response success. result:{}'.format(result))
          else:
              print('response not success. status:{} ,result:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
      
    • ドキュメント検出タスクの結果を取得する:

      # coding=utf-8
      # python version >= 3.6
      from alibabacloud_green20220302.client import Client
      from alibabacloud_green20220302 import models
      from alibabacloud_tea_openapi.models import Config
      import json
      
      config = Config(
          # Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
          # AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
          # 環境変数を取得する一般的な方法:
          # RAM ユーザー AccessKey ID を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
          # RAM ユーザー AccessKey Secret を取得する:os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
          access_key_id='環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします',
          access_key_secret='環境変数から RAM ユーザー AccessKey Secret を取得することをお勧めします',
          # 接続タイムアウト(ミリ秒)
          connect_timeout=10000,
          # 読み取りタイムアウト(ミリ秒)
          read_timeout=3000,
          region_id='ap-southeast-1',
          endpoint='green-cip.ap-southeast-1.aliyuncs.com'
      )
      
      clt = Client(config)
      
      # タスクの送信時に返される taskId
      serviceParameters = {
          "taskId": 'fi_f_11w5THcb*******a-1xx7hH'
      }
      describeFileModerationResultRequest = models.DescribeFileModerationResultRequest(
          # 検出タイプ
          service='document_detection_global',
          service_parameters=json.dumps(serviceParameters)
      )
      
      try:
          response = clt.describe_file_moderation_result(describeFileModerationResultRequest)
          if response.status_code == 200:
              # 呼び出し成功
              # レビュー結果を取得する
              result = response.body
              print('response success. result:{}'.format(result))
          else:
              print('response not success. status:{} ,result:{}'.format(response.status_code, response))
      except Exception as err:
          print(err)
      

PHP SDK

PHP バージョン 5.6 以降をサポートしています。

ソースコードについては、Packagist の PHP SDK を参照してください。

3 種類のドキュメント検出をサポートしています。

パブリックネットワーク経由でアクセス可能なドキュメントを検出する

シナリオ

レビュー予定のドキュメントがパブリックネットワークリンク経由でアクセス可能な場合、バージョン 2.0 ドキュメントレビューサービスは、検査のためにドキュメントの URL を使用してファイルを取得できます。

  1. 以下のコマンドを実行して、必要な依存関係を追加します。

    composer require alibabacloud/green-20220302 2.2.10

  2. PHP SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード:

      <?php
      require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\FileModerationRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
           * AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことを強くお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
           * 環境変数を取得する一般的な方法:
           * RAM ユーザー AccessKey ID を取得する:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * RAM ユーザー AccessKey シークレットを取得する:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => '環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします',
          "accessKeySecret" => '環境変数から RAM ユーザー AccessKey シークレットを取得することをお勧めします',
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // 注:インスタンス化されたクライアントは、可能な限り再利用して、接続の繰り返しを避け、検出パフォーマンスを向上させる必要があります。
      $client = new Green($config);
      
      $request = new FileModerationRequest();
      $request->service = "document_detection_global";
      $serviceParameters = array("url" => "https://xxx.oss.aliyuncs.com/xxx.pdf");
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
          $response = $client->fileModerationWithOptions($request, $runtime);
          print_r($response->body);
          if (200 != $response->statusCode) {
              print_r("response not success. code:" . $response->statusCode);
              return;
          }
          $body = $response->body;
          print_r("requestId = " . $body->requestId . "\n");
          print_r("code = " . $body->code . "\n");
          print_r("message = " . $body->message . "\n");
          if (200 != $body->code) {
              print_r("ファイルモデレーションは成功しませんでした。 code:" . $body->code);
          }
          $data = $body->data;
          print_r("taskId = " . $data->taskId);
      } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }
      
    • ドキュメント検出タスクの結果を取得する:

      <?php
      require('vendor/autoload.php');
      
      use AlibabaCloud\SDK\Green\V20220302\Models\DescribeFileModerationResultRequest;
      use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
      use Darabonba\OpenApi\Models\Config;
      use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
      use AlibabaCloud\SDK\Green\V20220302\Green;
      
      $config = new Config([
          /**
           * Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
           * AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことを強くお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
           * 環境変数を取得する一般的な方法:
           * RAM ユーザー AccessKey ID を取得する:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
           * RAM ユーザー AccessKey シークレットを取得する:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
           */
          "accessKeyId" => '環境変数から RAM ユーザー AccessKey ID を取得することをお勧めします',
          "accessKeySecret" => '環境変数から RAM ユーザー AccessKey シークレットを取得することをお勧めします',
          "endpoint" => "green-cip.ap-southeast-1.aliyuncs.com",
          "regionId" => "ap-southeast-1"
      
      ]);
      // 注:インスタンス化されたクライアントは、可能な限り再利用して、接続の繰り返しを避け、検出パフォーマンスを向上させる必要があります。
      $client = new Green($config);
      
      $request = new DescribeFileModerationResultRequest();
      $request->service = "document_detection_global";
      $serviceParameters = array("taskId" => "fi_f_O5z5iaIis*****NYj7qa-1x****");
      
      $request->serviceParameters = json_encode($serviceParameters);
      
      $runtime = new RuntimeOptions();
      $runtime->readTimeout = 6000;
      $runtime->connectTimeout = 3000;
      
      try {
          $response = $client->describeFileModerationResultWithOptions($request, $runtime);
          if (200 != $response->statusCode) {
              print_r("response not success. code:" . $response->statusCode);
              return;
          }
          $body = $response->body;
          print_r("requestId = " . $body->requestId . "\n");
          print_r("code = " . $body->code . "\n");
          print_r("message = " . $body->message . "\n");
          if (280 == $body->code) {
              print_r("ファイルモデレーションを処理しています。 code:" . $body->code);
              return;
          }
          if (200 != $body->code) {
              print_r("ファイルモデレーションの結果は成功しませんでした。 code:" . $body->code);
              return;
          }
          $data = $body->data;
          print_r("data = " . json_encode($data) . "\n");
          print_r("pageResult = " . json_encode($data->pageResult) . "\n");
      } catch (TeaUnableRetryError $e) {
          var_dump($e->getMessage());
          var_dump($e->getErrorInfo());
          var_dump($e->getLastException());
          var_dump($e->getLastRequest());
      }
      

ローカルドキュメントを検出する

シナリオ

レビューが必要なドキュメントがパブリックネットワークアクセスリンクのないローカルマシンにある場合、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードできます。Content Moderation サービスの バージョン 2.0 は、OSS に直接アクセスしてドキュメントコンテンツを取得し、レビューできます。

  1. 以下のコマンドを実行して、必要な依存関係を追加します。

    composer require alibabacloud/green-20220302 2.2.10

    OSS SDK をインストールします。

    composer require aliyuncs/oss-sdk-php
  2. PHP SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード:

    • ドキュメント検出タスクの結果を取得する:

OSS ドキュメントを検出する

シナリオ

Alibaba Cloud Object Storage Service (OSS) に保存されているドキュメントファイルをレビューする必要がある場合は、サーバーロールを作成して Content Moderation サービスに OSS へのアクセス権を付与できます。ドキュメントレビューサービス バージョン 2.0 は、検査のためにサーバーロールを介して OSS からファイルを取得します。サーバーロールを設定するには、クラウド リソースアクセス認証ページ にアクセスしてください。

  1. 以下のコマンドを実行して、必要な依存関係を追加します。

    composer require alibabacloud/green-20220302 2.2.10
  2. PHP SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード:

    • ドキュメント検出タスクの結果を取得する:

Go SDK

3 種類のドキュメント検出をサポートしています。

パブリックネットワーク経由でアクセス可能なドキュメントを検出する

シナリオ

レビューが必要なドキュメントがパブリックネットワークリンク経由でアクセス可能な場合、 バージョン 2.0 ドキュメントレビューサービスは、ドキュメントの URL を使用してレビューのためにファイルを取得できます。

Go SDK

  1. 次のコマンドで必要な依存関係を導入します。

    go git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2

  2. Go SDK を統合します。

    • 次のコード例を使用して、ドキュメント検出タスクを送信します。

      package main
      
      import (
          "encoding/json"
          "fmt"
          openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
          green20220302 "github.com/alibabacloud-go/green-20220302/v2/client"
          util "github.com/alibabacloud-go/tea-utils/v2/service"
          "github.com/alibabacloud-go/tea/tea"
          "net/http"
      )
      
      func main() {
          // プロジェクトコードの漏洩は、AccessKey の漏洩につながり、アカウント内のすべてのリソースのセキュリティを侵害する可能性があります。次のコード例は参考用です。より安全な STS メソッドを使用することをお勧めします。
          config := &openapi.Config{
              /**
               * Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
               * AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことを強くお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
               * 環境変数を取得する一般的な方法:
               * RAM ユーザーの AccessKey ID を取得する:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
               * RAM ユーザーの AccessKey シークレットを取得する:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
               */
              AccessKeyId:     tea.String("環境変数から RAM ユーザーの AccessKey ID を取得することをお勧めします"),
              AccessKeySecret: tea.String("環境変数から RAM ユーザーの AccessKey シークレットを取得することをお勧めします"),
              RegionId:        tea.String("ap-southeast-1"),
              Endpoint:        tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
              /**
               * タイムアウト期間を設定してください。サーバー側のフルリンク処理タイムアウトは 10 秒です。対応する設定を行ってください。
               * ReadTimeout をサーバー側の処理時間よりも短く設定すると、プログラムは ReadTimeout 例外を受け取ります。
               */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
          client, _err := green20220302.NewClient(config)
          if _err != nil {
              panic(_err)
          }
      
          // RuntimeObject インスタンスを作成し、ランタイムパラメータを設定します。
          runtime := &util.RuntimeOptions{}
          runtime.ReadTimeout = tea.Int(10000)
          runtime.ConnectTimeout = tea.Int(10000)
      
          serviceParameters, _ := json.Marshal(
              map[string]interface{}{
                  "url": "https://xxx.oss.aliyuncs.com/xxx.pdf",
              },
          )
          request := green20220302.FileModerationRequest{
              Service:           tea.String("document_detection_global"),
              ServiceParameters: tea.String(string(serviceParameters)),
          }
      
          result, _err := client.FileModerationWithOptions(&request, runtime)
          if _err != nil {
              panic(_err)
          }
      
          if *result.StatusCode != http.StatusOK {
              fmt.Printf("response not success. status:%d\n", *result.StatusCode)
              return
          }
          body := result.Body
          fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
          if *body.Code != http.StatusOK {
              fmt.Printf("ファイルモデレーションは成功しませんでした。 code:%d\n", *body.Code)
              return
          }
      
          data := body.Data
          fmt.Printf("ファイルモデレーション taskId:%s\n", *data.TaskId)
      }
      
    • ドキュメント検出タスクの結果を取得します。

      package main
      
      import (
          "encoding/json"
          "fmt"
          openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
          green20220302 "github.com/alibabacloud-go/green-20220302/v2/client"
          util "github.com/alibabacloud-go/tea-utils/v2/service"
          "github.com/alibabacloud-go/tea/tea"
          "net/http"
      )
      
      func main() {
          // プロジェクトコードの漏洩は、AccessKey の漏洩につながり、アカウント内のすべてのリソースのセキュリティを侵害する可能性があります。次のコード例は参考用です。より安全な STS メソッドを使用することをお勧めします。
          config := &openapi.Config{
              /**
               * Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常的な O&M には、RAM ユーザーを使用することをお勧めします。
               * AccessKey ID と AccessKey シークレットをプロジェクトコードに保存しないことを強くお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
               * 環境変数を取得する一般的な方法:
               * RAM ユーザーの AccessKey ID を取得する:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
               * RAM ユーザーの AccessKey シークレットを取得する:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
               */
              AccessKeyId:     tea.String("環境変数から RAM ユーザーの AccessKey ID を取得することをお勧めします"),
              AccessKeySecret: tea.String("環境変数から RAM ユーザーの AccessKey シークレットを取得することをお勧めします"),
              RegionId:        tea.String("ap-southeast-1"),
              Endpoint:        tea.String("green-cip.ap-southeast-1.aliyuncs.com"),
              /**
               * タイムアウト期間を設定してください。サーバー側のフルリンク処理タイムアウトは 10 秒です。対応する設定を行ってください。
               * ReadTimeout をサーバー側の処理時間よりも短く設定すると、プログラムは ReadTimeout 例外を受け取ります。
               */
              ConnectTimeout: tea.Int(3000),
              ReadTimeout:    tea.Int(6000),
          }
          client, _err := green20220302.NewClient(config)
          if _err != nil {
              panic(_err)
          }
      
          // RuntimeObject インスタンスを作成し、ランタイムパラメータを設定します。
          runtime := &util.RuntimeOptions{}
          runtime.ReadTimeout = tea.Int(10000)
          runtime.ConnectTimeout = tea.Int(10000)
      
          serviceParameters, _ := json.Marshal(
              map[string]interface{}{
                  "taskId": "fi_f_O5z5iaIi******-1x****",
              },
          )
          request := green20220302.DescribeFileModerationResultRequest{
              Service:           tea.String("document_detection_global"),
              ServiceParameters: tea.String(string(serviceParameters)),
          }
      
          result, _err := client.DescribeFileModerationResultWithOptions(&request, runtime)
          if _err != nil {
              panic(_err)
          }
      
          if *result.StatusCode != http.StatusOK {
              fmt.Printf("response not success. status:%d\n", *result.StatusCode)
              return
          }
          body := result.Body
          fmt.Printf("response success. requestId:%s, code:%d, msg:%s\n", *body.RequestId, *body.Code, *body.Message)
          if *body.Code == 280 {
              fmt.Printf("ファイルモデレーションを処理しています。 code:%d\n", *body.Code)
              return
          }
          if *body.Code != http.StatusOK {
              fmt.Printf("ファイルモデレーションの結果は成功しませんでした。 code:%d\n", *body.Code)
              return
          }
      
          data := body.Data
          fmt.Printf("ファイルモデレーション result:%s\n", data)
          fmt.Printf("ファイルモデレーション result pageResult:%s\n", data.PageResult)
          fmt.Printf("ファイルモデレーション result dataId:%s\n", data.DataId)
      }
      

ローカルドキュメントを検出する

シナリオ

レビューする必要があるドキュメントが、パブリックネットワークアクセスリンクのないローカルマシンに保存されている場合、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードできます。Content Moderation サービスの バージョン 2.0 は、OSS からドキュメントコンテンツを直接取得してレビューできます。

  1. 次のコマンドで必要な依存関係を導入します。

    go git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2

    次のコマンドで OSS SDK をインストールします。

    go get github.com/aliyun/aliyun-oss-go-sdk/oss
  2. Go SDK を統合します。

    • 次のコード例を使用して、ドキュメント検出タスクを送信します。

    • ドキュメント検出タスクの結果を取得します。

OSS ドキュメントを検出する

シナリオ

Alibaba Cloud Object Storage Service (OSS) に保存されているドキュメントファイルをレビューする必要がある場合は、サービスロールを作成することで、Content Moderation サービスに OSS へのアクセス権限を付与できます。Content Moderation バージョン 2.0 は、このサービスロールを通じてファイルを取得し、レビューします。サービスロールを設定するには、クラウド リソースアクセス認証ページ にアクセスしてください。

  1. 次のコマンドで必要な依存関係を導入します。

    go git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2

  2. Go SDK を統合します。

    • 次のコード例を使用して、ドキュメント検出タスクを送信します。

    • ドキュメント検出タスクの結果を取得します。

Node.js SDK

元のコード。Node.js SDK ソースコード にアクセスして詳細を確認してください。

3 種類のドキュメント検出をサポートしています。

インターネット経由でアクセス可能なドキュメントの検出

シナリオ

インターネットリンク経由でアクセス可能で、レビューが必要なドキュメントの場合、ドキュメントモデレーション 2.0 サービスは、ドキュメント URL を介してファイルを取得し、分析できます。

  1. 以下のコマンドを実行して、必要な依存関係を追加します。

    npm install @alicloud/green20220302@2.2.10
  2. Node.js SDK を統合します。

    • ドキュメントモデレーションタスクを送信するためのサンプルコード

      ドキュメントモデレーションタスクの結果を取得するためのサンプル コード

ローカルドキュメントの検出

シナリオ

レビューするドキュメントがインターネットリンクのないローカルマシンに保存されている場合は、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードします。ドキュメントモデレーション 2.0 サービスは、OSS 内のドキュメントに直接アクセスしてレビューできます。

  1. 以下のコマンドを実行して、必要な依存関係を追加します。

    npm install @alicloud/green20220302@2.2.10

    OSS 依存関係をインストールします。

    npm install ali-oss --save
  2. Node.js SDK を統合します。

    • ドキュメントモデレーションタスクを送信するためのサンプルコード

      ドキュメントモデレーションタスクの結果を取得するためのサンプルコード

OSS ドキュメントの検出

シナリオ

Alibaba Cloud Object Storage Service (OSS) に既に保存されているドキュメントの場合、サーバーロールを作成する権限を承認して、Content Moderation に OSS へのアクセス権を付与します。ドキュメントモデレーション 2.0 サービスは、サーバーロールを通じてドキュメントを取得し、分析します。サーバーロールの作成については、クラウド リソースアクセス認証ページ にアクセスしてください。

  1. 以下のコマンドを実行して、必要な依存関係を追加します。

    npm install @alicloud/green20220302@2.2.10
  2. Node.js SDK を統合します。

    • ドキュメントモデレーションタスクを送信するためのサンプルコード

      ドキュメントモデレーションタスクの結果を取得するためのサンプルコード

C# SDK

元の C# SDK のソースコードについては、このリンク を参照してください。

3 種類のドキュメント検出をサポートしています。

パブリックネットワーク経由でアクセス可能なドキュメントを検出する

使用シナリオ

レビュー待ちのドキュメントがパブリックネットワークリンク経由でアクセス可能な場合、ドキュメントレビューサービスの 2.0 は、検査のためにドキュメントの URL を使用してファイルを取得できます。

  1. 次のコマンドを実行して、必要な依存関係を追加します。

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10
  2. C# SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード

    • ドキュメント検出タスクの結果を取得するためのサンプルコード

ローカルドキュメントを検出する

使用シナリオ

パブリックネットワークアクセスリンクのないローカルマシンに保存されているドキュメントをレビューする必要がある場合は、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードできます。ドキュメントレビューサービスの 2.0 は、OSS からコンテンツを直接取得してレビューできます。

  1. 次のコマンドを実行して、必要な依存関係を追加します。

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10

    OSS SDK をインストールします。

    NuGet 経由でインストールする
    1. Visual Studio に NuGet がインストールされていない場合は、最初に NuGet をインストールしてください。
    2. Visual Studio で、新しいプロジェクトを作成するか、既存のプロジェクトを開き、[ツール] > [NuGet パッケージマネージャー] > [ソリューションの NuGet パッケージの管理] を選択します。
    3. aliyun.oss.sdk を検索し、結果から Aliyun.OSS.SDK(.NET Framework の場合)または Aliyun.OSS.SDK.NetCore(.Net Core の場合)を見つけ、最新バージョンを選択して、[インストール] をクリックします。
  2. C# SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード

    • ドキュメント検出タスクの結果を取得するためのサンプルコード

OSS ドキュメントを検出する

使用シナリオ

Alibaba Cloud Object Storage Service (OSS) に既に保存されているドキュメントをレビューする必要がある場合は、サーバーロールを作成する権限を承認して、Content Moderation サービスに OSS へのアクセス権を付与できます。ドキュメントレビュー 2.0 は、分析のためにサーバーロールを通じてファイルを取得します。サーバーロールを作成するには、クラウド リソースアクセス認証ページ にアクセスしてください。

  1. 次のコマンドを実行して、必要な依存関係を追加します。

    dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10
  2. C# SDK を統合します。

    • ドキュメント検出タスクを送信するためのサンプルコード

    • ドキュメント検出タスクの結果を取得するためのサンプルコード

ネイティブ HTTPS 呼び出し

  • 呼び出し方法

    サービスリクエストアドレス:https://green-cip.{region}.aliyuncs.com

    プロトコル:HTTPS

    メソッド:POST

  • 共通リクエストパラメータ

    拡張ドキュメントモデレーション API の入力パラメータには、共通リクエストパラメータと特定のインターフェースリクエストパラメータの両方があります。共通リクエストパラメータはすべてのインターフェースで必須です。これらのパラメータの詳細な説明を次の表に示します。

    名前

    タイプ

    必須

    説明

    Format

    String

    はい

    レスポンス形式。有効な値:

    • JSON (デフォルト)

    • XML

    Version

    String

    はい

    YYYY-MM-DDの日付形式の API バージョン番号。現在のバージョンは 2022-03-02 です。

    AccessKeyId

    String

    はい

    Alibaba Cloud がサービスへのアクセスに提供する AccessKey ID。

    Signature

    String

    はい

    署名文字列。署名の計算方法については、以下の署名メソッドを参照してください。

    SignatureMethod

    String

    はい

    署名メソッド。現在、HMAC-SHA1 がサポートされています。

    Timestamp

    String

    はい

    リクエストのタイムスタンプ。日付形式は ISO 8601 標準に準拠し、UTC 時間を使用する必要があります。

    形式は yyyy-MM-ddTHH:mm:ssZ です。

    たとえば、北京時間 2022 年 12 月 12 日 09:13:14 は、2022-12-12T01:13:14Z と表されます。

    SignatureVersion

    String

    はい

    署名アルゴリズムバージョン。値は 1.0 です。

    SignatureNonce

    String

    はい

    リプレイ攻撃を防ぐために使用される一意の乱数。異なるリクエストでは異なる乱数を使用する必要があります。

    Action

    String

    はい

    有効な値:

    • FileModeration

    • DescribeFileModerationResult

  • 共通レスポンスパラメータ

    各インターフェース呼び出しは、成功の有無にかかわらず、一意のアクセストークン (RequestId) を返します。その他のレスポンスパラメータは、呼び出されたサービスによって異なります。

    {
        "Msg": "OK",
        "Code": 200,
        "Data":
        {
            "TaskId": "AAAAA-BBBBB-CCCCCCCC"
        },
        "RequestId": "ABCD1234-1234-1234-1234-123****"
    }
  • コード例

    以下の例は読みやすくするためにフォーマットされています。実際の戻り値は改行やインデントでフォーマットされていません。

    • モデレーションタスクのコード例

      リクエスト例

      成功レスポンスの例

      {
          "Msg": "OK",
          "Code": 200,
          "Data":
          {
              "TaskId": "AAAAA-BBBBB-CCCCCCCC"
          },
          "RequestId": "ABCD1234-1234-1234-1234-123****"
      }
    • クエリタスクのコード例

      リクエスト例

      成功レスポンスの例

      {
          "Code": 200,
          "Data": {
              "DataId": "fileId*****",
              "PageResult": [
                  {
                      "ImageResult": [
                          {
                              "Description": "ドキュメントページの画像コンテンツモデレーション",
                              "LabelResult": [
                                  {
                                      "label": "nonLabel"
                                  }
                              ],
                              "Service": "baselineCheck"
                          }
                      ],
                      "ImageUrl": "http://oss.aliyundoc.com/a.png",
                      "PageNum": 1,
                      "TextResult": [
                          {
                              "Description": "ドキュメントページのテキストコンテンツモデレーション",
                              "Labels": "",
                              "RiskTips": "",
                              "RiskWords": "",
                              "Service": "pgc_detection",
                              "Text": "コンテンツモデレーションプロダクトテストケース a"
                          }
                      ]
                  },
                  ...
                  {
                      "ImageResult": [
                          {
                              "Description": "ドキュメントページの画像コンテンツモデレーション",
                              "LabelResult": [
                                  {
                                      "Confidence": 89.01,
                                      "Label": "pornographic_adultContent_tii"
                                  }
                              ],
                              "Service": "baselineCheck"
                          }
                      ],
                      "ImageUrl": "http://oss.aliyundoc.com/b.png",
                      "PageNum": 10,
                      "TextResult": [
                          {
                              "Description": "ドキュメントページのテキストコンテンツモデレーション",
                              "Labels": "contraband,sexual_content",
                              "RiskTips": "prohibited_prohibited_goods,sexual_films,sexual_vulgar",
                              "RiskWords": "リスクワード A,リスクワード B",
                              "Service": "ad_compliance_detection",
                              "Text": "コンテンツモデレーションプロダクトテストケース b"
                          }
                      ]
                  }
              ],
              "Url": "http://www.aliyundoc.com/a.docx"
          },
          "Message": "SUCCESS",
          "RequestId": "1D0854A7-AAAAA-BBBBBBB-CC8292AE5"
      }
  • 署名メソッド

    拡張ドキュメントモデレーションサービスでは、各アクセスリクエストに対して署名情報を含む認証が必要です。AccessKey ID と AccessKey Secret を使用した対称暗号化を使用して、リクエスト元の ID を検証します。

    AccessKey ID と AccessKey Secret は、Alibaba Cloud がユーザーに提供する認証情報であり、Alibaba Cloud 公式 Web サイトで取得および管理できます。AccessKey ID はユーザーを識別し、AccessKey Secret は機密にしておく必要があり、サーバー側で署名文字列を暗号化および検証するために使用されます。

    ユーザーは次のようにリクエストに署名できます。

    1. リクエストパラメータを使用して正規化されたクエリ文字列を作成します。

      1. Signature パラメータを除くすべてのリクエストパラメータを名前でアルファベット順にソートします。

      2. UTF-8 文字セットに基づいてパラメータ名と値を URL エンコードします。

        説明

        Java の java.net.URLEncoder など、application/x-www-form-urlencoded MIME タイプのルールに従ってエンコードする URL エンコードをサポートするライブラリを使用します。プラス記号 (+) は %20 に、アスタリスク (*) は %2A に、%7E はチルダ (~) に置き換えます。

        URL エンコードルールは次のとおりです。

        • 文字 A-Z、a-z、0-9、ハイフン (-)、アンダースコア (_)、ピリオド (.)、およびチルダ (~) はエンコードされません。

        • 標準範囲外の文字は、%XY の形式を使用してエンコードされます。ここで、XY は文字の ASCII コードを 16 進数で表します。たとえば、英語の二重引用符 (") は %22 としてエンコードされます。

        • 拡張 UTF-8 文字は %XY%ZA… としてエンコードされます。

        • スペース文字は、プラス記号 (+) ではなく %20 としてエンコードされます。

      3. エンコードされた名前と値を等号 (=) でつなぎます。

      4. & 記号を使用して文字列をアルファベット順に接続し、正規化されたクエリ文字列を形成します。

    2. 前の手順の正規化された文字列を使用して、署名計算用の文字列を構築します。

      StringToSign=
      HTTPMethod + "&" +
      percentEncode("/") + "&" +
      percentEncode(CanonicalizedQueryString)
      説明

      HTTPMethod は、リクエストに使用されるメソッド(POST など)です。 percentEncode(/) はスラッシュ (/) 文字のエンコードされた値であり、%2F です。 percentEncode(CanonicalizedQueryString) は、エンコードされた正規化されたクエリ文字列です。

    3. RFC2104 に従って署名文字列の HMAC 値を計算します。

      説明

      署名の計算キーは、ユーザーの AccessKey Secret の後に & (ASCII:38) を付けたものです。SHA1 ハッシュアルゴリズムが使用されます。

    4. HMAC 値を Base64 エンコードして署名 (Signature) を取得します。

    5. 署名値を Signature パラメータとしてリクエストパラメータに追加して、署名プロセスを完了します。

      説明

      署名値をコンテンツモデレーションサーバーに送信する場合、他のパラメータと同様に RFC3986 に従って URL エンコードする必要があります。