ドキュメントモデレーション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 を取得する」をご参照ください。
RAM 管理者として RAM コンソール にログオンします。
- RAM ユーザーを作成します。
詳細については、「RAM ユーザーを作成する」をご参照ください。
- 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_ID
と ALIBABA_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 ファイルに追加します。
dependencies に以下を含めます。
<dependency> <groupId>com.aliyun</groupId> <artifactId>green20220302</artifactId> <version>2.2.11</version> </dependency>
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 からドキュメントコンテンツを直接取得してレビューできます。
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>
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 からドキュメントを取得し、分析します。サーバーロールを設定するには、クラウド リソースアクセス認証ページ にアクセスしてください。
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>
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 を使用してファイルを取得できます。
pip をインストールするには、次のコマンドを実行します。
pip install alibabacloud_green20220302==2.2.11
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 からドキュメントコンテンツを直接取得してレビューできます。
pip をインストールするには、次のコマンドを実行します。
pip install alibabacloud_green20220302==2.2.11
OSS SDK をインストールします。
pip install oss2
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 からファイルを取得します。サーバーロールを設定するには、クラウド リソースアクセス認証ページ にアクセスしてください。
pip をインストールするには、次のコマンドを実行します。
pip install alibabacloud_green20220302==2.2.11
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 を使用してファイルを取得できます。
以下のコマンドを実行して、必要な依存関係を追加します。
composer require alibabacloud/green-20220302 2.2.10
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 に直接アクセスしてドキュメントコンテンツを取得し、レビューできます。
以下のコマンドを実行して、必要な依存関係を追加します。
composer require alibabacloud/green-20220302 2.2.10
OSS SDK をインストールします。
composer require aliyuncs/oss-sdk-php
PHP SDK を統合します。
ドキュメント検出タスクを送信するためのサンプルコード:
ドキュメント検出タスクの結果を取得する:
OSS ドキュメントを検出する
シナリオ
Alibaba Cloud Object Storage Service (OSS) に保存されているドキュメントファイルをレビューする必要がある場合は、サーバーロールを作成して Content Moderation サービスに OSS へのアクセス権を付与できます。ドキュメントレビューサービス バージョン 2.0 は、検査のためにサーバーロールを介して OSS からファイルを取得します。サーバーロールを設定するには、クラウド リソースアクセス認証ページ にアクセスしてください。
以下のコマンドを実行して、必要な依存関係を追加します。
composer require alibabacloud/green-20220302 2.2.10
PHP SDK を統合します。
ドキュメント検出タスクを送信するためのサンプルコード:
ドキュメント検出タスクの結果を取得する:
Go SDK
3 種類のドキュメント検出をサポートしています。
パブリックネットワーク経由でアクセス可能なドキュメントを検出する
シナリオ
レビューが必要なドキュメントがパブリックネットワークリンク経由でアクセス可能な場合、 バージョン 2.0 ドキュメントレビューサービスは、ドキュメントの URL を使用してレビューのためにファイルを取得できます。
Go SDK
次のコマンドで必要な依存関係を導入します。
go git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2
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 からドキュメントコンテンツを直接取得してレビューできます。
次のコマンドで必要な依存関係を導入します。
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
Go SDK を統合します。
次のコード例を使用して、ドキュメント検出タスクを送信します。
ドキュメント検出タスクの結果を取得します。
OSS ドキュメントを検出する
シナリオ
Alibaba Cloud Object Storage Service (OSS) に保存されているドキュメントファイルをレビューする必要がある場合は、サービスロールを作成することで、Content Moderation サービスに OSS へのアクセス権限を付与できます。Content Moderation バージョン 2.0 は、このサービスロールを通じてファイルを取得し、レビューします。サービスロールを設定するには、クラウド リソースアクセス認証ページ にアクセスしてください。
次のコマンドで必要な依存関係を導入します。
go git clone --branch v2.2.11 github.com/alibabacloud-go/green-20220302/v2
Go SDK を統合します。
次のコード例を使用して、ドキュメント検出タスクを送信します。
ドキュメント検出タスクの結果を取得します。
Node.js SDK
元のコード。Node.js SDK ソースコード にアクセスして詳細を確認してください。
3 種類のドキュメント検出をサポートしています。
インターネット経由でアクセス可能なドキュメントの検出
シナリオ
インターネットリンク経由でアクセス可能で、レビューが必要なドキュメントの場合、ドキュメントモデレーション 2.0 サービスは、ドキュメント URL を介してファイルを取得し、分析できます。
以下のコマンドを実行して、必要な依存関係を追加します。
npm install @alicloud/green20220302@2.2.10
Node.js SDK を統合します。
ドキュメントモデレーションタスクを送信するためのサンプルコード
ドキュメントモデレーションタスクの結果を取得するためのサンプル コード
ローカルドキュメントの検出
シナリオ
レビューするドキュメントがインターネットリンクのないローカルマシンに保存されている場合は、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードします。ドキュメントモデレーション 2.0 サービスは、OSS 内のドキュメントに直接アクセスしてレビューできます。
以下のコマンドを実行して、必要な依存関係を追加します。
npm install @alicloud/green20220302@2.2.10
OSS 依存関係をインストールします。
npm install ali-oss --save
Node.js SDK を統合します。
ドキュメントモデレーションタスクを送信するためのサンプルコード
ドキュメントモデレーションタスクの結果を取得するためのサンプルコード
OSS ドキュメントの検出
シナリオ
Alibaba Cloud Object Storage Service (OSS) に既に保存されているドキュメントの場合、サーバーロールを作成する権限を承認して、Content Moderation に OSS へのアクセス権を付与します。ドキュメントモデレーション 2.0 サービスは、サーバーロールを通じてドキュメントを取得し、分析します。サーバーロールの作成については、クラウド リソースアクセス認証ページ にアクセスしてください。
以下のコマンドを実行して、必要な依存関係を追加します。
npm install @alicloud/green20220302@2.2.10
Node.js SDK を統合します。
ドキュメントモデレーションタスクを送信するためのサンプルコード
ドキュメントモデレーションタスクの結果を取得するためのサンプルコード
C# SDK
元の C# SDK のソースコードについては、このリンク を参照してください。
3 種類のドキュメント検出をサポートしています。
パブリックネットワーク経由でアクセス可能なドキュメントを検出する
使用シナリオ
レビュー待ちのドキュメントがパブリックネットワークリンク経由でアクセス可能な場合、ドキュメントレビューサービスの 2.0 は、検査のためにドキュメントの URL を使用してファイルを取得できます。
次のコマンドを実行して、必要な依存関係を追加します。
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10
C# SDK を統合します。
ドキュメント検出タスクを送信するためのサンプルコード
ドキュメント検出タスクの結果を取得するためのサンプルコード
ローカルドキュメントを検出する
使用シナリオ
パブリックネットワークアクセスリンクのないローカルマシンに保存されているドキュメントをレビューする必要がある場合は、Content Moderation が提供する Object Storage Service (OSS) バケットにアップロードできます。ドキュメントレビューサービスの 2.0 は、OSS からコンテンツを直接取得してレビューできます。
次のコマンドを実行して、必要な依存関係を追加します。
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 の場合)を見つけ、最新バージョンを選択して、[インストール] をクリックします。
C# SDK を統合します。
ドキュメント検出タスクを送信するためのサンプルコード
ドキュメント検出タスクの結果を取得するためのサンプルコード
OSS ドキュメントを検出する
使用シナリオ
Alibaba Cloud Object Storage Service (OSS) に既に保存されているドキュメントをレビューする必要がある場合は、サーバーロールを作成する権限を承認して、Content Moderation サービスに OSS へのアクセス権を付与できます。ドキュメントレビュー 2.0 は、分析のためにサーバーロールを通じてファイルを取得します。サーバーロールを作成するには、クラウド リソースアクセス認証ページ にアクセスしてください。
次のコマンドを実行して、必要な依存関係を追加します。
dotnet add package AlibabaCloud.SDK.Green20220302 --version 2.2.10
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 は機密にしておく必要があり、サーバー側で署名文字列を暗号化および検証するために使用されます。
ユーザーは次のようにリクエストに署名できます。
リクエストパラメータを使用して正規化されたクエリ文字列を作成します。
Signature パラメータを除くすべてのリクエストパラメータを名前でアルファベット順にソートします。
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
としてエンコードされます。
エンコードされた名前と値を等号 (=) でつなぎます。
& 記号を使用して文字列をアルファベット順に接続し、正規化されたクエリ文字列を形成します。
前の手順の正規化された文字列を使用して、署名計算用の文字列を構築します。
StringToSign= HTTPMethod + "&" + percentEncode("/") + "&" + percentEncode(CanonicalizedQueryString)
説明HTTPMethod は、リクエストに使用されるメソッド(POST など)です。 percentEncode(/) はスラッシュ (/) 文字のエンコードされた値であり、
%2F
です。 percentEncode(CanonicalizedQueryString) は、エンコードされた正規化されたクエリ文字列です。RFC2104 に従って署名文字列の HMAC 値を計算します。
説明署名の計算キーは、ユーザーの AccessKey Secret の後に
&
(ASCII:38) を付けたものです。SHA1 ハッシュアルゴリズムが使用されます。HMAC 値を Base64 エンコードして署名 (Signature) を取得します。
署名値を Signature パラメータとしてリクエストパラメータに追加して、署名プロセスを完了します。
説明署名値をコンテンツモデレーションサーバーに送信する場合、他のパラメータと同様に RFC3986 に従って URL エンコードする必要があります。