Guia de início rápido: Usar a biblioteca de clientes ou a API REST de Leitura

Introdução à API REST ou às bibliotecas de clientes de Leitura. O serviço de Leitura fornece algoritmos de IA para extrair o texto visível de imagens e retorná-lo como cadeias de caracteres estruturadas. Siga essas etapas para instalar um pacote para seu aplicativo e experimentar o código de exemplo para tarefas básicas.

Use a biblioteca de clientes de OCR para ler textos impressos e manuscritos de uma imagem.

Documentação de referência | Código-fonte da biblioteca | Pacote (NuGet) | Exemplos

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente
  • O IDE do Visual Studio ou a versão atual do .NET Core.
  • Depois de obter sua assinatura do Azure, crie um recurso da Pesquisa Visual Computacional no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, clique em Ir para o recurso.
    • Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo ao serviço de Pesquisa Visual Computacional. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
    • Use o tipo de preço gratuito (F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.

Configurando

Criar um aplicativo em C#

Usando o Visual Studio, crie um aplicativo .NET Core.

Instalar a biblioteca de clientes

Depois de criar um projeto, instale a biblioteca de clientes clicando com o botão direito do mouse na solução do projeto no Gerenciador de Soluções e selecionando Gerenciar Pacotes NuGet. No gerenciador de pacotes aberto, selecione Procurar, marque Incluir pré-lançamento e pesquise Microsoft.Azure.CognitiveServices.Vision.ComputerVision. Selecione a versão 7.0.0 e, em seguida, Instalar.

Dica

Deseja exibir todo o arquivo de código do início rápido de uma vez? Você pode encontrá-lo no GitHub, que contém os exemplos de código neste início rápido.

No diretório do projeto, abra o arquivo Program.cs no IDE ou no editor de sua preferência.

Encontrar a chave de assinatura e o ponto de extremidade

Acesse o portal do Azure. Se o recurso da Pesquisa Visual Computacional criado na seção Pré-requisitos tiver sido implantado com êxito, clique no botão Acessar o Recurso em Próximas Etapas. Encontre a chave de assinatura e o ponto de extremidade na página Chave e ponto de extremidade do recurso em Gerenciamento de recursos.

Na classe Program do aplicativo, crie variáveis para a chave de assinatura e o ponto de extremidade da Pesquisa Visual Computacional. Cole a chave de assinatura e o ponto de extremidade no código a seguir, quando indicado. O ponto de extremidade da Pesquisa Visual Computacional tem o 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

Lembre-se de remover a chave de assinatura do código quando terminar e nunca a poste publicamente. Para produção, considere o uso de uma maneira segura de armazenar e acessar suas credenciais. Por exemplo, o Azure Key Vault.

No método Main do aplicativo, adicione chamadas para os métodos usados neste início rápido. Elas serão criadas posteriormente.

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 objeto

As classes e as interfaces a seguir lidam com alguns dos principais recursos do SDK de OCR do .NET.

Nome Descrição
ComputerVisionClient Essa classe é necessária para toda a funcionalidade da Pesquisa Visual Computacional. Você cria uma instância delas com suas informações de assinatura e usa-a para fazer a maioria das operações de imagem.
ComputerVisionClientExtensions Essa classe contém métodos adicionais para o ComputerVisionClient.

Exemplos de código

Estes snippets de código mostram como realizar as seguintes tarefas com a biblioteca de clientes de OCR para .NET:

Autenticar o cliente

Em um novo método na classe Program, crie uma instância de um cliente com o ponto de extremidade e a chave de assinatura. Crie um objeto ApiKeyServiceClientCredentials com a chave de assinatura e use-o com o ponto de extremidade para criar um 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;
}

Ler texto impresso e manuscrito

O serviço de OCR pode ler um texto visível em uma imagem e convertê-lo em um fluxo de caracteres. Para obter mais informações sobre o reconhecimento de texto, confira a Visão geral do OCR (reconhecimento óptico de caracteres). O código desta seção usa a última versão do SDK da Pesquisa Visual Computacional para Leitura 3.0 e define um método, BatchReadFileUrl, que usa o objeto de cliente para detectar e extrair um texto na imagem.

Dica

Você também pode extrair um texto de uma imagem local. Confira os métodos de ComputerVisionClient, como ReadInStreamAsync. Ou veja o código de exemplo no GitHub para obter cenários que envolvam imagens locais.

Configurar imagem de teste

Na classe Program, salve uma referência à URL da imagem da qual deseja extrair o texto. Este snippet inclui imagens de exemplo de um texto impresso e manuscrito.

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

Chamar a API de Leitura

Defina o novo método para leitura do texto. Adicione o código abaixo, que chama o método ReadAsync da imagem especificada. Isso retorna uma ID de operação e inicia um processo assíncrono para ler o conteúdo da imagem.

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

Obter os resultados da leitura

Em seguida, obtenha a ID da operação retornada da chamada ReadAsync e use-a para consultar o serviço e obter os resultados da operação. O código a seguir verifica a operação até que os resultados sejam retornados. Em seguida, ele imprime os dados de texto extraídos no console.

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

Exibir os resultados da leitura

Adicione o código a seguir para analisar e exibir os dados de texto recuperados e concluir a definição de 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();
}

Executar o aplicativo

Execute o aplicativo clicando no botão Depurar na parte superior da janela do IDE.

Limpar os recursos

Se quiser limpar e remover uma assinatura dos Serviços Cognitivos, você poderá excluir o recurso ou grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Neste guia de início rápido, você aprendeu a instalar a biblioteca de clientes do OCR e a usar a API de Leitura. A seguir, saiba mais sobre os recursos da API de Leitura.

Use a biblioteca de clientes de reconhecimento óptico de caracteres para ler textos impressos e manuscritos com a API de Leitura.

Documentação de referência | Código-fonte da biblioteca | Pacote (PiPy) | Exemplos

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente

  • Python 3.x

    • A instalação do Python deve incluir o pip. Você pode executar pip --version na linha de comando para verificar se o pip está instalado. Instale a versão mais recente do Python para obter o pip.
  • Depois de obter sua assinatura do Azure, crie um recurso da Pesquisa Visual Computacional no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, clique em Ir para o recurso.

    • Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo ao serviço de Pesquisa Visual Computacional. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
    • Use o tipo de preço gratuito (F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.

Configurando

Instalar a biblioteca de clientes

É possível instalar a biblioteca de clientes com:

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

Instale também a biblioteca Pillow.

pip install pillow

Criar um novo aplicativo Python

Dica

Deseja exibir todo o arquivo de código do início rápido de uma vez? Você pode encontrá-lo no GitHub, que contém os exemplos de código neste início rápido.

Crie um arquivo do Python—quickstart-file.py, por exemplo. Depois, abra-o no seu editor ou IDE preferido.

Encontrar a chave de assinatura e o ponto de extremidade

Acesse o portal do Azure. Se o recurso da Pesquisa Visual Computacional criado na seção Pré-requisitos tiver sido implantado com êxito, clique no botão Acessar o Recurso em Próximas Etapas. Encontre a chave de assinatura e o ponto de extremidade na página Chave e ponto de extremidade do recurso em Gerenciamento de recursos.

Crie variáveis para a chave de assinatura e o ponto de extremidade da Pesquisa Visual Computacional. Cole a chave de assinatura e o ponto de extremidade no código a seguir, quando indicado. O ponto de extremidade da Pesquisa Visual Computacional tem o 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

Lembre-se de remover a chave de assinatura do código quando terminar e nunca a poste publicamente. Para produção, considere o uso de uma maneira segura de armazenar e acessar suas credenciais. Por exemplo, o Azure Key Vault.

Modelo de objeto

As classes e as interfaces a seguir lidam com alguns dos principais recursos do SDK de OCR do Python.

Nome Descrição
ComputerVisionClientOperationsMixin Essa classe manipula diretamente todas as operações de imagem, como análise de imagem, detecção de texto e geração de miniaturas.
ComputerVisionClient Essa classe é necessária para toda a funcionalidade da Pesquisa Visual Computacional. Você a instancia com suas informações de assinatura e a usa para produzir instâncias de outras classes. Ela implementa ComputerVisionClientOperationsMixin.
VisualFeatureTypes Essa enumeração define os diferentes tipos de análise de imagem que podem ser feitos em uma operação de análise padrão. Especifique um conjunto de valores VisualFeatureTypes dependendo de suas necessidades.

Exemplos de código

Estes snippets de código mostram como realizar as seguintes tarefas com a biblioteca de clientes de OCR para Python:

Autenticar o cliente

Instancie um cliente com o ponto de extremidade e a chave. Crie um objeto CognitiveServicesCredentials com sua chave e use-o com seu ponto de extremidade para criar um objeto ComputerVisionClient.

computervision_client = ComputerVisionClient(endpoint, CognitiveServicesCredentials(subscription_key))

Ler texto impresso e manuscrito

O serviço de OCR pode ler um texto visível em uma imagem e convertê-lo em um fluxo de caracteres. Faça isso em duas partes.

Chamar a API de Leitura

Primeiro, use o código a seguir para chamar o método read para a imagem especificada. Isso retorna uma ID de operação e inicia um processo assíncrono para ler o conteúdo da imagem.

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

Dica

Você também pode ler um texto de uma imagem local. Confira os métodos de ComputerVisionClientOperationsMixin, como read_in_stream. Ou veja o código de exemplo no GitHub para obter cenários que envolvam imagens locais.

Obter os resultados da leitura

Em seguida, obtenha a ID da operação retornada da chamada read e use-a para consultar o serviço para obter os resultados da operação. O código a seguir verifica a operação em intervalos de um segundo até que os resultados sejam retornados. Em seguida, ele imprime os dados de texto extraídos no console.

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

Executar o aplicativo

Execute o aplicativo com o comando python no seu arquivo de início rápido.

python quickstart-file.py

Limpar os recursos

Se quiser limpar e remover uma assinatura dos Serviços Cognitivos, você poderá excluir o recurso ou grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Neste guia de início rápido, você aprendeu a instalar a biblioteca de clientes do OCR e a usar a API de Leitura. A seguir, saiba mais sobre os recursos da API de Leitura.

Use a biblioteca de clientes de reconhecimento óptico de caracteres para ler textos impressos e manuscritos em imagens.

Documentação de referência | Código-fonte da biblioteca |Artefato (Maven) | Exemplos

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente
  • A versão atual do JDK (Java Development Kit)
  • A ferramenta de build Gradle ou outro gerenciador de dependência.
  • Depois de obter sua assinatura do Azure, crie um recurso da Pesquisa Visual Computacional no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, clique em Ir para o recurso.
    • Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo ao serviço de Pesquisa Visual Computacional. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
    • Use o tipo de preço gratuito (F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.

Configurando

Criar um novo projeto Gradle

Em uma janela de console (como cmd, PowerShell ou Bash), crie um novo diretório para seu aplicativo e navegue até ele.

mkdir myapp && cd myapp

Execute o comando gradle init em seu diretório de trabalho. Esse comando criará arquivos de build essenciais para o Gradle, incluindo o build.gradle.kts, que é usado no runtime para criar e configurar seu aplicativo.

gradle init --type basic

Quando solicitado a escolher uma DSL, escolha Kotlin.

Instalar a biblioteca de clientes

Este início rápido usa o gerenciador de dependência do Gradle. Você pode encontrar a biblioteca de clientes e informações para outros gerenciadores de dependência no Repositório Central do Maven.

Localize o build.gradle.kts e abra-o com seu IDE ou editor de texto preferencial. Depois copie nessa configuração de build a seguir. Essa configuração define o projeto como um aplicativo Java cujo ponto de entrada é a classe ComputerVisionQuickstart. Ela importa a biblioteca da Pesquisa Visual Computacional.

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

Criar um arquivo Java

Em seu diretório de trabalho, execute o comando a seguir para criar uma pasta de origem do projeto:

mkdir -p src/main/java

Dica

Deseja exibir todo o arquivo de código do início rápido de uma vez? Você pode encontrá-lo no GitHub, que contém os exemplos de código neste início rápido.

Navegue até a nova pasta e crie um arquivo chamado ComputerVisionQuickstart.java. Abra-o no seu editor ou IDE preferido.

Encontrar a chave de assinatura e o ponto de extremidade

Acesse o portal do Azure. Se o recurso da Pesquisa Visual Computacional criado na seção Pré-requisitos tiver sido implantado com êxito, clique no botão Acessar o Recurso em Próximas Etapas. Encontre a chave de assinatura e o ponto de extremidade na página Chave e ponto de extremidade do recurso em Gerenciamento de recursos.

Defina a classe ComputerVisionQuickstart. Crie variáveis para a chave de assinatura e o ponto de extremidade da Pesquisa Visual Computacional. Cole a chave de assinatura e o ponto de extremidade no código a seguir, quando indicado. O ponto de extremidade da Pesquisa Visual Computacional tem o 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

Lembre-se de remover a chave de assinatura do código quando terminar e nunca a poste publicamente. Para produção, considere o uso de uma maneira segura de armazenar e acessar suas credenciais. Por exemplo, o Azure Key Vault.

No método main do aplicativo, adicione chamadas para os métodos usados neste guia de início rápido. Você os definirá mais tarde.

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 objeto

As classes e as interfaces a seguir lidam com alguns dos principais recursos do SDK de OCR do Java.

Nome Descrição
ComputerVisionClient Essa classe é necessária para toda a funcionalidade da Pesquisa Visual Computacional. Você a instancia com suas informações de assinatura e a usa para produzir instâncias de outras classes.

Exemplos de código

Estes snippets de código mostram como realizar as seguintes tarefas com a biblioteca de clientes de OCR para Java:

Autenticar o cliente

Em um novo método, crie uma instância do objeto ComputerVisionClient com o ponto de extremidade e a chave.

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

Ler texto impresso e manuscrito

O serviço de OCR pode ler um texto visível em uma imagem e convertê-lo em um fluxo de caracteres. Esta seção define um método, ReadFromFile, que usa um caminho de arquivo local e imprime o texto da imagem no console.

Dica

Também é possível ler texto em uma imagem remota referenciada pela URL. Confira os métodos de ComputerVision, como read. Ou veja o código de exemplo no GitHub para ver cenários que envolvem imagens remotas.

Configurar imagem de teste

Crie uma pasta resources/ na pasta src/main/ do seu projeto e adicione uma imagem com base na qual você gostaria de ler o texto. Você pode baixar uma imagem de amostra para usar aqui.

Em seguida, adicione a definição de método a seguir à sua classe ComputerVisionQuickstart. Altere o valor de localFilePath para corresponder ao arquivo de imagem.

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

Chamar a API de Leitura

Adicione o código a seguir para chamar o método readInStreamWithServiceResponseAsync para a imagem fornecida.


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

O bloco de código a seguir extrai a ID da operação da resposta da chamada de leitura. Ele usa essa ID com um método auxiliar para imprimir os resultados de leitura de texto no console.

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

getAndPrintReadResult(vision, operationLocation);

Feche o bloco try/catch e a definição de método.


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

Obter os resultados da leitura

Em seguida, adicione uma definição para o método auxiliar. Esse método usa a ID da operação da etapa anterior para consultar a operação de leitura e obter os resultados do OCR quando eles estiverem disponíveis.

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

O restante do método analisa os resultados do OCR e os imprime no console.

    // 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 fim, adicione o outro método auxiliar usado acima, que extrai a ID da operação da resposta 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");
}

Executar o aplicativo

É possível criar o aplicativo com:

gradle build

Execute o aplicativo com o comando gradle run:

gradle run

Limpar os recursos

Se quiser limpar e remover uma assinatura dos Serviços Cognitivos, você poderá excluir o recurso ou grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Neste guia de início rápido, você aprendeu a instalar a biblioteca de clientes do OCR e a usar a API de Leitura. A seguir, saiba mais sobre os recursos da API de Leitura.

Use a biblioteca de clientes de reconhecimento óptico de caracteres para ler textos impressos e manuscritos com a API de Leitura.

Documentação de referência | Código-fonte da biblioteca | Pacote (npm) | Exemplos

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente
  • A versão atual do Node.js
  • Depois de obter sua assinatura do Azure, crie um recurso da Pesquisa Visual Computacional no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, clique em Ir para o recurso.
    • Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo ao serviço de Pesquisa Visual Computacional. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
    • Use o tipo de preço gratuito (F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.

Configurando

Criar um novo aplicativo do Node.js

Em uma janela de console (como cmd, PowerShell ou Bash), crie um novo diretório para seu aplicativo e navegue até ele.

mkdir myapp && cd myapp

Execute o comando npm init para criar um aplicativo do Node com um arquivo package.json.

npm init

Instalar a biblioteca de clientes

Instale os pacotes NPM ms-rest-azure e @azure/cognitiveservices-computervision:

npm install @azure/cognitiveservices-computervision

Instale também o módulo assíncrono:

npm install async

O arquivo package.json do seu aplicativo será atualizado com as dependências.

Dica

Deseja exibir todo o arquivo de código do início rápido de uma vez? Você pode encontrá-lo no GitHub, que contém os exemplos de código neste início rápido.

Crie um novo arquivo, index.js, e abra-o em um editor de texto.

Encontrar a chave de assinatura e o ponto de extremidade

Acesse o portal do Azure. Se o recurso da Pesquisa Visual Computacional criado na seção Pré-requisitos tiver sido implantado com êxito, clique no botão Acessar o Recurso em Próximas Etapas. Encontre a chave de assinatura e o ponto de extremidade na página Chave e ponto de extremidade do recurso em Gerenciamento de recursos.

Crie variáveis para a chave de assinatura e o ponto de extremidade da Pesquisa Visual Computacional. Cole a chave de assinatura e o ponto de extremidade no código a seguir, quando indicado. O ponto de extremidade da Pesquisa Visual Computacional tem o 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

Lembre-se de remover a chave de assinatura do código quando terminar e nunca a poste publicamente. Para produção, considere o uso de uma maneira segura de armazenar e acessar suas credenciais. Por exemplo, o Azure Key Vault.

Modelo de objeto

As classes e as interfaces a seguir lidam com alguns dos principais recursos do SDK de OCR do Node.js.

Nome Descrição
ComputerVisionClient Essa classe é necessária para toda a funcionalidade da Pesquisa Visual Computacional. Você cria uma instância delas com suas informações de assinatura e usa-a para fazer a maioria das operações de imagem.

Exemplos de código

Estes snippets de código mostram como realizar as seguintes tarefas com a biblioteca de clientes de OCR para Node.js:

Autenticar o cliente

Instancie um cliente com o ponto de extremidade e a chave. Crie um objeto ApiKeyCredentials com sua chave e ponto de extremidade e use-o para criar um objeto ComputerVisionClient.

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

Em seguida, defina uma função computerVision e declare uma série assíncrona com a função principal e a função de retorno de chamada. Ao final do script, você concluirá essa definição de função e a chamará.

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

Ler texto impresso e manuscrito

O serviço de OCR pode extrair o texto visível de uma imagem e convertê-lo em um fluxo de caracteres. Este exemplo usa as operações de Leitura.

Configurar imagens de teste

Salve uma referência da URL das imagens das quais você deseja extrair 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';

Observação

Você também pode ler um texto de uma imagem local. Confira os métodos de ComputerVisionClient, como readInStream. Ou veja o código de exemplo no GitHub para obter cenários que envolvam imagens locais.

Chamar a API de Leitura

Defina os campos a seguir em sua função para denotar os valores de status da chamada de Leitura.

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

Adicione o código abaixo, que chama a função readTextFromURL para as imagens especificadas.

// 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 a função readTextFromURL. Isso chama o método read no objeto do cliente, que retorna uma ID de operação e inicia um processo assíncrono para ler o conteúdo da imagem. Em seguida, ela usa a ID da operação para verificar o status da operação até que os resultados sejam retornados. Eles retornam os 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.
}

Em seguida, defina a função auxiliar printRecText, que imprime os resultados das operações de Leitura no console.

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

Fechar a função

Feche e chame a função computerVision.


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

computerVision();

Executar o aplicativo

Execute o aplicativo com o comando node no seu arquivo de início rápido.

node index.js

Limpar os recursos

Se quiser limpar e remover uma assinatura dos Serviços Cognitivos, você poderá excluir o recurso ou grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Neste guia de início rápido, você aprendeu a instalar a biblioteca de clientes do OCR e a usar a API de Leitura. A seguir, saiba mais sobre os recursos da API de Leitura.

Use a biblioteca de clientes de OCR para ler textos impressos e manuscritos de imagens.

Documentação de referência | Código-fonte da biblioteca | Pacote

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente
  • A versão mais recente do Go
  • Depois de obter sua assinatura do Azure, crie um recurso da Pesquisa Visual Computacional no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, clique em Ir para o recurso.
    • Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo ao serviço de Pesquisa Visual Computacional. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
    • Use o tipo de preço gratuito (F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.

Configurando

Criar um diretório do projeto Go

Em uma janela de console (cmd, PowerShell, Terminal, Bash), crie um novo workspace para seu projeto do Go, chamado my-app, e navegue até ele.

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

Seu workspace conterá três pastas:

  • src – Esse diretório terá o código-fonte e os pacotes. Todos os pacotes instalados com o comando go get residirão nesse diretório.
  • pkg – Esse diretório terá os objetos de pacote Go compilados. Todos esses arquivos têm uma extensão .a.
  • bin – Esse diretório terá os arquivos executáveis binários que são criados quando você executa o go install.

Dica

Para saber mais sobre a estrutura de um workspace Go, consulte a documentação da linguagem Go. Este guia inclui informações para configurar $GOPATH e $GOROOT.

Instalar a biblioteca de clientes para Go

Em seguida, instale a biblioteca de clientes para Go:

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

Ou se você usar o DEP, no repositório, execute:

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

Criar um aplicativo Go

Em seguida, crie um arquivo no diretório src chamado sample-app.go:

cd src
touch sample-app.go

Dica

Deseja exibir todo o arquivo de código do início rápido de uma vez? Você pode encontrá-lo no GitHub, que contém os exemplos de código neste início rápido.

Abra sample-app.go em seu IDE ou editor de texto preferido.

Declare um contexto na raiz do script. Você precisará desse objeto para executar a maioria das chamadas de função da Pesquisa Visual Computacional.

Encontrar a chave de assinatura e o ponto de extremidade

Acesse o portal do Azure. Se o recurso da Pesquisa Visual Computacional criado na seção Pré-requisitos tiver sido implantado com êxito, clique no botão Acessar o Recurso em Próximas Etapas. Encontre a chave de assinatura e o ponto de extremidade na página Chave e ponto de extremidade do recurso em Gerenciamento de recursos.

Crie variáveis para a chave de assinatura e o ponto de extremidade da Pesquisa Visual Computacional. Cole a chave de assinatura e o ponto de extremidade no código a seguir, quando indicado. O ponto de extremidade da Pesquisa Visual Computacional tem o 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

Lembre-se de remover a chave de assinatura do código quando terminar e nunca a poste publicamente. Para produção, considere o uso de uma maneira segura de armazenar e acessar suas credenciais. Por exemplo, o Azure Key Vault.

Em seguida, você começará a adicionar um código para realizar diferentes operações de OCR.

Modelo de objeto

As classes e as interfaces a seguir lidam com alguns dos principais recursos do SDK de OCR do Go.

Nome Descrição
BaseClient Essa classe é necessária para todas as funcionalidades de Pesquisa Visual Computacional, como análise de imagem e leitura de texto. Você cria uma instância delas com suas informações de assinatura e usa-a para fazer a maioria das operações de imagem.
ReadOperationResult Esse tipo contém os resultados de uma operação de leitura em lote.

Exemplos de código

Estes snippets de código mostram como realizar as seguintes tarefas com a biblioteca de clientes de OCR para Go:

Autenticar o cliente

Observação

Esta etapa pressupõe que você já criou variáveis de ambiente para a chave e o ponto de extremidade da Pesquisa Visual Computacional, denominados COMPUTER_VISION_SUBSCRIPTION_KEY e COMPUTER_VISION_ENDPOINT, respectivamente.

Crie uma função main e adicione o código a seguir a ela para criar uma instância de um cliente com o ponto de extremidade e a chave.

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

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

Ler texto impresso e manuscrito

O serviço de OCR pode ler um texto visível em uma imagem e convertê-lo em um fluxo de caracteres. O código desta seção define uma função, RecognizeTextReadAPIRemoteImage, que usa o objeto de cliente para detectar e extrair um texto impresso ou manuscrito na imagem.

Adicione a referência de imagem de exemplo e a chamada de função em sua função main.

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

Dica

Você também pode extrair um texto de uma imagem local. Confira os métodos de BaseClient, como BatchReadFileInStream. Ou veja o código de exemplo no GitHub para obter cenários que envolvam imagens locais.

Chamar a API de Leitura

Defina a nova função para leitura do texto, RecognizeTextReadAPIRemoteImage. Adicione o código abaixo, que chama o método BatchReadFile da imagem especificada. Esse método retorna uma ID de operação e inicia um processo assíncrono para ler o conteúdo da imagem.

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

Obter os resultados da leitura

Em seguida, obtenha a ID da operação retornada da chamada BatchReadFile e use-a com o método GetReadOperationResult para consultar o serviço a fim de obter os resultados da operação. O código a seguir verifica a operação em intervalos de um segundo até que os resultados sejam retornados. Em seguida, ele imprime os dados de texto extraídos no console.

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

Exibir os resultados da leitura

Adicione o código a seguir para analisar e exibir os dados de texto recuperados e concluir a definição de função.

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

Executar o aplicativo

Execute o aplicativo do seu diretório de aplicativo com o comando go run.

go run sample-app.go

Limpar os recursos

Se quiser limpar e remover uma assinatura dos Serviços Cognitivos, você poderá excluir o recurso ou grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Neste guia de início rápido, você aprendeu a instalar a biblioteca de clientes do OCR e a usar a API de Leitura. A seguir, saiba mais sobre os recursos da API de Leitura.

Use a API REST de reconhecimento óptico de caracteres para ler textos impressos e manuscritos.

Observação

Este guia de início rápido usa comandos cURL para chamar a API REST. Você também pode chamar a API REST usando uma linguagem de programação. Confira as amostras do GitHub para obter exemplos em C#, Python, Java, JavaScript e Go.

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente
  • Depois de obter sua assinatura do Azure, crie um recurso da Pesquisa Visual Computacional no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, clique em Ir para o recurso.
    • Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo ao serviço de Pesquisa Visual Computacional. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
    • Use o tipo de preço gratuito (F0) para experimentar o serviço e atualizar mais tarde para um nível pago para produção.
  • cURL instalado

Extrair texto impresso e manuscrito

O serviço de OCR pode extrair texto visível de uma imagem ou documento e convertê-lo em um fluxo de caracteres. Para obter mais informações sobre a extração de texto, confira a Visão geral do OCR (reconhecimento óptico de caracteres).

Chamar a API de Leitura

Para criar e executar o exemplo, siga estas etapas:

  1. Copie o seguinte comando em um editor de texto.
  2. Faça as alterações a seguir no comando quando necessário:
    1. Substitua o valor de <subscriptionKey> pela sua chave de assinatura.
    2. Substitua a primeira parte da URL de solicitação (westcentralus) pelo texto em sua URL de ponto de extremidade.

      Observação

      Os novos recursos criados após 1º de julho de 2019 usarão nomes de subdomínio personalizados. Para saber mais e para obter uma lista completa de pontos de extremidade regionais, confira Nomes de subdomínio personalizados para Serviços Cognitivos.

    3. Outra opção é alterar a URL da imagem no corpo da solicitação (https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Atomist_quote_from_Democritus.png/338px-Atomist_quote_from_Democritus.png\) para uma URL de uma imagem diferente a ser analisada.
  3. Abra una janela de prompt de comando.
  4. Cole o comando do editor de texto na janela do prompt de comando e, em seguida, execute-o.
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\"}"

A resposta incluirá um cabeçalho Operation-Location, cujo valor é uma URL exclusiva. Você usa essa URL para consultar os resultados da operação de Leitura. Uma URL expira em 48 horas.

Como usar a versão prévia dos recursos

Para ver os recursos e as linguagens de visualização, confira Como especificar a versão do modelo para usar a versão prévia mais recente. O modelo de visualização inclui quaisquer aprimoramentos para as linguagens e recursos GA atuais.

Obter os resultados da leitura

  1. Copie o comando a seguir no seu editor de texto.
  2. Substitua a URL pelo valor Operation-Location copiado na etapa anterior.
  3. Faça as alterações a seguir no comando quando necessário:
    1. Substitua o valor de <subscriptionKey> pela sua chave de assinatura.
  4. Abra una janela de prompt de comando.
  5. Cole o comando do editor de texto na janela do prompt de comando e, em seguida, execute-o.
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}" 

Examinar a resposta

Uma resposta com êxito é retornada em JSON. O aplicativo de exemplo analisa e exibe uma resposta bem-sucedida na janela do prompt de comando, semelhante ao exemplo a seguir:

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

Próximas etapas

Neste guia de início rápido, você aprendeu a chamar a API REST de Leitura. A seguir, saiba mais sobre os recursos da API de Leitura.