Inicio rápido: Uso de la biblioteca cliente de Content Moderator

Importante

Azure Content Moderator quedará en desuso en febrero de 2024 y se retirará en febrero de 2027. Será reemplazado por Seguridad del contenido de Azure AI, que ofrece características avanzadas de IA y un rendimiento mejorado.

Seguridad del contenido de Azure AI es una solución completa diseñada para detectar contenido perjudicial generado por el usuario y generado por IA en aplicaciones y servicios. Seguridad del contenido de Azure AI es adecuada para muchos escenarios, como marketplaces en línea, empresas de juegos, plataformas de mensajería social, empresas de medios empresariales y proveedores de soluciones para educación K-12. Esta es una introducción a sus características y funcionalidades:

  • API de detección de texto e imágenes: examina texto e imágenes para detectar contenido sexual, violencia, odio y autolesión con varios niveles de gravedad.
  • Content Safety Studio: una herramienta en línea diseñada para controlar todo aquel contenido que sea potencialmente ofensivo, arriesgado o no deseable mediante nuestros últimos modelos de ML de moderación de contenido. Proporciona plantillas y flujos de trabajo personalizados que permiten a los usuarios crear sus propios sistemas de moderación de contenido.
  • Compatibilidad con idiomas: Seguridad del contenido de Azure AI admite más de 100 idiomas y está entrenada específicamente en inglés, alemán, japonés, español, francés, italiano, portugués y chino.

Seguridad del contenido de Azure AI proporciona una solución sólida y flexible para sus necesidades de moderación de contenido. Al cambiar de Content Moderator a Seguridad del contenido de Azure AI, puede aprovechar las herramientas y tecnologías más recientes para asegurarse de que el contenido siempre esté moderado conforme a sus especificaciones exactas.

Obtenga más información sobre Seguridad del contenido de Azure AI y explore cómo puede elevar su estrategia de moderación de contenido.

Introducción a la biblioteca cliente de Azure Content Moderator para .NET. Siga estos pasos para instalar el paquete NuGet y probar el código de ejemplo para las tareas básicas.

Content Moderator es un servicio de inteligencia artificial que le permite controlar el contenido que puede ser ofensivo, arriesgado o no deseable. Use el servicio de moderación de contenido basado en IA para analizar texto, imágenes y vídeos, así como para aplicar marcas de contenido automáticamente. Compile software de filtrado de contenido en la aplicación para cumplir con las regulaciones o para mantener el entorno previsto para los usuarios.

Use la biblioteca cliente de Content Moderator para .NET para:

  • Moderar texto
  • Moderar imágenes

Documentación de referencia | Código fuente de la biblioteca | Paquete (NuGet) | Ejemplos

Requisitos previos

  • Una suscripción a Azure: cree una cuenta gratuita
  • El IDE de Visual Studio o la versión actual de .NET Core.
  • Una vez que tenga la suscripción de Azure, Creación de un recurso de Content Moderator en Azure Portal para obtener la clave y el punto de conexión. Espere a que se implemente y haga clic en el botón Ir al recurso.
    • Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación a Content Moderator. En una sección posterior de este mismo inicio rápido pegará la clave y el punto de conexión en el código siguiente.
    • Puede usar el plan de tarifa gratis (F0) para probar el servicio y actualizarlo más adelante a un plan de pago para producción.

Instalación

Creación de una aplicación de C#

En Visual Studio, cree una aplicación de .NET Core.

Instalación de la biblioteca cliente

Después de crear un proyecto, instale la biblioteca cliente; para ello, haga clic con el botón derecho en la solución del proyecto en el Explorador de soluciones y seleccione Administrar paquetes NuGet. En el administrador de paquetes que se abre, seleccione ExaminarIncluir versión preliminar y busque Microsoft.Azure.CognitiveServices.ContentModerator. Seleccione la versión 2.0.0 e Instalar.

Sugerencia

¿Desea ver todo el archivo de código de inicio rápido de una vez? Puede encontrarlo en GitHub, que contiene los ejemplos de código de este inicio rápido.

En el directorio del proyecto, abra el archivo Program.cs en el editor o IDE que prefiera. Agregue las instrucciones siguientes 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;

En la clase Program, cree variables para la clave y el punto de conexión del recurso.

Importante

Vaya a Azure Portal. Si el recurso de Content Moderator que ha creado en la sección Requisitos previos se ha implementado correctamente, haga clic en el botón Ir al recurso en Pasos siguientes. Puede encontrar su clave y punto de conexión en la página de clave y punto de conexión del recurso, en Administración de recursos.

// 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";

Importante

Recuerde quitar la clave del código cuando haya terminado y no hacerla nunca pública. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Consulte el artículo Seguridad de servicios de Azure AI para más información.

En el método main() de la aplicación, agregue llamadas para los métodos que se usan en este inicio rápido. Las creará más adelante.

// 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);

Modelo de objetos

Las siguientes clases controlan algunas de las características principales de la biblioteca cliente de .NET para Content Moderator.

Nombre Descripción
ContentModeratorClient Esta clase es necesaria para todas las funciones de Content Moderator. Cree una instancia de ella con la información de suscripción y úsela para generar instancias de otras clases.
ImageModeration Esta clase proporciona la funcionalidad para analizar imágenes de contenido para adultos, información personal o caras humanas.
TextModeration Esta clase proporciona la funcionalidad para analizar el texto y detectar el idioma, palabras obscenas, errores e información personal.

Ejemplos de código

En estos fragmentos de código se muestra cómo realizar las siguientes tareas con la biblioteca cliente de Content Moderator para .NET:

Autenticar el cliente

En un nuevo método, cree una instancia de objetos de cliente con la clave y el punto de conexión.

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

    return client;
}

Moderar texto

En el código siguiente se usa un cliente de Content Moderator para analizar un cuerpo de texto e imprimir los resultados en la consola. En la raíz de su clase Program, defina los archivos de entrada y salida:

// 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";

A continuación, en la raíz del proyecto, agregue un archivo TextFile.txt. Agregue su propio texto a este archivo o use el siguiente texto de ejemplo:

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

A continuación, defina el método de moderación de texto en algún lugar de la clase 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();
}

Moderar imágenes

En el código siguiente se usa un cliente de Content Moderator, junto con un objeto ImageModeration, para analizar imágenes remotas en busca de contenido para adultos y de tipo explícito.

Nota

También puede analizar el contenido de una imagen local. Consulte en la documentación de referencia los métodos y las operaciones que funcionan con imágenes locales.

Obtener imágenes de ejemplo

Defina los archivos de entrada y salida en la raíz de la clase 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";

A continuación, cree el archivo de entrada, ImageFiles.txt, en la raíz del proyecto. En este archivo, se agregan las direcciones URL de las imágenes que se van a analizar, una en cada línea. Puede utilizar las siguientes imágenes de ejemplo:

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

Definir la clase auxiliar

Agregue la definición de clase siguiente en la clase Program. Esta clase interna controlará los resultados de moderación de las imágenes.

// 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;
}

Definición del método de moderación de la imagen

El método siguiente recorre en iteración las direcciones URL de imágenes de un archivo de texto, crea una instancia de EvaluationData y analiza la imagen para detectar contenido para adultos o explícito, texto y caras humanas. A continuación, agrega la instancia final de EvaluationData a una lista y escribe la lista completa de datos devueltos en la consola.

Recorrer en iteración las imágenes

/*
 * 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());

Análisis de contenido

Para más información sobre los atributos de imagen que Content Moderator analiza, consulte la guía Conceptos de moderación de imágenes.

            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);
        }
    }
}

Escribir resultados de moderación en un archivo

        // 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();
    }
}

Ejecutar la aplicación

Ejecute la aplicación haciendo clic en el botón Depurar en la parte superior de la ventana del IDE.

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.

Pasos siguientes

En este inicio rápido, ha aprendido a usar la biblioteca de .NET para Content Moderator para realizar tareas de moderación. A continuación, lea una guía conceptual para aprender más sobre la moderación de imágenes u otro contenido multimedia.

Introducción a la biblioteca cliente de Azure Content Moderator para Java. Siga estos pasos para instalar el paquete Maven y probar el código de ejemplo para realizar tareas básicas.

Content Moderator es un servicio de inteligencia artificial que le permite controlar el contenido que puede ser ofensivo, arriesgado o no deseable. Use el servicio de moderación de contenido basado en IA para analizar texto, imágenes y vídeos, así como para aplicar marcas de contenido automáticamente. Compile software de filtrado de contenido en la aplicación para cumplir con las regulaciones o para mantener el entorno previsto para los usuarios.

Use la biblioteca cliente de Content Moderator para Java para:

  • Moderar texto
  • Moderar imágenes

Documentación de referencia | Código fuente de la biblioteca |Artifact (Maven) | Ejemplos

Requisitos previos

  • Una suscripción a Azure: cree una cuenta gratuita.
  • La última versión de Java Development Kit (JDK)
  • La herramienta de compilación de Gradle u otro administrador de dependencias.
  • Una vez que tenga la suscripción de Azure, Creación de un recurso de Content Moderator en Azure Portal para obtener la clave y el punto de conexión. Espere a que se implemente y haga clic en el botón Ir al recurso.
    • Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación a Content Moderator. En una sección posterior de este mismo inicio rápido pegará la clave y el punto de conexión en el código siguiente.
    • Puede usar el plan de tarifa gratis (F0) para probar el servicio y actualizarlo más adelante a un plan de pago para producción.

Instalación

Creación de un proyecto de Gradle

En una ventana de la consola (como cmd, PowerShell o Bash), cree un directorio para la aplicación y vaya a él.

mkdir myapp && cd myapp

Ejecute el comando gradle init desde el directorio de trabajo. Este comando creará archivos de compilación esenciales para Gradle, como build.gradle.kts, que se usa en tiempo de ejecución para crear y configurar la aplicación.

gradle init --type basic

Cuando se le solicite que elija un DSL, seleccione Kotlin.

Instalación de la biblioteca cliente

Busque build.gradle.kts y ábralo con el IDE o el editor de texto que prefiera. A continuación, cópielo en la siguiente configuración de compilación. Esta configuración define el proyecto como una aplicación Java cuyo punto de entrada es la clase ContentModeratorQuickstart. Importa la biblioteca cliente de Content Moderator y el SDK de GSON para la serialización de 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")
}

Creación de un archivo Java

En el directorio de trabajo, ejecute el siguiente comando para crear una carpeta de origen del proyecto:

mkdir -p src/main/java

Vaya a la nueva carpeta y cree un archivo llamado ContentModeratorQuickstart.java. Ábralo en el editor o el IDE que prefiera y agregue las siguientes instrucciones 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.*;

Sugerencia

¿Desea ver todo el archivo de código de inicio rápido de una vez? Puede encontrarlo en GitHub, que contiene los ejemplos de código de este inicio rápido.

En la clase ContentModeratorQuickstart de la aplicación, cree variables para el punto de conexión y la clave del recurso.

Importante

Vaya a Azure Portal. Si el recurso de Content Moderator que ha creado en la sección Requisitos previos se ha implementado correctamente, haga clic en el botón Ir al recurso en Pasos siguientes. Puede encontrar su clave y punto de conexión en la página de clave y punto de conexión del recurso, en Administración de recursos.

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

Importante

Recuerde quitar la clave del código cuando haya terminado y no hacerla nunca pública. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Consulte el artículo Seguridad de los servicios de Azure AI para más información.

En el método main de la aplicación, agregue llamadas para los métodos que se usan en este inicio rápido. Más adelante, definirá estos métodos.

// 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);

Modelo de objetos

Las siguientes clases controlan algunas de las características principales de la biblioteca cliente de Content Moderator.

Nombre Descripción
ContentModeratorClient Esta clase es necesaria para todas las funciones de Content Moderator. Cree una instancia de ella con la información de suscripción y úsela para generar instancias de otras clases.
ImageModeration Esta clase proporciona la funcionalidad para analizar imágenes de contenido para adultos, información personal o caras humanas.
TextModerations Esta clase proporciona la funcionalidad para analizar el texto y detectar el idioma, palabras obscenas, errores e información personal.

Ejemplos de código

En estos fragmentos de código se muestra cómo realizar las siguientes tareas con la biblioteca cliente de Content Moderator para Java:

Autenticar el cliente

En el método main de la aplicación, cree un objeto ContentModeratorClient. Para ello, use la clave de suscripción y el valor del punto de conexión de su suscripción.

// 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");

Moderar texto

Configuración de texto de ejemplo

En la parte superior de la clase ContentModeratorQuickstart, defina una referencia a un archivo de texto local. Agregue un archivo.txt al directorio del proyecto y escriba el texto que desea analizar.

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

Análisis de texto

Cree un nuevo método que lea el archivo .txt y que llame al método screenText en cada línea.

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());
            }
        }

Agregue el código siguiente para imprimir los resultados de moderación en un archivo .json en el directorio del proyecto.

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();

Cierre la instrucción try y agregue catch para completar el método.

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

Moderar imágenes

Configuración de la imagen de ejemplo

En un nuevo método, cree un objeto BodyModelModel con una cadena URL determinada que apunte a una imagen.

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();

Definir la clase auxiliar

Luego, en el archivo ContentModeratorQuickstart.java, agregue la siguiente definición de clase dentro de la clase ContentModeratorQuickstart. Esta clase interna se usa en el proceso de moderación de imágenes.

// 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;
}

Análisis de contenido

Esta línea de código comprueba la imagen de la dirección URL especificada en busca de contenido para adultos o de tipo explícito. Consulte la guía conceptual de moderación de imágenes para información sobre estos términos.

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

Buscar texto

Esta línea de código busca en la imagen texto visible.

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

Buscar caras

Esta línea de código busca en la imagen caras humanas.

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

Por último, almacene la información devuelta en la lista EvaluationData.

resultsList.add(imageData);

Después del bucle while, agregue el siguiente código, que imprime los resultados en la consola y en un archivo de salida 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();

Cierre la instrucción try y agregue una instrucción catch para completar el método.

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

Ejecución de la aplicación

Puede compilar la aplicación con:

gradle build

Ejecute la aplicación con el comando gradle run:

gradle run

Luego, vaya al archivo src/main/resources/ModerationOutput.json y vea los resultados de la moderación de contenido.

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.

Pasos siguientes

En este inicio rápido, ha aprendido a usar la biblioteca Java de Content Moderator para realizar tareas de moderación. A continuación, lea una guía conceptual para aprender más sobre la moderación de imágenes u otro contenido multimedia.

Introducción a la biblioteca de cliente de Azure Content Moderator para Python. Siga estos pasos para instalar el paquete PiPy y probar el código de ejemplo para las tareas básicas.

Content Moderator es un servicio de inteligencia artificial que le permite controlar el contenido que puede ser ofensivo, arriesgado o no deseable. Use el servicio de moderación de contenido basado en IA para analizar texto, imágenes y vídeos, así como para aplicar marcas de contenido automáticamente. Compile software de filtrado de contenido en la aplicación para cumplir con las regulaciones o para mantener el entorno previsto para los usuarios.

Use la biblioteca cliente de Content Moderator para Python para:

  • Moderar texto
  • Usar una lista de términos personalizados
  • Moderar imágenes
  • Usar una lista de imágenes personalizadas

Documentación de referencia | Código fuente de la biblioteca | Paquete (PiPy) | Ejemplos

Requisitos previos

  • Una suscripción a Azure: cree una cuenta gratuita
  • Python 3.x
    • La instalación de Python debe incluir pip. Puede comprobar si tiene pip instalado mediante la ejecución de pip --version en la línea de comandos. Para obtener pip, instale la versión más reciente de Python.
  • Una vez que tenga la suscripción de Azure, Creación de un recurso de Content Moderator en Azure Portal para obtener la clave y el punto de conexión. Espere a que se implemente y haga clic en el botón Ir al recurso.
    • Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación a Content Moderator. En una sección posterior de este mismo inicio rápido pegará la clave y el punto de conexión en el código siguiente.
    • Puede usar el plan de tarifa gratis (F0) para probar el servicio y actualizarlo más adelante a un plan de pago para producción.

Instalación

Instalación de la biblioteca cliente

Después de haber instalado Python, puede instalar la biblioteca cliente de Content Moderator mediante el siguiente comando:

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

Creación de una nueva aplicación de Python

Cree un script de Python y ábralo en el editor o el IDE que prefiera. Luego, agregue las siguientes instrucciones import en la parte superior del archivo.

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

Sugerencia

¿Desea ver todo el archivo de código de inicio rápido de una vez? Puede encontrarlo en GitHub, que contiene los ejemplos de código de este inicio rápido.

A continuación, cree variables para la ubicación del punto de conexión y la clave de su recurso.

Importante

Vaya a Azure Portal. Si el recurso de Content Moderator que ha creado en la sección Requisitos previos se ha implementado correctamente, haga clic en el botón Ir al recurso en Pasos siguientes. Puede encontrar su clave y punto de conexión en la página de clave y punto de conexión del recurso, en Administración de recursos.

CONTENT_MODERATOR_ENDPOINT = "PASTE_YOUR_CONTENT_MODERATOR_ENDPOINT_HERE"
subscription_key = "PASTE_YOUR_CONTENT_MODERATOR_SUBSCRIPTION_KEY_HERE"

Importante

Recuerde quitar la clave del código cuando haya terminado y no hacerla nunca pública. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Consulte el artículo Seguridad de servicios de Azure AI para más información.

Modelo de objetos

Las siguientes clases controlan algunas de las características principales de la biblioteca cliente de Python para Content Moderator.

Nombre Descripción
ContentModeratorClient Esta clase es necesaria para todas las funciones de Content Moderator. Cree una instancia de ella con la información de suscripción y úsela para generar instancias de otras clases.
ImageModerationOperations Esta clase proporciona la funcionalidad para analizar imágenes de contenido para adultos, información personal o caras humanas.
TextModerationOperations Esta clase proporciona la funcionalidad para analizar el texto y detectar el idioma, palabras obscenas, errores e información personal.

Ejemplos de código

En estos fragmentos de código se muestra cómo realizar las siguientes tareas con la biblioteca cliente de Content Moderator para Python:

Autenticar el cliente

Cree una instancia de un cliente con la clave y el punto de conexión. Cree un objeto CognitiveServicesCredentials](/python/api/msrest/msrest.authentication.cognitiveservicescredentials con su clave y úselo con el punto de conexión para crear un objeto ContentModeratorClient.

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

Moderar texto

En el código siguiente se usa un cliente de Content Moderator para analizar un cuerpo de texto e imprimir los resultados en la consola. Primero, cree una carpeta text_files/ en la raíz del proyecto y agregue un archivo content_moderator_text_moderation.txt. Agregue su propio texto a este archivo o use el siguiente texto de ejemplo:

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

Agregue una referencia a la nueva carpeta.

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

Luego, agregue el siguiente código al script de 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())

Usar una lista de términos personalizados

En el código siguiente se muestra cómo administrar una lista de términos personalizados para la moderación de texto. Puede usar la clase ListManagementTermListsOperations para crear una lista de términos, administrar los términos individuales y mostrar en pantalla otros cuerpos de texto con los que comparar.

Obtener texto de ejemplo

Para usar este ejemplo , debe crear una carpeta text_files/ en la raíz del proyecto y agregar un archivo content_moderator_term_list.txt. Este archivo debe contener texto orgánico que se comparará con la lista de términos. Puede usar el siguiente texto de ejemplo:

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

Agregue una referencia a la carpeta si aún no ha definido una.

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

Crear una lista

Agregue el código siguiente al script de Python para crear una lista de términos personalizados y guarde su valor de identificación.

#
# 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

Definir los detalles de la lista

Puede usar el identificador de una lista para editar su nombre y descripción.

#
# 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())

Agregar un término a la lista

En el código siguiente se agregan los términos "term2" y "term1" a la lista.

#
# 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"
)

Obtener todos los términos de la lista

Puede usar el identificador de lista para devolver todos los términos de la lista.

#
# 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())

Actualizar el índice de lista

Siempre que agregue o quite términos en la lista, debe actualizar el índice para poder usar la lista actualizada.

#
# 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)

Comparar el texto en pantalla con la lista

La principal funcionalidad de la lista de términos personalizados es comparar un cuerpo de texto con la lista y encontrar si hay términos que coincidan.

#
# 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())

Eliminar un término de una lista

El código siguiente quita el término "term1" de la lista.

#
# 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"
)

Eliminar todos los términos de una lista

Use el código siguiente para borrar una lista de todos sus términos.

#
# 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")

Eliminar una lista

Use el código siguiente para eliminar una lista de términos personalizados.

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

Moderar imágenes

En el código siguiente se usa un cliente de Content Moderator, junto con un objeto ImageModerationOperations, para analizar imágenes en busca de contenido para adultos y de tipo explícito.

Obtener imágenes de ejemplo

Defina una referencia a algunas imágenes para analizar.

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

Después, agregue el código siguiente para recorrer en iteración las imágenes. El resto del código de esta sección irá dentro de este bucle.

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

Buscar contenido para adultos o de tipo explícito

El código siguiente comprueba la imagen de la dirección URL especificada en busca de contenido para adultos o de tipo explícito e imprime los resultados en la consola. Consulte la guía de conceptos de moderación de imágenes para información sobre lo que significan estos términos.

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())

Buscar texto visible

El código siguiente comprueba la imagen en busca de contenido de texto visible e imprime los resultados en la consola.

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())

Buscar caras

El código siguiente comprueba la imagen en busca de caras humanas e imprime los resultados en la consola.

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())

Usar una lista de imágenes personalizadas

En el código siguiente se muestra cómo administrar una lista personalizada de imágenes para la moderación de imágenes. Esta característica es útil si la plataforma recibe con frecuencia instancias del mismo conjunto de imágenes que quiere filtrar. Al mantener una lista de estas imágenes específicas, puede mejorar el rendimiento. La clase ListManagementImageListsOperations permite crear una lista de imágenes, administrar las imágenes individuales de la lista y comparar otras imágenes con ella.

Cree las siguientes variables de texto para almacenar las direcciones URL de imágenes que usará en este escenario.

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"
]

Nota

Esta no es la lista adecuada, sino una lista informal de imágenes que se agregarán a la sección add images del código.

Creación de una lista de imágenes

Agregue el código siguiente para crear una lista de imágenes y guarde una referencia a su identificador.

#
# 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

Agregar imágenes a una lista

En el código siguiente se agregan todas las imágenes a la lista.

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

Defina la función auxiliar add_images en otra parte del script.

#
# 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

Obtener imágenes de la lista

El código siguiente imprime los nombres de todas las imágenes de la lista.

#
# 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())

Actualizar los detalles de la lista

Puede usar el identificador de lista para actualizar el nombre y la descripción de la lista.

#
# 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())

Obtener los detalles de la lista

Use el código siguiente para imprimir los detalles actuales de la lista.

#
# 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())

Actualizar el índice de lista

Después de agregar o quitar imágenes, debe actualizar el índice de la lista antes de poder usarlo para mostrar otras imágenes.

#
# 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)

Buscar coincidencias de imágenes con la lista

La función principal de las listas de imágenes es comparar las nuevas imágenes y ver si hay coincidencias.

#
# 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())

Quitar una imagen de la lista

El código siguiente quita un elemento de la lista. En este caso, se trata de una imagen que no coincide con la categoría de la lista.

#
# 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]
)

Quitar todas las imágenes de una lista

Use el código siguiente para borrar una lista de imágenes.

#
# 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)

Eliminar la lista de imágenes

Use el código siguiente para eliminar una lista de imágenes determinada.

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

Ejecución de la aplicación

Ejecute la aplicación con el comando python en el archivo de inicio rápido.

python quickstart-file.py

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.

Pasos siguientes

En este inicio rápido, ha aprendido a usar la biblioteca de Python para Content Moderator para realizar tareas de moderación. A continuación, lea una guía conceptual para aprender más sobre la moderación de imágenes u otro contenido multimedia.

Introducción a Azure Content Moderator REST API.

Content Moderator es un servicio de inteligencia artificial que le permite controlar el contenido que puede ser ofensivo, arriesgado o no deseable. Use el servicio de moderación de contenido basado en IA para analizar texto, imágenes y vídeos, así como para aplicar marcas de contenido automáticamente. Compile software de filtrado de contenido en la aplicación para cumplir con las regulaciones o para mantener el entorno previsto para los usuarios.

Use Content Moderator REST API para:

  • Moderar texto
  • Moderar imágenes

Requisitos previos

  • Una suscripción a Azure: cree una cuenta gratuita
  • Una vez que tenga la suscripción de Azure, Creación de un recurso de Content Moderator en Azure Portal para obtener la clave y el punto de conexión. Espere a que se implemente y haga clic en el botón Ir al recurso.
    • Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación a Content Moderator. En una sección posterior de este mismo inicio rápido pegará la clave y el punto de conexión en el código siguiente.
    • Puede usar el plan de tarifa gratis (F0) para probar el servicio y actualizarlo más adelante a un plan de pago para producción.
  • PowerShell versión 6.0, o superior, o una aplicación de la línea de comandos similar.

Moderar texto

Usará un comando como el siguiente para llamar a Content Moderator API para que analice un cuerpo de texto e imprima los resultados en la consola.

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"

Copie el comando en un editor de texto y realice los cambios siguientes:

  1. Asigne Ocp-Apim-Subscription-Key a la clave de suscripción de Face válida.

    Importante

    Recuerde quitar la clave del código cuando haya terminado y no hacerla nunca pública. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Consulte el artículo Seguridad de servicios de Azure AI para más información.

  2. Cambie la primera parte de la dirección URL de la consulta para que coincida con el punto de conexión que corresponde a la clave de suscripción.

    Nota

    Los nuevos recursos creados después del 1 de julio de 2019 usarán nombres de subdominio personalizados. Para más información y una lista completa de puntos de conexión regionales, consulte Nombres de subdominios personalizados para los servicios de Azure AI.

  3. También puede cambiar el cuerpo de la solicitud a cualquier cadena de texto que desee analizar.

Una vez realizados los cambios, abra un símbolo del sistema y escriba el nuevo comando.

Examen de los resultados

Debería ver los resultados de la moderación del texto mostrados como datos JSON en la ventana de la consola. Por ejemplo:

{
  "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"
}

Para más información sobre los atributos de texto que Content Moderator analiza, consulte la guía Conceptos de moderación de texto.

Moderar imágenes

Usará un comando como el siguiente para llamar a Content Moderator API para que modere una imagen remota e imprima los resultados en la consola.

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\"}"

Copie el comando en un editor de texto y realice los cambios siguientes:

  1. Asigne Ocp-Apim-Subscription-Key a la clave de suscripción de Face válida.
  2. Cambie la primera parte de la dirección URL de la consulta para que coincida con el punto de conexión que corresponde a la clave de suscripción.
  3. También puede cambiar la dirección URL de "Value" en el cuerpo de la solicitud a cualquier imagen remota que desee moderar.

Sugerencia

También puede moderar imágenes locales pasando sus datos de bytes en el cuerpo de la solicitud. Consulte la documentación de referencia para aprender a hacerlo.

Una vez realizados los cambios, abra un símbolo del sistema y escriba el nuevo comando.

Examen de los resultados

Debería ver los resultados de la moderación de la imagen mostrados como datos JSON en la ventana de la consola.

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

Para más información sobre los atributos de imagen que Content Moderator analiza, consulte la guía Conceptos de moderación de imágenes.

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.

Pasos siguientes

En este inicio rápido, ha aprendido a usar Content Moderator REST API para realizar tareas de moderación. A continuación, lea una guía conceptual para aprender más sobre la moderación de imágenes u otro contenido multimedia.