Поделиться через


Краткое руководство. Использование клиентской библиотеки Content Moderator

Внимание

Azure Content Moderator устарел по состоянию на февраль 2024 г. и будет прекращен к февралю 2027 г. Она заменена безопасностью содержимого ИИ Azure, которая предлагает расширенные функции ИИ и улучшенную производительность.

Безопасность содержимого ИИ Azure — это комплексное решение, предназначенное для обнаружения вредоносного пользовательского и искусственного интеллекта, созданного содержимым в приложениях и службах. Безопасность содержимого ИИ Azure подходит для многих сценариев, таких как интернет-магазины, игровые компании, платформы социальных сообщений, корпоративные медиа-компании и поставщики решений для образования K-12. Ниже приведен обзор ее функций и возможностей.

  • API обнаружения текста и изображений: сканировать текст и изображения для сексуального содержимого, насилия, ненависти и самоповредения с несколькими уровнями серьезности.
  • Content Safety Studio: онлайн-инструмент, предназначенный для обработки потенциально оскорбительных, рискованных или нежелательных содержимого с помощью наших последних моделей машинного обучения режим палатки. Он предоставляет шаблоны и настраиваемые рабочие процессы, позволяющие пользователям создавать собственные системы con режим палатки ration.
  • Поддержка языка: Безопасность содержимого ИИ Azure поддерживает более 100 языков и специально обучается на английском, немецком, японском, испанском, французском, итальянском, португальском и китайском языках.

Безопасность содержимого ИИ Azure предоставляет надежное и гибкое решение для ваших потребностей в режим палатки. Переключившись с Content Moderator на безопасность содержимого ИИ Azure, вы можете воспользоваться новейшими инструментами и технологиями, чтобы гарантировать, что содержимое всегда модерировано до ваших точных спецификаций.

Узнайте больше о безопасности содержимого ИИ Azure и узнайте, как она может повысить уровень стратегии кон режим палатки терации.

Начало работы с клиентской библиотекой Azure Content Moderator для .NET. Выполните приведенные здесь действия, чтобы установить пакет NuGet и протестировать пример кода для выполнения базовых задач.

Content Moderator — это служба ИИ, позволяющая управлять содержимым, которое может носить оскорбительный характер или представлять опасность, либо нежелательным содержимым иного рода. Используйте службу модерации содержимого на основе ИИ, чтобы проверить текст, изображения и видео, а также автоматически применить флаги содержимого. Встройте в свое приложение программное обеспечение для фильтрации содержимого, чтобы обеспечить соответствие нормативным требованиям и настроить надлежащую среду для пользователей.

Клиентскую библиотеку Content Moderator для .NET можно использовать для такой задачи:

  • Модерация текста
  • Модерация изображений

Справочная документация | Исходный код библиотеки | Пакет (NuGet) | Примеры

Необходимые компоненты

  • Подписка Azure — создайте бесплатную учетную запись.
  • IDE Visual Studio или текущая версия .NET Core.
  • После получения подписки Azure создайте ресурс Content Moderator в портал Azure, чтобы получить ключ и конечную точку. Дождитесь, пока закончится развертывание, и нажмите кнопку Перейти к ресурсу.
    • Для подключения приложения к Content Moderator потребуется ключ и конечная точка из созданного ресурса. Ключ и конечная точка будут вставлены в приведенный ниже код в кратком руководстве.
    • Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.

Установка

Создание нового приложения C#

С помощью Visual Studio создайте приложение .NET Core.

Установка клиентской библиотеки

После создания проекта установите клиентскую библиотеку, щелкнув правой кнопкой мыши решение проекта в Обозревателе решений и выбрав пункт Управление пакетами NuGet. В открывшемся диспетчере пакетов выберите Просмотр, установите флажок Включить предварительные версии и выполните поиск по запросу Microsoft.Azure.CognitiveServices.ContentModerator. Выберите версию 2.0.0, а затем Установить.

Совет

Хотите просмотреть готовый файл с кодом для этого краткого руководства? Его можно найти на сайте GitHub, где размещены примеры кода для этого краткого руководства.

В каталоге проекта откройте файл Program.cs в предпочитаемом редакторе или интегрированной среде разработки. Добавьте следующие операторы using :

using Microsoft.Azure.CognitiveServices.ContentModerator;
using Microsoft.Azure.CognitiveServices.ContentModerator.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading;

В классе Program создайте переменные для ключа и конечной точки вашего ресурса.

Внимание

Перейдите на портал Azure. Если ресурс Content Moderator, созданный в соответствии с указаниями в разделе Предварительные требования, успешно развернут, нажмите кнопку Перейти к ресурсу в разделе Дальнейшие действия. Ключ и конечная точка располагаются на странице ключа и конечной точки ресурса в разделе управления ресурсами.

// Your Content Moderator subscription key is found in your Azure portal resource on the 'Keys' page.
private static readonly string SubscriptionKey = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE";
// Base endpoint URL. Found on 'Overview' page in Azure resource. For example: https://westus.api.cognitive.microsoft.com
private static readonly string Endpoint = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE";

Внимание

Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения см. в статье по безопасности служб ИИ Azure.

В методе main() приложения добавьте вызовы методов, используемых в этом кратком руководстве. Они будут созданы позже.

// Create an image review client
ContentModeratorClient clientImage = Authenticate(SubscriptionKey, Endpoint);
// Create a text review client
ContentModeratorClient clientText = Authenticate(SubscriptionKey, Endpoint);
// Create a human reviews client
ContentModeratorClient clientReviews = Authenticate(SubscriptionKey, Endpoint);
// Moderate text from text in a file
ModerateText(clientText, TextFile, TextOutputFile);
// Moderate images from list of image URLs
ModerateImages(clientImage, ImageUrlFile, ImageOutputFile);

Объектная модель

Следующие классы обрабатывают некоторые основные функции клиентской библиотеки Content Moderator для .NET.

Имя Описание
ContentModeratorClient Этот класс требуется для всех функций Content Moderator. Вы создаете его экземпляр с информацией о подписке и используете его для создания экземпляров других классов.
ImageModeration Этот класс предоставляет функции для анализа изображений на наличие содержимого для взрослых, личной информации или лиц людей.
TextModeration Этот класс предоставляет функции для анализа текста с целью определения языка, наличия ненормативной лексики, ошибок и личной информации.

Примеры кода

Эти фрагменты кода показывают, как выполнить следующие действия с помощью клиентской библиотеки Content Moderator для .NET:

аутентификация клиента;

В новом методе создайте клиентские объекты с использованием конечной точки и ключа.

public static ContentModeratorClient Authenticate(string key, string endpoint)
{
    ContentModeratorClient client = new ContentModeratorClient(new ApiKeyServiceClientCredentials(key));
    client.Endpoint = endpoint;

    return client;
}

Модерация текста

В следующем коде используется клиент Content Moderator для анализа текста и вывода результатов в консоль. В корне класса Program определите входные и выходные файлы:

// TEXT MODERATION
// Name of the file that contains text
private static readonly string TextFile = "TextFile.txt";
// The name of the file to contain the output from the evaluation.
private static string TextOutputFile = "TextModerationOutput.txt";

Затем в корне проекта добавьте файл TextFile.txt. Добавьте в этот файл свой текст или используйте текст из этого примера:

Is this a grabage email abcdef@abcd.com, phone: 4255550111, IP: 255.255.255.255, 1234 Main Boulevard, Panapolis WA 96555.
<offensive word> is the profanity here. Is this information PII? phone 4255550111

Затем в любом месте в классе Program определите метод модерации текста:

/*
 * TEXT MODERATION
 * This example moderates text from file.
 */
public static void ModerateText(ContentModeratorClient client, string inputFile, string outputFile)
{
    Console.WriteLine("--------------------------------------------------------------");
    Console.WriteLine();
    Console.WriteLine("TEXT MODERATION");
    Console.WriteLine();
    // Load the input text.
    string text = File.ReadAllText(inputFile);

    // Remove carriage returns
    text = text.Replace(Environment.NewLine, " ");
    // Convert string to a byte[], then into a stream (for parameter in ScreenText()).
    byte[] textBytes = Encoding.UTF8.GetBytes(text);
    MemoryStream stream = new MemoryStream(textBytes);

    Console.WriteLine("Screening {0}...", inputFile);
    // Format text

    // Save the moderation results to a file.
    using (StreamWriter outputWriter = new StreamWriter(outputFile, false))
    {
        using (client)
        {
            // Screen the input text: check for profanity, classify the text into three categories,
            // do autocorrect text, and check for personally identifying information (PII)
            outputWriter.WriteLine("Autocorrect typos, check for matching terms, PII, and classify.");

            // Moderate the text
            var screenResult = client.TextModeration.ScreenText("text/plain", stream, "eng", true, true, null, true);
            outputWriter.WriteLine(JsonConvert.SerializeObject(screenResult, Formatting.Indented));
        }

        outputWriter.Flush();
        outputWriter.Close();
    }

    Console.WriteLine("Results written to {0}", outputFile);
    Console.WriteLine();
}

Модерация изображений

В следующем коде используется клиент Content Moderator и объект ImageModeration для анализа удаленных изображений на наличие содержимого для взрослых и содержимого непристойного характера.

Примечание.

Можно также проанализировать содержимое локального изображения. Методы и операции, работающие с локальными изображениями, см. в справочной документации.

Получить образцы изображений

В корне класса Program определите входные и выходные файлы:

// IMAGE MODERATION
//The name of the file that contains the image URLs to evaluate.
private static readonly string ImageUrlFile = "ImageFiles.txt";
// The name of the file to contain the output from the evaluation.
private static string ImageOutputFile = "ImageModerationOutput.json";

Затем в корне проекта создайте входной файл ImageFiles.txt. В этом файле вы добавите URL-адреса изображений для анализа (по одному URL-адресу в каждой строке). Вы можете использовать следующий пример изображений:

https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg
https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png

Определение вспомогательного класса

Добавьте следующее определение класса в класс Program. Этот внутренний класс обработает результаты модерации изображений.

// Contains the image moderation results for an image, 
// including text and face detection results.
public class EvaluationData
{
    // The URL of the evaluated image.
    public string ImageUrl;

    // The image moderation results.
    public Evaluate ImageModeration;

    // The text detection results.
    public OCR TextDetection;

    // The face detection results;
    public FoundFaces FaceDetection;
}

Определение метода модерации изображений

Следующий метод выполняет перебор изображений по их URL-адресам в текстовом файле, создает экземпляр EvaluationData и анализирует изображение на наличие содержимого для взрослых и непристойного содержимого, текста и человеческих лиц. Затем он добавляет в список окончательный экземпляр EvaluationData и записывает в консоль полный список возвращенных данных.

Перебор изображений

/*
 * IMAGE MODERATION
 * This example moderates images from URLs.
 */
public static void ModerateImages(ContentModeratorClient client, string urlFile, string outputFile)
{
    Console.WriteLine("--------------------------------------------------------------");
    Console.WriteLine();
    Console.WriteLine("IMAGE MODERATION");
    Console.WriteLine();
    // Create an object to store the image moderation results.
    List<EvaluationData> evaluationData = new List<EvaluationData>();

    using (client)
    {
        // Read image URLs from the input file and evaluate each one.
        using (StreamReader inputReader = new StreamReader(urlFile))
        {
            while (!inputReader.EndOfStream)
            {
                string line = inputReader.ReadLine().Trim();
                if (line != String.Empty)
                {
                    Console.WriteLine("Evaluating {0}...", Path.GetFileName(line));
                    var imageUrl = new BodyModel("URL", line.Trim());

Анализ содержимого

Дополнительные сведения об атрибутах изображения, доступных в Content Moderator, см. в разделе Основные принципы модерации изображений.

            var imageData = new EvaluationData
            {
                ImageUrl = imageUrl.Value,

                // Evaluate for adult and racy content.
                ImageModeration =
                client.ImageModeration.EvaluateUrlInput("application/json", imageUrl, true)
            };
            Thread.Sleep(1000);

            // Detect and extract text.
            imageData.TextDetection =
                client.ImageModeration.OCRUrlInput("eng", "application/json", imageUrl, true);
            Thread.Sleep(1000);

            // Detect faces.
            imageData.FaceDetection =
                client.ImageModeration.FindFacesUrlInput("application/json", imageUrl, true);
            Thread.Sleep(1000);

            // Add results to Evaluation object
            evaluationData.Add(imageData);
        }
    }
}

Запись результатов модерации в файл

        // Save the moderation results to a file.
        using (StreamWriter outputWriter = new StreamWriter(outputFile, false))
        {
            outputWriter.WriteLine(JsonConvert.SerializeObject(
                evaluationData, Formatting.Indented));

            outputWriter.Flush();
            outputWriter.Close();
        }
        Console.WriteLine();
        Console.WriteLine("Image moderation results written to output file: " + outputFile);
        Console.WriteLine();
    }
}

Выполнение приложения

Запустите приложение, нажав кнопку Отладка в верхней части окна интегрированной среды разработки.

Очистка ресурсов

Если вы хотите очистить и удалить подписку на службы искусственного интеллекта Azure, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

Следующие шаги

Из этого краткого руководстве вы узнали, как модерировать содержимое с помощью библиотеки .NET для Content Moderator. Теперь узнайте больше о модерации изображений или другого мультимедиа, прочитав концептуальное руководство.

Начните работу с клиентской библиотекой Azure Content Moderator для Java. Выполните приведенные здесь действия, чтобы установить пакет Maven и протестировать пример кода для выполнения базовых задач.

Content Moderator — это служба ИИ, позволяющая управлять содержимым, которое может носить оскорбительный характер или представлять опасность, либо нежелательным содержимым иного рода. Используйте службу модерации содержимого на основе ИИ, чтобы проверить текст, изображения и видео, а также автоматически применить флаги содержимого. Встройте в свое приложение программное обеспечение для фильтрации содержимого, чтобы обеспечить соответствие нормативным требованиям и настроить надлежащую среду для пользователей.

Клиентскую библиотеку Content Moderator для Java можно использовать для такой задачи:

  • Модерация текста
  • Модерация изображений

Справочная документация | Исходный код библиотеки |Артефакт (Maven) | Примеры

Необходимые компоненты

  • подписка Azure — создайте бесплатную учетную запись.
  • Текущая версия пакета средств разработки Java (JDK).
  • Средство сборки Gradle или другой диспетчер зависимостей.
  • После получения подписки Azure создайте ресурс Content Moderator в портал Azure, чтобы получить ключ и конечную точку. Дождитесь, пока закончится развертывание, и нажмите кнопку Перейти к ресурсу.
    • Для подключения приложения к Content Moderator потребуется ключ и конечная точка из созданного ресурса. Ключ и конечная точка будут вставлены в приведенный ниже код в кратком руководстве.
    • Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.

Установка

Создание проекта Gradle

В окне консоли (например, cmd, PowerShell или Bash) создайте новый каталог для приложения и перейдите в него.

mkdir myapp && cd myapp

Выполните команду gradle init из рабочей папки. Эта команда создает необходимые файлы сборки для Gradle, включая build.gradle.kts, который используется во время выполнения для создания и настройки приложения.

gradle init --type basic

Когда появится запрос на выбор предметно-ориентированного языка, выберите Kotlin.

Установка клиентской библиотеки

Найдите файл build.gradle.kts и откройте его в предпочитаемой интегрированной среде разработки или текстовом редакторе. Затем скопируйте и вставьте в файл приведенную ниже конфигурацию сборки. Эта конфигурация определяет проект как приложение Java, точкой входа которого является класс ContentModeratorQuickstart. Она импортирует клиентскую библиотеку для Content Moderator и пакет SDK для GSON для сериализации JSON.

plugins {
    java
    application
}

application{ 
    mainClassName = "ContentModeratorQuickstart"
}

repositories{
    mavenCentral()
}

dependencies{
    compile(group = "com.microsoft.azure.cognitiveservices", name = "azure-cognitiveservices-contentmoderator", version = "1.0.2-beta")
    compile(group = "com.google.code.gson", name = "gson", version = "2.8.5")
}

Создание файла Java

В рабочей папке выполните следующую команду, чтобы создать исходную папку проекта.

mkdir -p src/main/java

Перейдите в новую папку и создайте файл с именем ContentModeratorQuickstart.java. Откройте его в предпочитаемом редакторе или интегрированной среде разработки и добавьте следующие операторы import:

import com.google.gson.*;

import com.microsoft.azure.cognitiveservices.vision.contentmoderator.*;
import com.microsoft.azure.cognitiveservices.vision.contentmoderator.models.*;

import java.io.*;
import java.util.*;
import java.util.concurrent.*;

Совет

Хотите просмотреть готовый файл с кодом для этого краткого руководства? Его можно найти на сайте GitHub, где размещены примеры кода для этого краткого руководства.

В классе приложения ContentModeratorQuickstart создайте переменные для ключа и конечной точки вашего ресурса.

Внимание

Перейдите на портал Azure. Если ресурс Content Moderator, созданный в соответствии с указаниями в разделе Предварительные требования, успешно развернут, нажмите кнопку Перейти к ресурсу в разделе Дальнейшие действия. Ключ и конечная точка располагаются на странице ключа и конечной точки ресурса в разделе управления ресурсами.

private static final String subscriptionKey = "<your-subscription-key>";
private static final String endpoint = "<your-api-endpoint>";

Внимание

Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения см. в статье по безопасности служб ИИ Azure.

В методе main приложения добавьте вызовы методов, используемых в этом кратком руководстве. Эти методы будут определены позже.

// Create a List in which to store the image moderation results.
List<EvaluationData> evaluationData = new ArrayList<EvaluationData>();

// Moderate URL images
moderateImages(client, evaluationData);
// Moderate text from file
moderateText(client);
// Create a human review
humanReviews(client);

Объектная модель

Следующие классы обрабатывают некоторые основные функции клиентской библиотеки Content Moderator для Java.

Имя Описание
ContentModeratorClient Этот класс требуется для всех функций Content Moderator. Вы создаете его экземпляр с информацией о подписке и используете его для создания экземпляров других классов.
ImageModeration Этот класс предоставляет функции для анализа изображений на наличие содержимого для взрослых, личной информации или лиц людей.
TextModerations Этот класс предоставляет функции для анализа текста с целью определения языка, наличия ненормативной лексики, ошибок и личной информации.

Примеры кода

Эти фрагменты кода показывают, как выполнить следующие действия с помощью клиентской библиотеки Content Moderator для Java:

аутентификация клиента;

В методе main приложения создайте объект ContentModeratorClient, используя значение конечной точки подписки и ключа подписки.

// Set CONTENT_MODERATOR_SUBSCRIPTION_KEY in your environment settings, with
// your key as its value.
// Set COMPUTER_MODERATOR_ENDPOINT in your environment variables with your Azure
// endpoint.
ContentModeratorClient client = ContentModeratorManager.authenticate(AzureRegionBaseUrl.fromString(endpoint),
        "CONTENT_MODERATOR_SUBSCRIPTION_KEY");

Модерация текста

Настройка примера текста

В верхней части класса ContentModeratorQuickstart определите ссылку на локальный текстовый файл. Добавьте TXT-файл в каталог проекта и введите текст, который необходимо проанализировать.

// TEXT MODERATION variable
private static File textFile = new File("src\\main\\resources\\TextModeration.txt");

Анализ текста

Создайте метод, считывающий TXT-файл и вызывающий метод screenText в каждой строке.

public static void moderateText(ContentModeratorClient client) {
    System.out.println("---------------------------------------");
    System.out.println("MODERATE TEXT");
    System.out.println();

    try (BufferedReader inputStream = new BufferedReader(new FileReader(textFile))) {
        String line;
        Screen textResults = null;
        // For formatting the printed results
        Gson gson = new GsonBuilder().setPrettyPrinting().create();

        while ((line = inputStream.readLine()) != null) {
            if (line.length() > 0) {
                textResults = client.textModerations().screenText("text/plain", line.getBytes(), null);
                // Uncomment below line to print in console
                // System.out.println(gson.toJson(textResults).toString());
            }
        }

Добавьте следующий код, чтобы вывести результаты модерации в JSON-файл в каталоге проекта.

System.out.println("Text moderation status: " + textResults.status().description());
System.out.println();

// Create output results file to TextModerationOutput.json
BufferedWriter writer = new BufferedWriter(
        new FileWriter(new File("src\\main\\resources\\TextModerationOutput.json")));
writer.write(gson.toJson(textResults).toString());
System.out.println("Check TextModerationOutput.json to see printed results.");
System.out.println();
writer.close();

Закройте операторы try и catch для завершения метода.

    } catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
}

Модерация изображений

Настройка примера изображения

В новом методе создайте объект BodyModelModel с заданной строкой URL-адреса, указывающей на изображение.

public static void moderateImages(ContentModeratorClient client, List<EvaluationData> resultsList) {
    System.out.println();
    System.out.println("---------------------------------------");
    System.out.println("MODERATE IMAGES");
    System.out.println();

    try {
        String urlString = "https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg";
        // Evaluate each line of text
        BodyModelModel url = new BodyModelModel();
        url.withDataRepresentation("URL");
        url.withValue(urlString);
        // Save to EvaluationData class for later
        EvaluationData imageData = new EvaluationData();
        imageData.ImageUrl = url.value();

Определение вспомогательного класса

Затем в файле ContentModeratorQuickstart.java добавьте следующее определение класса в класс ContentModeratorQuickstart. Этот внутренний класс используется в процессе модерации изображений.

// Contains the image moderation results for an image, including text and face
// detection from the image.
public static class EvaluationData {
    // The URL of the evaluated image.
    public String ImageUrl;
    // The image moderation results.
    public Evaluate ImageModeration;
    // The text detection results.
    public OCR TextDetection;
    // The face detection results;
    public FoundFaces FaceDetection;
}

Анализ содержимого

Эта строка кода проверяет изображение по указанному URL-адресу на предмет содержимого для взрослых и непристойного характера. Описание такого содержимого см. в концептуальном руководстве по модерации изображений.

// Evaluate for adult and racy content.
imageData.ImageModeration = client.imageModerations().evaluateUrlInput("application/json", url,
        new EvaluateUrlInputOptionalParameter().withCacheImage(true));
Thread.sleep(1000);

Проверка на наличие текста

Эта строка кода проверяет изображение на наличие видимого текста.

// Detect and extract text from image.
imageData.TextDetection = client.imageModerations().oCRUrlInput("eng", "application/json", url,
        new OCRUrlInputOptionalParameter().withCacheImage(true));
Thread.sleep(1000);

Проверка на наличие лиц

Эта строка кода проверяет изображение на наличие видимых лиц людей.

// Detect faces.
imageData.FaceDetection = client.imageModerations().findFacesUrlInput("application/json", url,
        new FindFacesUrlInputOptionalParameter().withCacheImage(true));
Thread.sleep(1000);

Наконец, сохраните возвращенную информацию в списке EvaluationData.

resultsList.add(imageData);

После цикла while добавьте следующий код, который выводит результаты на консоль и в выходной файл src/main/resources/ModerationOutput.json.

// Save the moderation results to a file.
// ModerationOutput.json contains the output from the evaluation.
// Relative paths are relative to the execution directory (where pom.xml is
// located).
BufferedWriter writer = new BufferedWriter(
        new FileWriter(new File("src\\main\\resources\\ImageModerationOutput.json")));
// For formatting the printed results
Gson gson = new GsonBuilder().setPrettyPrinting().create();

writer.write(gson.toJson(resultsList).toString());
System.out.println("Check ImageModerationOutput.json to see printed results.");
writer.close();

Закройте оператор try и добавьте оператор catch для завершения метода.

} catch (Exception e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
}

Выполнение приложения

Чтобы создать приложение, выполните следующую команду:

gradle build

Запустите приложение, выполнив команду gradle run:

gradle run

Затем перейдите к файлу src/main/resources/ModerationOutput.json и просмотрите результаты модерации вашего содержимого.

Очистка ресурсов

Если вы хотите очистить и удалить подписку на службы искусственного интеллекта Azure, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

Следующие шаги

В этом кратком руководстве вы узнали, как использовать библиотеку Java для Content Moderator для выполнения задач модерации. Теперь узнайте больше о модерации изображений или другого мультимедиа, прочитав концептуальное руководство.

Приступайте к работе с клиентской библиотекой Azure Content Moderator для Python. Выполните приведенные здесь действия, чтобы установить пакет PiPy и протестировать пример кода для выполнения базовых задач.

Content Moderator — это служба ИИ, позволяющая управлять содержимым, которое может носить оскорбительный характер или представлять опасность, либо нежелательным содержимым иного рода. Используйте службу модерации содержимого на основе ИИ, чтобы проверить текст, изображения и видео, а также автоматически применить флаги содержимого. Встройте в свое приложение программное обеспечение для фильтрации содержимого, чтобы обеспечить соответствие нормативным требованиям и настроить надлежащую среду для пользователей.

Клиентскую библиотеку Content Moderator для Python можно использовать для следующих задач:

  • Модерация текста
  • Использование пользовательского списка терминов
  • Модерация изображений
  • Использование пользовательского списка изображений

Справочная документация | Исходный код библиотеки | Пакет (PiPy) | Примеры

Необходимые компоненты

  • Подписка Azure — создайте бесплатную учетную запись.
  • Python 3.x
    • Установка Python должна включать pip. Чтобы проверить, установлен ли pip, выполните команду pip --version в командной строке. Чтобы использовать pip, установите последнюю версию Python.
  • После получения подписки Azure создайте ресурс Content Moderator в портал Azure, чтобы получить ключ и конечную точку. Дождитесь, пока закончится развертывание, и нажмите кнопку Перейти к ресурсу.
    • Для подключения приложения к Content Moderator потребуется ключ и конечная точка из созданного ресурса. Ключ и конечная точка будут вставлены в приведенный ниже код в кратком руководстве.
    • Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.

Установка

Установка клиентской библиотеки

После установки Python вы можете установить клиентскую библиотеку Content Moderator с помощью следующей команды:

pip install --upgrade azure-cognitiveservices-vision-contentmoderator

Создание приложения Python

Создайте скрипт Python и откройте его в предпочитаемом редакторе или интегрированной среде разработки. В начало файла добавьте следующие инструкции import.

import os.path
from pprint import pprint
import time
from io import BytesIO
from random import random
import uuid

from azure.cognitiveservices.vision.contentmoderator import ContentModeratorClient
import azure.cognitiveservices.vision.contentmoderator.models
from msrest.authentication import CognitiveServicesCredentials

Совет

Хотите просмотреть готовый файл с кодом для этого краткого руководства? Его можно найти на сайте GitHub, где размещены примеры кода для этого краткого руководства.

Затем создайте переменные для ключа и расположения конечной точки ресурса.

Внимание

Перейдите на портал Azure. Если ресурс Content Moderator, созданный в соответствии с указаниями в разделе Предварительные требования, успешно развернут, нажмите кнопку Перейти к ресурсу в разделе Дальнейшие действия. Ключ и конечная точка располагаются на странице ключа и конечной точки ресурса в разделе управления ресурсами.

CONTENT_MODERATOR_ENDPOINT = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE"
subscription_key = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE"

Внимание

Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения см. в статье по безопасности служб ИИ Azure.

Объектная модель

Следующие классы обрабатывают некоторые основные функции клиентской библиотеки Content Moderator для Python.

Имя Описание
ContentModeratorClient Этот класс требуется для всех функций Content Moderator. Вы создаете его экземпляр с информацией о подписке и используете его для создания экземпляров других классов.
ImageModerationOperations Этот класс предоставляет функции для анализа изображений на наличие содержимого для взрослых, личной информации или лиц людей.
TextModerationOperations Этот класс предоставляет функции для анализа текста с целью определения языка, наличия ненормативной лексики, ошибок и личной информации.

Примеры кода

Эти фрагменты кода показывают, как выполнить следующие действия с помощью клиентской библиотеки Content Moderator для Python:

аутентификация клиента;

Создайте экземпляр клиента с конечной точкой и ключом. Создайте объект CognitiveServicesCredentials](/python/api/msrest/msrest.authentication.cognitiveservicescredentials с ключом и используйте его с конечной точкой для создания объекта ContentModeratorClient .

client = ContentModeratorClient(
    endpoint=CONTENT_MODERATOR_ENDPOINT,
    credentials=CognitiveServicesCredentials(subscription_key)
)

Модерация текста

В следующем коде используется клиент Content Moderator для анализа текста и вывода результатов в консоль. Сначала создайте папку text_files/ в корне проекта и добавьте в нее файл content_moderator_text_moderation.txt. Добавьте в этот файл свой текст или используйте текст из этого примера:

Is this a grabage email abcdef@abcd.com, phone: 4255550111, IP: 255.255.255.255, 1234 Main Boulevard, Panapolis WA 96555.
<offensive word> is the profanity here. Is this information PII? phone 2065550111

Добавьте ссылку на новую папку.

TEXT_FOLDER = os.path.join(os.path.dirname(
    os.path.realpath(__file__)), "text_files")

Затем добавьте в скрипт Python следующий код.

# Screen the input text: check for profanity,
# do autocorrect text, and check for personally identifying
# information (PII)
with open(os.path.join(TEXT_FOLDER, 'content_moderator_text_moderation.txt'), "rb") as text_fd:
    screen = client.text_moderation.screen_text(
        text_content_type="text/plain",
        text_content=text_fd,
        language="eng",
        autocorrect=True,
        pii=True
    )
    assert isinstance(screen, Screen)
    pprint(screen.as_dict())

Использование пользовательского списка терминов

Следующий код демонстрирует, как модерировать текст с помощью пользовательского списка терминов. Класс ListManagementTermListsOperations предназначен для создания списка терминов, управления отдельными терминами и проверки текста на наличие терминов из списка.

Создание файла с текстом

Для работы с текстом сначала создайте папку text_files/ в корне проекта и добавьте в нее файл content_moderator_term_list.txt. Этот файл должен содержать текст, который будет проверяться по списку терминов. Вы можете использовать следующий пример текста:

This text contains the terms "term1" and "term2".

Добавьте ссылку на папку, если она еще не определена.

TEXT_FOLDER = os.path.join(os.path.dirname(
    os.path.realpath(__file__)), "text_files")

Создать список

Добавьте следующий код в скрипт Python, чтобы создать пользовательский список терминов и сохранить значение его идентификатора.

#
# Create list
#
print("\nCreating list")
custom_list = client.list_management_term_lists.create(
    content_type="application/json",
    body={
        "name": "Term list name",
        "description": "Term list description",
    }
)
print("List created:")
assert isinstance(custom_list, TermList)
pprint(custom_list.as_dict())
list_id = custom_list.id

Определение сведений о списке

Идентификатор списка можно использовать для изменения его имени и описания.

#
# Update list details
#
print("\nUpdating details for list {}".format(list_id))
updated_list = client.list_management_term_lists.update(
    list_id=list_id,
    content_type="application/json",
    body={
        "name": "New name",
        "description": "New description"
    }
)
assert isinstance(updated_list, TermList)
pprint(updated_list.as_dict())

Добавление термина в список

Следующий код добавляет в список термины "term1" и "term2".

#
# Add terms
#
print("\nAdding terms to list {}".format(list_id))
client.list_management_term.add_term(
    list_id=list_id,
    term="term1",
    language="eng"
)
client.list_management_term.add_term(
    list_id=list_id,
    term="term2",
    language="eng"
)

Получение всех терминов из списка

Идентификатор списка можно использовать для получения всех терминов из списка.

#
# Get all terms ids
#
print("\nGetting all term IDs for list {}".format(list_id))
terms = client.list_management_term.get_all_terms(
    list_id=list_id, language="eng")
assert isinstance(terms, Terms)
terms_data = terms.data
assert isinstance(terms_data, TermsData)
pprint(terms_data.as_dict())

Обновление индекса списка

При добавлении терминов в список или их удалении оттуда необходимо обновить индекс, прежде чем можно будет использовать обновленный список.

#
# Refresh the index
#
print("\nRefreshing the search index for list {}".format(list_id))
refresh_index = client.list_management_term_lists.refresh_index_method(
    list_id=list_id, language="eng")
assert isinstance(refresh_index, RefreshIndex)
pprint(refresh_index.as_dict())

print("\nWaiting {} minutes to allow the server time to propagate the index changes.".format(
    LATENCY_DELAY))
time.sleep(LATENCY_DELAY * 60)

Проверка текста на наличие терминов из списка

Основная задача пользовательского списка терминов заключается в проверке текста на наличие терминов, содержащихся в списке.

#
# Screen text
#
with open(os.path.join(TEXT_FOLDER, 'content_moderator_term_list.txt'), "rb") as text_fd:
    screen = client.text_moderation.screen_text(
        text_content_type="text/plain",
        text_content=text_fd,
        language="eng",
        autocorrect=False,
        pii=False,
        list_id=list_id
    )
    assert isinstance(screen, Screen)
    pprint(screen.as_dict())

Удаление термина из списка

Следующий код удаляет термин "term1" из списка.

#
# Remove terms
#
term_to_remove = "term1"
print("\nRemove term {} from list {}".format(term_to_remove, list_id))
client.list_management_term.delete_term(
    list_id=list_id,
    term=term_to_remove,
    language="eng"
)

Удаление всех терминов из списка

Используйте следующий код, чтобы удалить все термины из списка.

#
# Delete all terms
#
print("\nDelete all terms in the image list {}".format(list_id))
client.list_management_term.delete_all_terms(
    list_id=list_id, language="eng")

Удаление списка

Используйте следующий код, чтобы удалить пользовательский список терминов.

#
# Delete list
#
print("\nDelete the term list {}".format(list_id))
client.list_management_term_lists.delete(list_id=list_id)

Модерация изображений

В следующем коде используется клиент Content Moderator и объект ImageModerationOperations для анализа изображений на наличие содержимого для взрослых и содержимого непристойного характера.

Получить образцы изображений

Определите ссылку на изображения для анализа.

IMAGE_LIST = [
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg",
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png"
]

Затем добавьте следующий код для последовательного анализа изображений. Все остальные примеры кода из этого раздела будут добавляться в этот цикл.

for image_url in IMAGE_LIST:
    print("\nEvaluate image {}".format(image_url))

Проверка на наличие содержимого для взрослых и содержимого непристойного характера

Следующий код проверяет изображение по указанному URL-адресу на наличие содержимого для взрослых и содержимого непристойного характера, а затем выводит результаты в консоль. См. также о принципах модерации изображений.

print("\nEvaluate for adult and racy content.")
evaluation = client.image_moderation.evaluate_url_input(
    content_type="application/json",
    cache_image=True,
    data_representation="URL",
    value=image_url
)
assert isinstance(evaluation, Evaluate)
pprint(evaluation.as_dict())

Проверка на наличие распознаваемого текста

Следующий код проверяет изображение на наличие распознаваемого текста, а затем выводит результаты в консоль.

print("\nDetect and extract text.")
evaluation = client.image_moderation.ocr_url_input(
    language="eng",
    content_type="application/json",
    data_representation="URL",
    value=image_url,
    cache_image=True,
)
assert isinstance(evaluation, OCR)
pprint(evaluation.as_dict())

Проверка на наличие лиц

Следующий код проверяет изображение на наличие лиц, а затем выводит результаты в консоль.

print("\nDetect faces.")
evaluation = client.image_moderation.find_faces_url_input(
    content_type="application/json",
    cache_image=True,
    data_representation="URL",
    value=image_url
)
assert isinstance(evaluation, FoundFaces)
pprint(evaluation.as_dict())

Использование пользовательского списка изображений

Следующий код демонстрирует, как модерировать изображения с помощью настраиваемого списка изображений. Эта функция полезна, если платформа часто получает экземпляры одного набора изображений, которые требуется экранировать. Сохраняя список этих конкретных образов, вы можете повысить производительность. Класс ListManagementImageListsOperations предназначен для создания списка изображений, управления отдельными изображениями списка и сравнения других изображений с изображениями из списка.

Создайте следующие текстовые переменные, чтобы указать URL-адреса изображений, которые будут использоваться в этом сценарии.

IMAGE_LIST = {
    "Sports": [
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample6.png",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample9.png"
    ],
    "Swimsuit": [
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample1.jpg",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample3.png",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
        "https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png"
    ]
}

IMAGES_TO_MATCH = [
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample1.jpg",
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample4.png",
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample5.png",
    "https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png"
]

Примечание.

Выше показан не полноценный список изображений, а пример списка изображений, которые будут добавлены в раздел кода add images.

Создание списка изображений

Добавьте следующий код, чтобы создать список изображений и сохранить ссылку на его идентификатор.

#
# Create list
#
print("Creating list MyList\n")
custom_list = client.list_management_image_lists.create(
    content_type="application/json",
    body={
        "name": "MyList",
        "description": "A sample list",
        "metadata": {
            "key_one": "Acceptable",
            "key_two": "Potentially racy"
        }
    }
)
print("List created:")
assert isinstance(custom_list, ImageList)
pprint(custom_list.as_dict())
list_id = custom_list.id

Добавление изображений в список

Следующий код добавляет все изображения в список.

print("\nAdding images to list {}".format(list_id))
index = {}  # Keep an index url to id for later removal
for label, urls in IMAGE_LIST.items():
    for url in urls:
        image = add_images(list_id, url, label)
        if image:
            index[url] = image.content_id

Определите вспомогательную функцию add_images в любом месте скрипта.

#
# Add images
#
def add_images(list_id, image_url, label):
    """Generic add_images from url and label."""
    print("\nAdding image {} to list {} with label {}.".format(
        image_url, list_id, label))
    try:
        added_image = client.list_management_image.add_image_url_input(
            list_id=list_id,
            content_type="application/json",
            data_representation="URL",
            value=image_url,
            label=label
        )
    except APIErrorException as err:
        # sample4 will fail
        print("Unable to add image to list: {}".format(err))
    else:
        assert isinstance(added_image, Image)
        pprint(added_image.as_dict())
        return added_image

Получение изображений из списка

Следующий код выводит имена всех изображений, содержащихся в списке.

#
# Get all images ids
#
print("\nGetting all image IDs for list {}".format(list_id))
image_ids = client.list_management_image.get_all_image_ids(list_id=list_id)
assert isinstance(image_ids, ImageIds)
pprint(image_ids.as_dict())

Обновление сведений о списке

Идентификатор списка можно использовать для обновления имени и описания списка.

#
# Update list details
#
print("\nUpdating details for list {}".format(list_id))
updated_list = client.list_management_image_lists.update(
    list_id=list_id,
    content_type="application/json",
    body={
        "name": "Swimsuits and sports"
    }
)
assert isinstance(updated_list, ImageList)
pprint(updated_list.as_dict())

Получение сведений о списке

Используйте следующий код, чтобы получить текущие сведения о списке.

#
# Get list details
#
print("\nGetting details for list {}".format(list_id))
list_details = client.list_management_image_lists.get_details(
    list_id=list_id)
assert isinstance(list_details, ImageList)
pprint(list_details.as_dict())

Обновление индекса списка

При добавлении изображений в список или их удалении оттуда необходимо обновить индекс списка, прежде чем его можно будет использовать для проверки других изображений.

#
# Refresh the index
#
print("\nRefreshing the search index for list {}".format(list_id))
refresh_index = client.list_management_image_lists.refresh_index_method(
    list_id=list_id)
assert isinstance(refresh_index, RefreshIndex)
pprint(refresh_index.as_dict())

print("\nWaiting {} minutes to allow the server time to propagate the index changes.".format(
    LATENCY_DELAY))
time.sleep(LATENCY_DELAY * 60)

Сопоставление изображений с изображениями из списка

Основная задача списка изображений заключается в сопоставлении анализируемых изображений с изображениями, содержащимися в списке.

#
# Match images against the image list.
#
for image_url in IMAGES_TO_MATCH:
    print("\nMatching image {} against list {}".format(image_url, list_id))
    match_result = client.image_moderation.match_url_input(
        content_type="application/json",
        list_id=list_id,
        data_representation="URL",
        value=image_url,
    )
    assert isinstance(match_result, MatchResponse)
    print("Is match? {}".format(match_result.is_match))
    print("Complete match details:")
    pprint(match_result.as_dict())

Удаление изображения из списка

Следующий код удаляет элемент из списка. В нашем примере это изображение, которое не соответствует категории списка.

#
# Remove images
#
correction = "https://moderatorsampleimages.blob.core.windows.net/samples/sample16.png"
print("\nRemove image {} from list {}".format(correction, list_id))
client.list_management_image.delete_image(
    list_id=list_id,
    image_id=index[correction]
)

Удаление всех изображений из списка

Используйте следующий код, чтобы очистить список изображений.

#
# Delete all images
#
print("\nDelete all images in the image list {}".format(list_id))
client.list_management_image.delete_all_images(list_id=list_id)

Удаление списка изображений

Используйте следующий код, чтобы удалить указанный список изображений.

#
# Delete list
#
print("\nDelete the image list {}".format(list_id))
client.list_management_image_lists.delete(list_id=list_id)

Выполнение приложения

Запустите приложение, выполнив команду python для файла quickstart.

python quickstart-file.py

Очистка ресурсов

Если вы хотите очистить и удалить подписку на службы искусственного интеллекта Azure, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

Следующие шаги

Из этого краткого руководстве вы узнали, как модерировать содержимое с помощью библиотеки Python для Content Moderator. Теперь узнайте больше о модерации изображений или другого мультимедиа, прочитав концептуальное руководство.

Сведения о начале работы с REST API Azure Content Moderator.

Content Moderator — это служба ИИ, позволяющая управлять содержимым, которое может носить оскорбительный характер или представлять опасность, либо нежелательным содержимым иного рода. Используйте службу модерации содержимого на основе ИИ, чтобы проверить текст, изображения и видео, а также автоматически применить флаги содержимого. Встройте в свое приложение программное обеспечение для фильтрации содержимого, чтобы обеспечить соответствие нормативным требованиям и настроить надлежащую среду для пользователей.

Используйте REST API Content Moderator для выполнения таких задач:

  • Модерация текста
  • Модерация изображений

Необходимые компоненты

  • Подписка Azure — создайте бесплатную учетную запись.
  • После получения подписки Azure создайте ресурс Content Moderator в портал Azure, чтобы получить ключ и конечную точку. Дождитесь, пока закончится развертывание, и нажмите кнопку Перейти к ресурсу.
    • Для подключения приложения к Content Moderator потребуется ключ и конечная точка из созданного ресурса. Ключ и конечная точка будут вставлены в приведенный ниже код в кратком руководстве.
    • Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.
  • PowerShell версии 6.0 и выше или аналогичное приложение командной строки.

Модерация текста

Вы будете использовать команды, аналогичные приведенным ниже, чтобы вызывать API Content Moderator для анализа текста и вывода результатов в консоль.

curl -v -X POST "https://westus.api.cognitive.microsoft.com/contentmoderator/moderate/v1.0/ProcessText/Screen?autocorrect=True&PII=True&classify=True&language={string}"
-H "Content-Type: text/plain"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
--data-ascii "Is this a crap email abcdef@abcd.com, phone: 6657789887, IP: 255.255.255.255, 1 Microsoft Way, Redmond, WA 98052"

Скопируйте команду в текстовый редактор и внесите следующие изменения:

  1. Назначьте Ocp-Apim-Subscription-Key действительному ключу подписки на службу "Распознавание лиц".

    Внимание

    Обязательно удалите ключ из кода, когда завершите работу, и ни в коем случае не публикуйте его в открытом доступе. Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения см. в статье по безопасности служб ИИ Azure.

  2. Измените первую часть URL-адреса запроса, указав конечную точку, соответствующую ключу подписки.

    Примечание.

    Новые ресурсы, созданные после 1 июля 2019 г., будут использовать пользовательские имена поддоменов. Дополнительные сведения и полный список региональных конечных точек см. в разделе "Пользовательские имена поддомена" для служб ИИ Azure.

  3. При необходимости измените текст запроса на любую строку текста, которую нужно проанализировать.

После внесения изменений откройте командную строку и введите новую команду.

Просмотр результатов

В окне консоли отобразятся результаты модерации текста в формате JSON. Например:

{
  "OriginalText": "Is this a <offensive word> email abcdef@abcd.com, phone: 6657789887, IP: 255.255.255.255,\n1 Microsoft Way, Redmond, WA 98052\n",
  "NormalizedText": "Is this a <offensive word> email abide@ abed. com, phone: 6657789887, IP: 255. 255. 255. 255, \n1 Microsoft Way, Redmond, WA 98052",
  "AutoCorrectedText": "Is this a <offensive word> email abide@ abed. com, phone: 6657789887, IP: 255. 255. 255. 255, \n1 Microsoft Way, Redmond, WA 98052",
  "Misrepresentation": null,
  "PII": {
    "Email": [
      {
        "Detected": "abcdef@abcd.com",
        "SubType": "Regular",
        "Text": "abcdef@abcd.com",
        "Index": 21
      }
    ],
    "IPA": [
      {
        "SubType": "IPV4",
        "Text": "255.255.255.255",
        "Index": 61
      }
    ],
    "Phone": [
      {
        "CountryCode": "US",
        "Text": "6657789887",
        "Index": 45
      }
    ],
    "Address": [
      {
        "Text": "1 Microsoft Way, Redmond, WA 98052",
        "Index": 78
      }
    ]
  },
 "Classification": {
    "Category1": 
    {
      "Score": 0.5
    },
    "Category2": 
    {
      "Score": 0.6
    },
    "Category3": 
    {
      "Score": 0.5
    },
    "ReviewRecommended": true
  },
  "Language": "eng",
  "Terms": [
    {
      "Index": 10,
      "OriginalIndex": 10,
      "ListId": 0,
      "Term": "<offensive word>"
    }
  ],
  "Status": {
    "Code": 3000,
    "Description": "OK",
    "Exception": null
  },
  "TrackingId": "1717c837-cfb5-4fc0-9adc-24859bfd7fac"
}

Дополнительные сведения об атрибутах текста, доступных в Content Moderator, см. в разделе Основные принципы модерации текста.

Модерация изображений

Вы будете использовать команды, аналогичные приведенным ниже, чтобы вызывать API Content Moderator для модерации изображения из удаленного расположения и вывода результатов в консоль.

curl -v -X POST "https://westus.api.cognitive.microsoft.com/contentmoderator/moderate/v1.0/ProcessImage/Evaluate?CacheImage={boolean}" 
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: {subscription key}" 
--data-ascii "{\"DataRepresentation\":\"URL\", \"Value\":\"https://moderatorsampleimages.blob.core.windows.net/samples/sample.jpg\"}"

Скопируйте команду в текстовый редактор и внесите следующие изменения:

  1. Назначьте Ocp-Apim-Subscription-Key действительному ключу подписки на службу "Распознавание лиц".
  2. Измените первую часть URL-адреса запроса, указав конечную точку, соответствующую ключу подписки.
  3. При необходимости измените URL-адрес "Value" в тексте запроса на любое изображение из удаленного расположения, для которого нужно выполнить модерацию.

Совет

Вы также можете выполнить модерацию локальных изображений, передав их байтовые данные в текст запроса. Инструкции см. в справочной документации.

После внесения изменений откройте командную строку и введите новую команду.

Просмотр результатов

В окне консоли отобразятся результаты модерации изображения в формате JSON.

{
  "AdultClassificationScore": x.xxx,
  "IsImageAdultClassified": <Bool>,
  "RacyClassificationScore": x.xxx,
  "IsImageRacyClassified": <Bool>,
  "AdvancedInfo": [],
  "Result": false,
  "Status": {
    "Code": 3000,
    "Description": "OK",
    "Exception": null
  },
  "TrackingId": "<Request Tracking Id>"
}

Дополнительные сведения об атрибутах изображения, доступных в Content Moderator, см. в разделе Основные принципы модерации изображений.

Очистка ресурсов

Если вы хотите очистить и удалить подписку на службы искусственного интеллекта Azure, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

Следующие шаги

Из этого краткого руководстве вы узнали, как модерировать содержимое с помощью REST API Content Moderator. Теперь узнайте больше о модерации изображений или другого мультимедиа, прочитав концептуальное руководство.