Inicio rápido: Uso de la biblioteca cliente o la API REST de Read

Introducción a la API REST o las bibliotecas cliente de Read. El servicio Read le proporciona algoritmos de inteligencia artificial para extraer el texto visible de las imágenes y devolverlo como cadenas estructuradas. Siga estos pasos para instalar un paquete en la aplicación y probar el código de ejemplo en tareas básicas.

Use la biblioteca cliente de OCR para leer el texto impreso y manuscrito de una imagen.

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, cree un recurso de Computer Vision en Azure Portal para obtener la clave y el punto de conexión. Una vez que se implemente, haga clic en Ir al recurso.
    • Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación al servicio Computer Vision. 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 Examinar Incluir versión preliminar y busque Microsoft.Azure.CognitiveServices.Vision.ComputerVision. Seleccione la versión 7.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.

Búsqueda de la clave de suscripción y el punto de conexión

Vaya a Azure Portal. Si el recurso de Computer Vision 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. Las claves de suscripción y el punto de conexión se encuentran en la página Clave y punto de conexión del recurso, en Administración de recursos.

En la clase Program de la aplicación, cree variables para la clave de suscripción y el punto de conexión de Computer Vision. Pegue la clave de suscripción y el punto de conexión en el código siguiente, donde se indica. El punto de conexión de Computer Vision tiene el formato https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/.

using System;
using System.Collections.Generic;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Threading;
using System.Linq;

namespace ComputerVisionQuickstart
{
    class Program
    {
        // Add your Computer Vision subscription key and endpoint
        static string subscriptionKey = "PASTE_YOUR_COMPUTER_VISION_SUBSCRIPTION_KEY_HERE";
        static string endpoint = "PASTE_YOUR_COMPUTER_VISION_ENDPOINT_HERE";

Importante

Recuerde quitar la clave de suscripción del código cuando haya terminado y nunca la haga pública. En el caso de producción, considere la posibilidad de usar alguna forma segura de almacenar las credenciales, y acceder a ellas. Por ejemplo, Azure Key Vault.

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.

ComputerVisionClient client = Authenticate(endpoint, subscriptionKey);

// Extract text (OCR) from a URL image using the Read API
ReadFileUrl(client, READ_TEXT_URL_IMAGE).Wait();

Modelo de objetos

Las siguientes clases e interfaces controlan algunas de las características principales de OCR SDK para .NET.

Nombre Descripción
ComputerVisionClient Esta clase es necesaria para todas las funcionalidades de Computer Vision. Cree una instancia de ella con la información de suscripción y úsela para realizar la mayoría de las operaciones con imágenes.
ComputerVisionClientExtensions Esta clase contiene métodos adicionales para ComputerVisionClient.

Ejemplos de código

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

Autenticar el cliente

En un nuevo método de la clase Program, cree una instancia de un cliente con el punto de conexión y la clave de suscripción. Cree un objeto ApiKeyServiceClientCredentials con la clave de suscripción y úselo con el punto de conexión para crear un objeto ComputerVisionClient .

/*
 * AUTHENTICATE
 * Creates a Computer Vision client used by each example.
 */
public static ComputerVisionClient Authenticate(string endpoint, string key)
{
    ComputerVisionClient client =
      new ComputerVisionClient(new ApiKeyServiceClientCredentials(key))
      { Endpoint = endpoint };
    return client;
}

Lectura de texto manuscrito e impreso

El servicio OCR puede leer texto visible de una imagen y convertirlo en una secuencia de caracteres. Para más información sobre el reconocimiento de texto, consulte la información general sobre el reconocimiento óptico de caracteres (OCR). En el código de esta sección se usa la versión más reciente de la versión 3.0 del SDK Computer Vision para lectura y se define un método, BatchReadFileUrl, que usa el objeto de cliente para detectar y extraer texto en la imagen.

Sugerencia

También puede extraer texto de una imagen local. Consulte los métodos ComputerVisionClient, como ReadInStreamAsync. O bien, consulte el código de ejemplo en GitHub para escenarios relacionados con imágenes locales.

Configuración de una imagen de prueba

En la clase Program, guarde una referencia de la dirección URL de la imagen de la que quiere extraer texto. Este fragmento de código incluye imágenes de ejemplo para texto impreso y manuscrito.

private const string READ_TEXT_URL_IMAGE = "https://intelligentkioskstore.blob.core.windows.net/visionapi/suggestedphotos/3.png";

Llamada a la API Read

Defina el nuevo método para leer texto. Agregue el código siguiente, que llama al método ReadAsync para la imagen especificada. Esto devuelve un identificador de operación e inicia un proceso asincrónico para leer el contenido de la imagen.

/*
 * READ FILE - URL 
 * Extracts text. 
 */
public static async Task ReadFileUrl(ComputerVisionClient client, string urlFile)
{
    Console.WriteLine("----------------------------------------------------------");
    Console.WriteLine("READ FILE FROM URL");
    Console.WriteLine();

    // Read text from URL
    var textHeaders = await client.ReadAsync(urlFile);
    // After the request, get the operation location (operation ID)
    string operationLocation = textHeaders.OperationLocation;
    Thread.Sleep(2000);

Obtención de resultados de lectura

A continuación, obtenga el identificador de operación devuelto por la llamada a ReadAsync y úselo para consultar los resultados de la operación en el servicio. El siguiente código comprueba la operación hasta que se devuelven los resultados. A continuación, imprime los datos de texto extraídos en la consola.

// Retrieve the URI where the extracted text will be stored from the Operation-Location header.
// We only need the ID and not the full URL
const int numberOfCharsInOperationId = 36;
string operationId = operationLocation.Substring(operationLocation.Length - numberOfCharsInOperationId);

// Extract the text
ReadOperationResult results;
Console.WriteLine($"Extracting text from URL file {Path.GetFileName(urlFile)}...");
Console.WriteLine();
do
{
    results = await client.GetReadResultAsync(Guid.Parse(operationId));
}
while ((results.Status == OperationStatusCodes.Running ||
    results.Status == OperationStatusCodes.NotStarted));

Visualización de resultados de lectura

Agregue el código siguiente para analizar y mostrar los datos de texto recuperados y finalice la definición del método.

    // Display the found text.
    Console.WriteLine();
    var textUrlFileResults = results.AnalyzeResult.ReadResults;
    foreach (ReadResult page in textUrlFileResults)
    {
        foreach (Line line in page.Lines)
        {
            Console.WriteLine(line.Text);
        }
    }
    Console.WriteLine();
}

Ejecución de 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 a Cognitive Services, puede eliminar el recurso o 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 instalar la biblioteca cliente de OCR y a usar Read API. A continuación, obtenga más información sobre las características de Read API.

Use la biblioteca cliente de reconocimiento óptico de caracteres para leer texto impreso y manuscrito con Read API.

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, cree un recurso de Computer Vision en Azure Portal para obtener la clave y el punto de conexión. Una vez que se implemente, haga clic en Ir al recurso.

    • Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación al servicio Computer Vision. 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

Puede instalar la biblioteca cliente con lo siguiente:

pip install --upgrade azure-cognitiveservices-vision-computervision

Instale también la biblioteca de Pillow.

pip install pillow

Creación de una nueva aplicación de Python

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.

Por ejemplo, cree un nuevo archivo Python —quickstart-file.py. A continuación, ábralo en el editor o IDE preferidos.

Búsqueda de la clave de suscripción y el punto de conexión

Vaya a Azure Portal. Si el recurso de Computer Vision 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. Las claves de suscripción y el punto de conexión se encuentran en la página Clave y punto de conexión del recurso, en Administración de recursos.

Cree variables para la clave de suscripción y el punto de conexión de Computer Vision. Pegue la clave de suscripción y el punto de conexión en el código siguiente, donde se indica. El punto de conexión de Computer Vision tiene el formato https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/.

from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from azure.cognitiveservices.vision.computervision.models import OperationStatusCodes
from azure.cognitiveservices.vision.computervision.models import VisualFeatureTypes
from msrest.authentication import CognitiveServicesCredentials

from array import array
import os
from PIL import Image
import sys
import time

'''
Authenticate
Authenticates your credentials and creates a client.
'''
subscription_key = "PASTE_YOUR_COMPUTER_VISION_SUBSCRIPTION_KEY_HERE"
endpoint = "PASTE_YOUR_COMPUTER_VISION_ENDPOINT_HERE"

Importante

Recuerde quitar la clave de suscripción del código cuando haya terminado y nunca la haga pública. En el caso de producción, considere la posibilidad de usar alguna forma segura de almacenar las credenciales, y acceder a ellas. Por ejemplo, Azure Key Vault.

Modelo de objetos

Las siguientes clases e interfaces controlan algunas de las características principales del SDK de Python para OCR.

Nombre Descripción
ComputerVisionClientOperationsMixin Esta clase controla directamente todas las operaciones de imagen, como el análisis de imágenes, la detección de texto y la generación de miniaturas.
ComputerVisionClient Esta clase es necesaria para todas las funcionalidades de Computer Vision. Cree una instancia de ella con la información de suscripción y úsela para generar instancias de otras clases. Implementa ComputerVisionClientOperationsMixin.
VisualFeatureTypes Esta enumeración define los diferentes tipos de análisis de imágenes que se pueden realizar en una operación de análisis estándar. Debe especificar un conjunto de valores de VisualFeatureTypes en función de sus necesidades.

Ejemplos de código

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

Autenticar el cliente

Cree una instancia de un cliente con la clave y el punto de conexión. Cree un objeto CognitiveServicesCredentials con la clave y úselo con el punto de conexión para crear un objeto ComputerVisionClient.

computervision_client = ComputerVisionClient(endpoint, CognitiveServicesCredentials(subscription_key))

Lectura de texto manuscrito e impreso

El servicio OCR puede leer texto visible de una imagen y convertirlo en una secuencia de caracteres. Esto se hace en dos partes.

Llamada a la API Read

En primer lugar, use el siguiente código para llamar al método read para la imagen especificada. Esto devuelve un identificador de operación e inicia un proceso asincrónico para leer el contenido de la imagen.

'''
OCR: Read File using the Read API, extract text - remote
This example will extract text in an image, then print results, line by line.
This API call can also extract handwriting style text (not shown).
'''
print("===== Read File - remote =====")
# Get an image with text
read_image_url = "https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/master/articles/cognitive-services/Computer-vision/Images/readsample.jpg"

# Call API with URL and raw response (allows you to get the operation location)
read_response = computervision_client.read(read_image_url,  raw=True)

Sugerencia

También puede leer el texto de una imagen local. Consulte los métodos ComputerVisionClientOperationsMixin, como read_in_stream. O bien, consulte el código de ejemplo en GitHub para escenarios relacionados con imágenes locales.

Obtención de resultados de lectura

A continuación, obtenga el identificador de operación devuelto por la llamada a read y úselo para consultar los resultados de la operación en el servicio. El código siguiente comprueba la operación a intervalos de un segundo hasta que se devuelven los resultados. A continuación, imprime los datos de texto extraídos en la consola.

# Get the operation location (URL with an ID at the end) from the response
read_operation_location = read_response.headers["Operation-Location"]
# Grab the ID from the URL
operation_id = read_operation_location.split("/")[-1]

# Call the "GET" API and wait for it to retrieve the results 
while True:
    read_result = computervision_client.get_read_result(operation_id)
    if read_result.status not in ['notStarted', 'running']:
        break
    time.sleep(1)

# Print the detected text, line by line
if read_result.status == OperationStatusCodes.succeeded:
    for text_result in read_result.analyze_result.read_results:
        for line in text_result.lines:
            print(line.text)
            print(line.bounding_box)
print()

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 a Cognitive Services, puede eliminar el recurso o 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 instalar la biblioteca cliente de OCR y a usar Read API. A continuación, obtenga más información sobre las características de Read API.

Use la biblioteca cliente de reconocimiento óptico de caracteres para leer texto impreso y manuscrito en 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, cree un recurso de Computer Vision en Azure Portal para obtener la clave y el punto de conexión. Una vez que se implemente, haga clic en Ir al recurso.
    • Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación al servicio Computer Vision. 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

En este inicio rápido se usa el administrador de dependencias Gradle. Puede encontrar la biblioteca de cliente y la información de otros administradores de dependencias en el repositorio central de Maven.

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 ComputerVisionQuickstarts. Importa la biblioteca de Computer Vision.

plugins {
    java
    application
}
application { 
    mainClass.set("ComputerVisionQuickstart")
}
repositories {
    mavenCentral()
}
dependencies {
    implementation(group = "com.microsoft.azure.cognitiveservices", name = "azure-cognitiveservices-computervision", version = "1.0.6-beta")
}

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

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.

Vaya a la nueva carpeta y cree un archivo denominado ComputerVisionQuickstart.java. Ábralo en el editor o IDE preferidos.

Búsqueda de la clave de suscripción y el punto de conexión

Vaya a Azure Portal. Si el recurso de Computer Vision 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. Las claves de suscripción y el punto de conexión se encuentran en la página Clave y punto de conexión del recurso, en Administración de recursos.

Defina la clase ComputerVisionQuickstart. Cree variables para la clave de suscripción y el punto de conexión de Computer Vision. Pegue la clave de suscripción y el punto de conexión en el código siguiente, donde se indica. El punto de conexión de Computer Vision tiene el formato https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/.

import com.microsoft.azure.cognitiveservices.vision.computervision.*;
import com.microsoft.azure.cognitiveservices.vision.computervision.implementation.ComputerVisionImpl;
import com.microsoft.azure.cognitiveservices.vision.computervision.models.*;

import java.io.*;
import java.nio.file.Files;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

public class ComputerVisionQuickstart {

    static String subscriptionKey = "PASTE_YOUR_COMPUTER_VISION_SUBSCRIPTION_KEY_HERE";
    static String endpoint = "PASTE_YOUR_COMPUTER_VISION_ENDPOINT_HERE";

Importante

Recuerde quitar la clave de suscripción del código cuando haya terminado y nunca la haga pública. En el caso de producción, considere la posibilidad de usar alguna forma segura de almacenar las credenciales, y acceder a ellas. Por ejemplo, Azure Key Vault.

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

public static void main(String[] args) {
    
    System.out.println("\nAzure Cognitive Services Computer Vision - Java Quickstart Sample");

    // Create an authenticated Computer Vision client.
    ComputerVisionClient compVisClient = Authenticate(subscriptionKey, endpoint); 

    // Read from local file
    ReadFromFile(compVisClient);
}

Modelo de objetos

Las siguientes clases e interfaces controlan algunas de las características principales de OCR SDK para Java.

Nombre Descripción
ComputerVisionClient Esta clase es necesaria para todas las funcionalidades de Computer Vision. Cree una instancia de ella con la información de suscripción y úsela para generar instancias de otras clases.

Ejemplos de código

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

Autenticar el cliente

En un nuevo método, cree una instancia de un objeto ComputerVisionClient con su punto de conexión y clave.

public static ComputerVisionClient Authenticate(String subscriptionKey, String endpoint){
    return ComputerVisionManager.authenticate(subscriptionKey).withEndpoint(endpoint);
}

Lectura de texto manuscrito e impreso

El servicio OCR puede leer texto visible de una imagen y convertirlo en una secuencia de caracteres. En esta sección se define un método, ReadFromFile, que toma una ruta de acceso de archivo local e imprime el texto de la imagen en la consola.

Sugerencia

También puede leer el texto de una imagen remota referenciada por una dirección URL. Consulte los métodos ComputerVision, como read. O bien, consulte el código de ejemplo en GitHub para escenarios relacionados con imágenes remotas.

Configuración de una imagen de prueba

Cree una carpeta resources/ en la carpeta src/main/ del proyecto y agregue una imagen de la que quiera leer texto. Puede descargar una imagen de ejemplo para usarla.

Luego, agregue la siguiente definición de método a la clase ComputerVisionQuickstart. Cambie el valor de localFilePath para que coincida con el archivo de imagen.

/**
 * OCR with READ : Performs a Read Operation on a local image
 * @param client instantiated vision client
 * @param localFilePath local file path from which to perform the read operation against
 */
private static void ReadFromFile(ComputerVisionClient client) {
    System.out.println("-----------------------------------------------");
    
    String localFilePath = "src\\main\\resources\\myImage.png";
    System.out.println("Read with local file: " + localFilePath);

Llamada a la API Read

A continuación, agregue el siguiente código para llamar al método readInStreamWithServiceResponseAsync de la imagen especificada.


try {
    File rawImage = new File(localFilePath);
    byte[] localImageBytes = Files.readAllBytes(rawImage.toPath());

    // Cast Computer Vision to its implementation to expose the required methods
    ComputerVisionImpl vision = (ComputerVisionImpl) client.computerVision();

    // Read in remote image and response header
    ReadInStreamHeaders responseHeader =
            vision.readInStreamWithServiceResponseAsync(localImageBytes, null, null)
                .toBlocking()
                .single()
                .headers();

El siguiente bloque de código extrae el identificador de la operación de la respuesta de la llamada de lectura. Este identificador se usa con un método auxiliar para imprimir los resultados de lectura de texto en la consola.

// Extract the operationLocation from the response header
String operationLocation = responseHeader.operationLocation();
System.out.println("Operation Location:" + operationLocation);

getAndPrintReadResult(vision, operationLocation);

Cierre el bloque try/catch y la definición del método.


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

Obtención de resultados de lectura

A continuación, agregue una definición para el método auxiliar. Este método usa el identificador de la operación del paso anterior para consultar la operación de lectura y obtener los resultados de OCR cuando están disponibles.

/**
 * Polls for Read result and prints results to console
 * @param vision Computer Vision instance
 * @return operationLocation returned in the POST Read response header
 */
private static void getAndPrintReadResult(ComputerVision vision, String operationLocation) throws InterruptedException {
    System.out.println("Polling for Read results ...");

    // Extract OperationId from Operation Location
    String operationId = extractOperationIdFromOpLocation(operationLocation);

    boolean pollForResult = true;
    ReadOperationResult readResults = null;

    while (pollForResult) {
        // Poll for result every second
        Thread.sleep(1000);
        readResults = vision.getReadResult(UUID.fromString(operationId));

        // The results will no longer be null when the service has finished processing the request.
        if (readResults != null) {
            // Get request status
            OperationStatusCodes status = readResults.status();

            if (status == OperationStatusCodes.FAILED || status == OperationStatusCodes.SUCCEEDED) {
                pollForResult = false;
            }
        }
    }

El resto del método analiza los resultados de OCR y los imprime en la consola.

    // Print read results, page per page
    for (ReadResult pageResult : readResults.analyzeResult().readResults()) {
        System.out.println("");
        System.out.println("Printing Read results for page " + pageResult.page());
        StringBuilder builder = new StringBuilder();

        for (Line line : pageResult.lines()) {
            builder.append(line.text());
            builder.append("\n");
        }

        System.out.println(builder.toString());
    }
}

Por último, agregue el otro método auxiliar usado anteriormente, que extrae el identificador de la operación de la respuesta inicial.

/**
 * Extracts the OperationId from a Operation-Location returned by the POST Read operation
 * @param operationLocation
 * @return operationId
 */
private static String extractOperationIdFromOpLocation(String operationLocation) {
    if (operationLocation != null && !operationLocation.isEmpty()) {
        String[] splits = operationLocation.split("/");

        if (splits != null && splits.length > 0) {
            return splits[splits.length - 1];
        }
    }
    throw new IllegalStateException("Something went wrong: Couldn't extract the operation id from the operation location");
}

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

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción a Cognitive Services, puede eliminar el recurso o 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 instalar la biblioteca cliente de OCR y a usar Read API. A continuación, obtenga más información sobre las características de Read API.

Use la biblioteca cliente de reconocimiento óptico de caracteres para leer texto impreso y manuscrito con Read API.

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

Requisitos previos

  • Una suscripción a Azure: cree una cuenta gratuita.
  • La versión actual de Node.js
  • Una vez que tenga la suscripción de Azure, cree un recurso de Computer Vision en Azure Portal para obtener la clave y el punto de conexión. Una vez que se implemente, haga clic en Ir al recurso.
    • Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación al servicio Computer Vision. 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 Node.js

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 npm init para crear una aplicación de nodo con un archivo package.json.

npm init

Instalación de la biblioteca cliente

Instale los paquetes ms-rest-azure y @azure/cognitiveservices-computervision de NPM:

npm install @azure/cognitiveservices-computervision

Instale también el módulo async:

npm install async

el archivo package.json de la aplicación se actualizará con las dependencias.

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.

Cree un archivo, index.js y ábralo en un editor de texto.

Búsqueda de la clave de suscripción y el punto de conexión

Vaya a Azure Portal. Si el recurso de Computer Vision 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. Las claves de suscripción y el punto de conexión se encuentran en la página Clave y punto de conexión del recurso, en Administración de recursos.

Cree variables para la clave de suscripción y el punto de conexión de Computer Vision. Pegue la clave de suscripción y el punto de conexión en el código siguiente, donde se indica. El punto de conexión de Computer Vision tiene el formato https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/.

'use strict';

const async = require('async');
const fs = require('fs');
const https = require('https');
const path = require("path");
const createReadStream = require('fs').createReadStream
const sleep = require('util').promisify(setTimeout);
const ComputerVisionClient = require('@azure/cognitiveservices-computervision').ComputerVisionClient;
const ApiKeyCredentials = require('@azure/ms-rest-js').ApiKeyCredentials;

/**
 * AUTHENTICATE
 * This single client is used for all examples.
 */
const key = 'PASTE_YOUR_COMPUTER_VISION_SUBSCRIPTION_KEY_HERE';
const endpoint = 'PASTE_YOUR_COMPUTER_VISION_ENDPOINT_HERE';

Importante

Recuerde quitar la clave de suscripción del código cuando haya terminado y nunca la haga pública. En el caso de producción, considere la posibilidad de usar alguna forma segura de almacenar las credenciales, y acceder a ellas. Por ejemplo, Azure Key Vault.

Modelo de objetos

Las siguientes clases e interfaces controlan algunas de las características principales del SDK de OCR para Node.js.

Nombre Descripción
ComputerVisionClient Esta clase es necesaria para todas las funcionalidades de Computer Vision. Cree una instancia de ella con la información de suscripción y úsela para realizar la mayoría de las operaciones con imágenes.

Ejemplos de código

En estos fragmentos de código se muestra cómo realizar las siguientes tareas con la biblioteca cliente de OCR para Node.js:

Autenticar el cliente

Cree una instancia de un cliente con la clave y el punto de conexión. Cree un objeto ApiKeyCredentials con su clave y punto de conexión y úselo para crear un objeto ComputerVisionClient.

const computerVisionClient = new ComputerVisionClient(
  new ApiKeyCredentials({ inHeader: { 'Ocp-Apim-Subscription-Key': key } }), endpoint);

Luego, defina una función computerVision y declare una serie asincrónica con la función principal y la función de devolución de llamada. Al final del script, completará esta definición de función y la llamará.

function computerVision() {
  async.series([
    async function () {

Lectura de texto manuscrito e impreso

El servicio OCR puede extraer el texto visible de una imagen y convertirlo en una secuencia de caracteres. Este ejemplo utiliza las operaciones de lectura.

Configuración de imágenes de prueba

Guarde una referencia de la dirección URL de las imágenes de las que quiere extraer texto.

// URL images containing printed and/or handwritten text. 
// The URL can point to image files (.jpg/.png/.bmp) or multi-page files (.pdf, .tiff).
const printedTextSampleURL = 'https://moderatorsampleimages.blob.core.windows.net/samples/sample2.jpg';
const multiLingualTextURL = 'https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/MultiLingual.png';
const mixedMultiPagePDFURL = 'https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/MultiPageHandwrittenForm.pdf';

Nota

También puede leer el texto de una imagen local. Consulte los métodos ComputerVisionClient, como readInStream. O bien, consulte el código de ejemplo en GitHub para escenarios relacionados con imágenes locales.

Llamada a la API Read

Defina los campos siguientes en la función para indicar los valores de estado de la llamada a Read.

// Status strings returned from Read API. NOTE: CASING IS SIGNIFICANT.
// Before Read 3.0, these are "Succeeded" and "Failed"
const STATUS_SUCCEEDED = "succeeded";
const STATUS_FAILED = "failed"

Agregue el código siguiente, que llama a la función readTextFromURL para las imágenes proporcionadas.

// Recognize text in printed image from a URL
console.log('Read printed text from URL...', printedTextSampleURL.split('/').pop());
const printedResult = await readTextFromURL(computerVisionClient, printedTextSampleURL);
printRecText(printedResult);

// Recognize multi-lingual text in a PNG from a URL
console.log('\nRead printed multi-lingual text in a PNG from URL...', multiLingualTextURL.split('/').pop());
const multiLingualResult = await readTextFromURL(computerVisionClient, multiLingualTextURL);
printRecText(multiLingualResult);

// Recognize printed text and handwritten text in a PDF from a URL
console.log('\nRead printed and handwritten text from a PDF from URL...', mixedMultiPagePDFURL.split('/').pop());
const mixedPdfResult = await readTextFromURL(computerVisionClient, mixedMultiPagePDFURL);
printRecText(mixedPdfResult);

Defina la función readTextFromURL. Esta acción llama al método read en el objeto de cliente, que devuelve un identificador de operación e inicia un proceso asincrónico para leer el contenido de la imagen. A continuación, usa el identificador de operación para comprobar el estado de la operación hasta que se devuelvan los resultados. Después, devuelve los resultados extraídos.

// Perform read and await the result from URL
async function readTextFromURL(client, url) {
  // To recognize text in a local image, replace client.read() with readTextInStream() as shown:
  let result = await client.read(url);
  // Operation ID is last path segment of operationLocation (a URL)
  let operation = result.operationLocation.split('/').slice(-1)[0];

  // Wait for read recognition to complete
  // result.status is initially undefined, since it's the result of read
  while (result.status !== STATUS_SUCCEEDED) { await sleep(1000); result = await client.getReadResult(operation); }
  return result.analyzeResult.readResults; // Return the first page of result. Replace [0] with the desired page if this is a multi-page file such as .pdf or .tiff.
}

Seguidamente, defina la función auxiliar printRecText, que imprime los resultados de la operación de lectura en la consola.

// Prints all text from Read result
function printRecText(readResults) {
  console.log('Recognized text:');
  for (const page in readResults) {
    if (readResults.length > 1) {
      console.log(`==== Page: ${page}`);
    }
    const result = readResults[page];
    if (result.lines.length) {
      for (const line of result.lines) {
        console.log(line.words.map(w => w.text).join(' '));
      }
    }
    else { console.log('No recognized text.'); }
  }
}

Cerrar la función

Cierre la función computerVision y llámela.


    },
    function () {
      return new Promise((resolve) => {
        resolve();
      })
    }
  ], (err) => {
    throw (err);
  });
}

computerVision();

Ejecución de la aplicación

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

node index.js

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción a Cognitive Services, puede eliminar el recurso o 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 instalar la biblioteca cliente de OCR y a usar Read API. A continuación, obtenga más información sobre las características de Read API.

Use la biblioteca cliente de OCR para leer texto impreso y manuscrito de imágenes.

Documentación de referencia | Código fuente de la biblioteca | Paquete

Requisitos previos

  • Una suscripción a Azure: cree una cuenta gratuita.
  • La versión más reciente de Go.
  • Una vez que tenga la suscripción de Azure, cree un recurso de Computer Vision en Azure Portal para obtener la clave y el punto de conexión. Una vez que se implemente, haga clic en Ir al recurso.
    • Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación al servicio Computer Vision. 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 directorio del proyecto de Go

En una ventana de consola (cmd, PowerShell, Terminal, Bash), cree una nueva área de trabajo para el proyecto de Go llamado my-app y vaya hasta ella.

mkdir -p my-app/{src, bin, pkg}  
cd my-app

El área de trabajo contendrá tres carpetas:

  • src: este directorio contendrá código fuente y paquetes. Todos los paquetes instalados con el comando go get se encontrarán en este directorio.
  • pkg: este directorio contendrá objetos de paquete de Go compilados. Todos estos archivos tienen la extensión .a.
  • bin: este directorio contendrá los archivos ejecutables binarios que se crean al ejecutar go install.

Sugerencia

Para más información sobre la estructura de un área de trabajo de Go, consulte la documentación del lenguaje Go. En esta guía se incluye información para establecer $GOPATH y $GOROOT.

Instalación de la biblioteca cliente para Go

Instale a continuación la biblioteca cliente para Go:

go get -u https://github.com/Azure/azure-sdk-for-go/tree/master/services/cognitiveservices/v2.1/computervision

O, si usa dep, dentro de su repositorio ejecute:

dep ensure -add https://github.com/Azure/azure-sdk-for-go/tree/master/services/cognitiveservices/v2.1/computervision

Creación de una aplicación de Go

A continuación, cree un archivo en el directorio src denominado sample-app.go:

cd src
touch sample-app.go

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.

Abra sample-app.go en el entorno de desarrollo integrado o editor de texto que prefiera.

Declare un contexto en la raíz del script. Necesitará este objeto para ejecutar la mayoría de las llamadas a funciones de Computer Vision.

Búsqueda de la clave de suscripción y el punto de conexión

Vaya a Azure Portal. Si el recurso de Computer Vision 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. Las claves de suscripción y el punto de conexión se encuentran en la página Clave y punto de conexión del recurso, en Administración de recursos.

Cree variables para la clave de suscripción y el punto de conexión de Computer Vision. Pegue la clave de suscripción y el punto de conexión en el código siguiente, donde se indica. El punto de conexión de Computer Vision tiene el formato https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/.

package main

import (
    "context"
    "encoding/json"
    "fmt"
    "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v2.0/computervision"
    "github.com/Azure/go-autorest/autorest"
    "io"
    "log"
    "os"
    "strings"
    "time"
)

// Declare global so don't have to pass it to all of the tasks.
var computerVisionContext context.Context

func main() {
    computerVisionKey := "PASTE_YOUR_COMPUTER_VISION_SUBSCRIPTION_KEY_HERE"
    endpointURL := "PASTE_YOUR_COMPUTER_VISION_ENDPOINT_HERE"

Importante

Recuerde quitar la clave de suscripción del código cuando haya terminado y nunca la haga pública. En el caso de producción, considere la posibilidad de usar alguna forma segura de almacenar las credenciales, y acceder a ellas. Por ejemplo, Azure Key Vault.

A continuación, empezará a agregar código para llevar a cabo distintas operaciones de OCR.

Modelo de objetos

Las siguientes clases e interfaces controlan algunas de las características principales del SDK de OCR para Go.

Nombre Descripción
BaseClient Esta clase es necesaria para todas las funciones de Computer Vision, como el análisis de imágenes y la lectura de texto. Cree una instancia de ella con la información de suscripción y úsela para realizar la mayoría de las operaciones con imágenes.
ReadOperationResult Este tipo contiene los resultados de una operación de lectura por lotes.

Ejemplos de código

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

Autenticar el cliente

Nota

En este paso se da por supuesto que ha creado variables de entorno para la clave de Computer Vision y el punto de conexión, denominadas COMPUTER_VISION_SUBSCRIPTION_KEY y COMPUTER_VISION_ENDPOINT respectivamente.

Cree una función main y agréguele el código siguiente para crear una instancia de un cliente con su punto de conexión y clave.

/*  
 * Configure the Computer Vision client
 */
computerVisionClient := computervision.New(endpointURL);
computerVisionClient.Authorizer = autorest.NewCognitiveServicesAuthorizer(computerVisionKey)

computerVisionContext = context.Background()
/*
 * END - Configure the Computer Vision client
 */

Lectura de texto manuscrito e impreso

El servicio OCR puede leer texto visible de una imagen y convertirlo en una secuencia de caracteres. El código de esta sección define una función, RecognizeTextReadAPIRemoteImage, que utiliza el objeto de cliente para detectar y extraer texto impreso o manuscrito de la imagen.

Agregue la referencia de imagen de ejemplo y la llamada de función a la función main.

// Analyze text in an image, remote
BatchReadFileRemoteImage(computerVisionClient, printedImageURL)

Sugerencia

También puede extraer texto de una imagen local. Consulte los métodos BaseClient, como BatchReadFileInStream. O bien, consulte el código de ejemplo en GitHub para escenarios relacionados con imágenes locales.

Llamada a la API Read

Defina la nueva función para leer texto, RecognizeTextReadAPIRemoteImage. Agregue el código siguiente, que llama al método BatchReadFile para la imagen especificada. Este método devuelve un identificador de operación e inicia un proceso asincrónico para leer el contenido de la imagen.

func BatchReadFileRemoteImage(client computervision.BaseClient, remoteImageURL string) {
    fmt.Println("-----------------------------------------")
    fmt.Println("BATCH READ FILE - remote")
    fmt.Println()
    var remoteImage computervision.ImageURL
    remoteImage.URL = &remoteImageURL

    // The response contains a field called "Operation-Location", 
    // which is a URL with an ID that you'll use for GetReadOperationResult to access OCR results.
    textHeaders, err := client.BatchReadFile(computerVisionContext, remoteImage)
    if err != nil { log.Fatal(err) }

    // Use ExtractHeader from the autorest library to get the Operation-Location URL
    operationLocation := autorest.ExtractHeaderValue("Operation-Location", textHeaders.Response)

    numberOfCharsInOperationId := 36
    operationId := string(operationLocation[len(operationLocation)-numberOfCharsInOperationId : len(operationLocation)])

Obtención de resultados de lectura

A continuación, obtenga el identificador de operación devuelto de la llamada a BatchReadFile y úselo con el método GetReadOperationResult para consultar los resultados de la operación en el servicio. El código siguiente comprueba la operación a intervalos de un segundo hasta que se devuelven los resultados. A continuación, imprime los datos de texto extraídos en la consola.

readOperationResult, err := client.GetReadOperationResult(computerVisionContext, operationId)
if err != nil { log.Fatal(err) }

// Wait for the operation to complete.
i := 0
maxRetries := 10

fmt.Println("Recognizing text in a remote image with the batch Read API ...")
for readOperationResult.Status != computervision.Failed &&
        readOperationResult.Status != computervision.Succeeded {
    if i >= maxRetries {
        break
    }
    i++

    fmt.Printf("Server status: %v, waiting %v seconds...\n", readOperationResult.Status, i)
    time.Sleep(1 * time.Second)

    readOperationResult, err = client.GetReadOperationResult(computerVisionContext, operationId)
    if err != nil { log.Fatal(err) }
}

Visualización de resultados de lectura

Agregue el código siguiente para analizar y mostrar los datos de texto recuperados y finalice la definición de la función.

// Display the results.
fmt.Println()
for _, recResult := range *(readOperationResult.RecognitionResults) {
    for _, line := range *recResult.Lines {
        fmt.Println(*line.Text)
    }
}

Ejecución de la aplicación

Ejecute la aplicación desde el directorio de la aplicación con el comando go run.

go run sample-app.go

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción a Cognitive Services, puede eliminar el recurso o 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 instalar la biblioteca cliente de OCR y a usar Read API. A continuación, obtenga más información sobre las características de Read API.

Use la API REST Optical Character Recognition para leer texto impreso y manuscrito.

Nota

Este inicio rápido usa comandos de cURL para llamar a la API REST. También puede llamar a la API REST mediante un lenguaje de programación. Consulte los ejemplos de GitHub para obtener ejemplos en C#, Python, Java, JavaScript y Go.

Requisitos previos

  • Una suscripción a Azure: cree una cuenta gratuita.
  • Una vez que tenga la suscripción de Azure, cree un recurso de Computer Vision en Azure Portal para obtener la clave y el punto de conexión. Una vez que se implemente, haga clic en Ir al recurso.
    • Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación al servicio Computer Vision. 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.
  • cURL instalado

Extracción de texto impreso y manuscrito

El servicio OCR puede extraer el texto visible de una imagen o documento y convertirlo en una secuencia de caracteres. Para más información sobre la extracción de texto, consulte la introducción sobre el reconocimiento óptico de caracteres (OCR).

Llamada a la API Read

Para crear y ejecutar el ejemplo, siga estos pasos:

  1. Copie el comando siguiente en un editor de texto.
  2. Realice los siguientes cambios en el comando donde sea necesario:
    1. Reemplace el valor de <subscriptionKey> por la clave de suscripción.
    2. Reemplace la primera parte de la dirección URL de la solicitud (westcentralus) por el texto de la dirección URL de su punto de conexió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 para obtener una lista completa de los puntos de conexión regionales, consulte Nombres de subdominios personalizados para Cognitive Services.

    3. Si lo desea, cambie la dirección URL de la imagen del cuerpo de la solicitud (https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Atomist_quote_from_Democritus.png/338px-Atomist_quote_from_Democritus.png\) por la dirección URL de una imagen diferente que desee analizar.
  3. Abra una ventana de símbolo del sistema.
  4. Pegue el comando del editor de texto en la ventana del símbolo del sistema y después ejecute el comando.
curl -v -X POST "https://westcentralus.api.cognitive.microsoft.com/vision/v3.2/read/analyze" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription key>" --data-ascii "{\"url\":\"https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Atomist_quote_from_Democritus.png/338px-Atomist_quote_from_Democritus.png\"}"

La respuesta incluirá un encabezado Operation-Location cuyo valor es una dirección URL única. Use esta dirección URL para consultar los resultados de la operación de lectura. La dirección URL expira dentro de 48 horas.

Procedimientos para usar las características en vista previa (gb)

Para conocer las características y los idiomas en versión preliminar, consulte los procedimientos para especificar la versión del modelo. El modelo en versión preliminar incluye todas las mejoras realizadas en las características y los idiomas en GA.

Obtención de resultados de lectura

  1. Copie el comando siguiente en el editor de texto.
  2. Reemplace la dirección URL por el valor Operation-Location que usó en el paso anterior.
  3. Realice los siguientes cambios en el comando donde sea necesario:
    1. Reemplace el valor de <subscriptionKey> por la clave de suscripción.
  4. Abra una ventana de símbolo del sistema.
  5. Pegue el comando del editor de texto en la ventana del símbolo del sistema y después ejecute el comando.
curl -v -X GET "https://westcentralus.api.cognitive.microsoft.com/vision/v3.2/read/analyzeResults/{operationId}" -H "Ocp-Apim-Subscription-Key: {subscription key}" --data-ascii "{body}" 

Examen de la respuesta

Se devuelve una respuesta correcta en JSON. La aplicación de ejemplo analiza y muestra una respuesta correcta en la ventana del símbolo del sistema, parecida a la del ejemplo siguiente:

{
  "status": "succeeded",
  "createdDateTime": "2021-04-08T21:56:17.6819115+00:00",
  "lastUpdatedDateTime": "2021-04-08T21:56:18.4161316+00:00",
  "analyzeResult": {
    "version": "3.2",
    "readResults": [
      {
        "page": 1,
        "angle": 0,
        "width": 338,
        "height": 479,
        "unit": "pixel",
        "lines": [
          {
            "boundingBox": [
              25,
              14,
              318,
              14,
              318,
              59,
              25,
              59
            ],
            "text": "NOTHING",
            "appearance": {
              "style": {
                "name": "other",
                "confidence": 0.971
              }
            },
            "words": [
              {
                "boundingBox": [
                  27,
                  15,
                  294,
                  15,
                  294,
                  60,
                  27,
                  60
                ],
                "text": "NOTHING",
                "confidence": 0.994
              }
            ]
          }
        ]
      }
    ]
  }
}

Pasos siguientes

En este inicio rápido, ha aprendido a llamar a la API REST de Read. A continuación, obtenga más información sobre las características de Read API.