Snabbstart: Använda klientbiblioteket För läsning eller REST API

Kom igång med REST API eller klientbibliotek. Med tjänsten Läsa får du AI-algoritmer för att extrahera synlig text från bilder och returnera den som strukturerade strängar. Följ de här stegen för att installera ett paket i ditt program och prova exempelkoden för grundläggande uppgifter.

Använd OCR-klientbiblioteket för att läsa tryckt och handskriven text från en bild.

Referensdokumentation | Bibliotekskällkod | Paket (NuGet) | Exempel

Förutsättningar

  • En Azure-prenumeration – Skapa en utan kostnad
  • Den Visual Studio IDE eller den aktuella versionen av .NET Core.
  • När du har din Azure-prenumeration skapar du Visuellt innehåll resurs för att skapa Visuellt innehåll resurs i Azure Portal för att slutpunkt. När den har distribuerats klickar du på Gå till resurs.
    • Du behöver nyckeln och slutpunkten från resursen som du skapar för att ansluta ditt program till Visuellt innehåll tjänsten. Du klistrar in nyckeln och slutpunkten i koden nedan senare i snabbstarten.
    • Du kan använda den kostnadsfria prisnivån ( F0 ) för att prova tjänsten och uppgradera senare till en betald nivå för produktion.

Inrätta

Skapa ett nytt C#-program

Med Visual Studio skapar du ett nytt .NET Core-program.

Installera klientbiblioteket

När du har skapat ett nytt projekt installerar du klientbiblioteket genom att högerklicka på projektlösningen i Solution Explorer och välja Hantera NuGet-paket. I pakethanteraren som öppnas väljer du Bläddra, markerar Inkludera förhandsversion och söker efter Microsoft.Azure.CognitiveServices.Vision.ComputerVision . Välj version 7.0.0 och sedan Installera.

Tips

Vill du visa hela snabbstartskodfilen samtidigt? Du hittar den på GitHub, som innehåller kodexe exemplen i den här snabbstarten.

Från projektkatalogen öppnar du filen Program.cs i önskad redigerare eller IDE.

Hitta prenumerationsnyckeln och slutpunkten

Gå till Azure-portalen. Om den Visuellt innehåll som du skapade i avsnittet Förutsättningar har distribuerats klickar du på knappen Gå till resurs under Nästa steg. Du hittar din prenumerationsnyckel och slutpunkt på resursens nyckel- och slutpunktssida under resurshantering.

I programmets Program-klass skapar du variabler för din Visuellt innehåll prenumerationsnyckel och slutpunkt. Klistra in din prenumerationsnyckel och slutpunkt i följande kod där det anges. Slutpunkten Visuellt innehåll har formen 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";

Viktigt

Kom ihåg att ta bort prenumerationsnyckeln från koden när du är klar och aldrig publicera den offentligt. Överväg att använda ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter för produktion. Till exempel Azure Key Vault.

I programmets -metod Main lägger du till anrop för de metoder som används i den här snabbstarten. Du kommer att skapa dessa senare.

ComputerVisionClient client = Authenticate(endpoint, subscriptionKey);

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

Objektmodell

Följande klasser och gränssnitt hanterar några av de viktigaste funktionerna i OCR .NET SDK.

Name Beskrivning
ComputerVisionClient Den här klassen behövs för alla Visuellt innehåll funktioner. Du instansierar den med din prenumerationsinformation och använder den för att göra de flesta avbildningsåtgärder.
ComputerVisionClientExtensions Den här klassen innehåller ytterligare metoder för ComputerVisionClient.

Kodexempel

Dessa kodfragment visar hur du utför följande uppgifter med OCR-klientbiblioteket för .NET:

Autentisera klienten

I en ny metod i klassen Program instansierar du en klient med din slutpunkt och prenumerationsnyckel. Skapa ett ApiKeyServiceClientCredentials-objekt med din prenumerationsnyckel och använd det med slutpunkten för att skapa ett ComputerVisionClient-objekt.

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

Läsa tryckt och handskriven text

OCR-tjänsten kan läsa synlig text i en bild och konvertera den till en teckenström. Mer information om textigenkänning finns i översikten över optisk teckenläsning (OCR). Koden i det här avsnittet använder den senaste Visuellt innehåll SDK-versionen för Read 3.0 och definierar en metod, , som använder klientobjektet för att identifiera och extrahera BatchReadFileUrl text i bilden.

Tips

Du kan också extrahera text från en lokal bild. Se ComputerVisionClient-metoder, till exempel ReadInStreamAsync. Eller så kan du se exempelkoden på GitHub för scenarier som involverar lokala bilder.

Konfigurera testbild

Spara en referens till URL:en för den bild som du vill extrahera text från i klassen Program. Det här kodfragmentet innehåller exempelbilder för både tryckt och handskriven text.

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

Anropa Read-API:et

Definiera den nya metoden för att läsa text. Lägg till koden nedan, som anropar metoden ReadAsync för den angivna bilden. Detta returnerar ett åtgärds-ID och startar en asynkron process för att läsa innehållet i bilden.

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

Hämta läsresultat

Hämta sedan åtgärds-ID:t som returnerades från ReadAsync-anropet och använd det för att fråga tjänsten efter åtgärdsresultat. Följande kod kontrollerar åtgärden tills resultatet returneras. Den skriver sedan ut extraherade textdata till konsolen.

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

Visa läsresultat

Lägg till följande kod för att parsa och visa hämtade textdata och slutför metoddefinitionen.

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

Kör programmet

Kör programmet genom att klicka på knappen Felsök längst upp i IDE-fönstret.

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resursgruppen. När du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du installerar OCR-klientbiblioteket och använder API:et Läsa. Härnäst kan du läsa mer om read API-funktionerna.

Använd klientbiblioteket för optisk teckenläsning för att läsa tryckt och handskriven text med API:et Läsa.

Referensdokumentation | Bibliotekskällkod | Paket (PiPy) | Exempel

Förutsättningar

  • En Azure-prenumeration – Skapa en kostnadsfritt

  • Python 3.x

    • Python-installationen bör innehålla pip. Du kan kontrollera om pip har installerats genom pip --version att köra på kommandoraden. Hämta pip genom att installera den senaste versionen av Python.
  • När du har din Azure-prenumeration skapar du en Visuellt innehåll-resurs för att skapa Visuellt innehåll resurs i Azure Portal för att slutpunkt. När den har distribuerats klickar du på Gå till resurs.

    • Du behöver nyckeln och slutpunkten från den resurs som du skapar för att ansluta ditt program till Visuellt innehåll tjänsten. Du klistrar in din nyckel och slutpunkt i koden nedan senare i snabbstarten.
    • Du kan använda den kostnadsfria prisnivån ( F0 ) för att prova tjänsten och senare uppgradera till en betald nivå för produktion.

Inrätta

Installera klientbiblioteket

Du kan installera klientbiblioteket med:

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

Installera även biblioteket Pillow.

pip install pillow

Skapa ett nytt Python-program

Tips

Vill du visa hela snabbstartskodfilen samtidigt? Du hittar den på GitHub, som innehåller kodexe exemplen i den här snabbstarten.

Skapa till exempel en — quickstart-file.py Python-fil. Öppna den sedan i önskad redigerare eller IDE.

Hitta prenumerationsnyckeln och slutpunkten

Gå till Azure-portalen. Om den Visuellt innehåll som du skapade i avsnittet Förutsättningar har distribuerats klickar du på knappen Gå till resurs under Nästa steg. Du hittar din prenumerationsnyckel och slutpunkt på resursens nyckel- och slutpunktssida under resurshantering .

Skapa variabler för din Visuellt innehåll prenumerationsnyckel och slutpunkt. Klistra in din prenumerationsnyckel och slutpunkt i följande kod där det anges. Slutpunkten Visuellt innehåll har formen 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"

Viktigt

Kom ihåg att ta bort prenumerationsnyckeln från koden när du är klar och aldrig publicera den offentligt. Överväg att använda ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter för produktion. Till exempel Azure-nyckelvalvet.

Objektmodell

Följande klasser och gränssnitt hanterar några av de viktigaste funktionerna i OCR Python SDK.

Name Beskrivning
ComputerVisionClientOperationsMixin Den här klassen hanterar alla bildåtgärder direkt, till exempel bildanalys, textidentifiering och miniatyrgenerering.
ComputerVisionClient Den här klassen behövs för alla Visuellt innehåll funktioner. Du instansierar den med din prenumerationsinformation och använder den för att skapa instanser av andra klasser. Den implementerar ComputerVisionClientOperationsMixin.
VisualFeatureTypes Den här uppräkning definierar de olika typerna av bildanalys som kan göras i en standardåtgärd för Analys. Du anger en uppsättning VisualFeatureTypes-värden beroende på dina behov.

Kodexempel

De här kodfragmenten visar hur du utför följande uppgifter med OCR-klientbiblioteket för Python:

Autentisera klienten

Instansiera en klient med din slutpunkt och nyckel. Skapa ett CognitiveServicesCredentials-objekt med din nyckel och använd det med slutpunkten för att skapa ett ComputerVisionClient-objekt.

computervision_client = ComputerVisionClient(endpoint, CognitiveServicesCredentials(subscription_key))

Läsa tryckt och handskriven text

OCR-tjänsten kan läsa synlig text i en bild och konvertera den till en teckenström. Du gör detta i två delar.

Anropa API:et Read

Använd först följande kod för att anropa metoden read för den angivna bilden. Detta returnerar ett åtgärds-ID och startar en asynkron process för att läsa innehållet i bilden.

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

Tips

Du kan också läsa text från en lokal bild. Se metoderna ComputerVisionClientOperationsMixin, till exempel read_in_stream. Eller så kan du se exempelkoden på GitHub för scenarier som rör lokala avbildningar.

Hämta läsresultat

Hämta sedan åtgärds-ID:t som returnerades från läs-anropet och använd det för att fråga tjänsten efter åtgärdsresultat. Följande kod kontrollerar åtgärden med en sekunds intervall tills resultatet returneras. Den skriver sedan ut extraherade textdata till konsolen.

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

Kör programmet

Kör programmet med kommandot python i snabbstartsfilen.

python quickstart-file.py

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resursgruppen. Om du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du installerar OCR-klientbiblioteket och använder API:et Läsa. Härnäst kan du läsa mer om funktionerna i Api:et Läsa.

Använd klientbiblioteket för optisk teckenläsning för att läsa tryckt och handskriven text i bilder.

Referensdokumentation | Bibliotekskällkod | Artefakt (Maven) | Exempel

Förutsättningar

  • En Azure-prenumeration – Skapa en kostnadsfritt
  • Den aktuella versionen av Java Development Kit (JDK)
  • Gradle-byggverktyget, eller någon annan beroendehanterare.
  • När du har din Azure-prenumeration skapar du en Visuellt innehåll-resurs för att skapa Visuellt innehåll resurs i Azure Portal för att slutpunkt. När den har distribuerats klickar du på Gå till resurs.
    • Du behöver nyckeln och slutpunkten från den resurs som du skapar för att ansluta ditt program till Visuellt innehåll tjänsten. Du klistrar in din nyckel och slutpunkt i koden nedan senare i snabbstarten.
    • Du kan använda den kostnadsfria prisnivån ( F0 ) för att prova tjänsten och senare uppgradera till en betald nivå för produktion.

Inrätta

Skapa ett nytt Gradle-projekt

I ett konsolfönster (till exempel cmd, PowerShell eller Bash) skapar du en ny katalog för din app och navigerar till den.

mkdir myapp && cd myapp

Kör kommandot gradle init från arbetskatalogen. Det här kommandot skapar viktiga byggfiler för Gradle, inklusive build.gradle.kts, som används vid körning för att skapa och konfigurera ditt program.

gradle init --type basic

Välj en DSL när du uppmanas till det och välj Kotlin.

Installera klientbiblioteket

I den här snabbstarten används Gradle-beroendehanteraren. Du hittar klientbiblioteket och information för andra beroendehanterare på den centrala Maven-lagringsplatsen.

Leta upp build.gradle.kts och öppna det med önskad IDE eller textredigerare. Kopiera sedan följande byggkonfiguration. Den här konfigurationen definierar projektet som ett Java-program vars startpunkt är klassen ComputerVisionQuickstart. Den importerar Visuellt innehåll biblioteket.

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

Skapa en Java-fil

Kör följande kommando från arbetskatalogen för att skapa en projektkällmapp:

mkdir -p src/main/java

Tips

Vill du visa hela snabbstartskodfilen samtidigt? Du hittar den på GitHub, som innehåller kodexe exemplen i den här snabbstarten.

Navigera till den nya mappen och skapa en fil med namnet ComputerVisionQuickstart.java. Öppna den i önskad redigerare eller IDE.

Hitta prenumerationsnyckeln och slutpunkten

Gå till Azure-portalen. Om den Visuellt innehåll som du skapade i avsnittet Förutsättningar har distribuerats klickar du på knappen Gå till resurs under Nästa steg. Du hittar din prenumerationsnyckel och slutpunkt på resursens nyckel- och slutpunktssida under resurshantering .

Definiera klassen ComputerVisionQuickstart. Skapa variabler för din Visuellt innehåll prenumerationsnyckel och slutpunkt. Klistra in din prenumerationsnyckel och slutpunkt i följande kod där det anges. Slutpunkten Visuellt innehåll har formen 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";

Viktigt

Kom ihåg att ta bort prenumerationsnyckeln från koden när du är klar och aldrig publicera den offentligt. Överväg att använda ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter för produktion. Till exempel Azure Key Vault.

I programmets huvudmetod lägger du till anrop för de metoder som används i den här snabbstarten. Du definierar dessa senare.

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

Objektmodell

Följande klasser och gränssnitt hanterar några av de viktigaste funktionerna i OCR Java SDK.

Name Beskrivning
ComputerVisionClient Den här klassen behövs för alla Visuellt innehåll funktioner. Du instansierar den med din prenumerationsinformation och använder den för att skapa instanser av andra klasser.

Kodexempel

De här kodfragmenten visar hur du utför följande uppgifter med OCR-klientbiblioteket för Java:

Autentisera klienten

I en ny metod instansierar du ett ComputerVisionClient-objekt med din slutpunkt och nyckel.

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

Läsa tryckt och handskriven text

OCR-tjänsten kan läsa synlig text i en bild och konvertera den till en teckenström. Det här avsnittet definierar en ReadFromFile metod, , som tar en lokal filsökväg och skriver ut bildens text till konsolen.

Tips

Du kan också läsa text i en fjärrbild som url:en refererar till. Se ComputerVision-metoder, till exempel läsa. Eller så kan du se exempelkoden på GitHub för scenarier som rör fjärravbildningar.

Konfigurera testbild

Skapa en resurs/mapp i mappen src/main/ i projektet och lägg till en bild som du vill läsa text från. Du kan ladda ned en exempelavbildning som du kan använda här.

Lägg sedan till följande metoddefinition i klassen ComputerVisionQuickstart. Ändra värdet för så localFilePath att det matchar bildfilen.

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

Anropa API:et Read

Lägg sedan till följande kod för att anropa metoden readInStreamWithServiceResponseAsync för den angivna avbildningen.


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

Följande kodblock extraherar åtgärds-ID:t från svaret från Läs-anropet. Det använder detta ID med en hjälpmetod för att skriva ut textens läsresultat till konsolen.

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

getAndPrintReadResult(vision, operationLocation);

Stäng try/catch-blocket och metoddefinitionen.


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

Hämta läsresultat

Lägg sedan till en definition för hjälpmetoden. Den här metoden använder åtgärds-ID:t från föregående steg för att köra frågor mot läsåtgärden och hämta OCR-resultat när de är tillgängliga.

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

Resten av metoden parsar OCR-resultaten och skriver ut dem till konsolen.

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

Slutligen lägger du till den andra hjälpmetoden som används ovan, som extraherar åtgärds-ID:t från det första svaret.

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

Kör programmet

Du kan skapa appen med:

gradle build

Kör programmet med gradle run kommandot :

gradle run

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resursgruppen. När du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du installerar OCR-klientbiblioteket och använder API:et Läsa. Härnäst kan du läsa mer om funktionerna i Api:et Läsa.

Använd klientbiblioteket för optisk teckenläsning för att läsa tryckt och handskriven text med API:et Läsa.

Referensdokumentation | Bibliotekskällkod | Paket (npm) | Exempel

Förutsättningar

  • En Azure-prenumeration – Skapa en utan kostnad
  • Den aktuella versionen av Node.js
  • När du har din Azure-prenumeration skapar du Visuellt innehåll resurs för att skapa Visuellt innehåll resurs i Azure Portal för att slutpunkt. När den har distribuerats klickar du på Gå till resurs.
    • Du behöver nyckeln och slutpunkten från resursen som du skapar för att ansluta ditt program till Visuellt innehåll tjänsten. Du klistrar in nyckeln och slutpunkten i koden nedan senare i snabbstarten.
    • Du kan använda den kostnadsfria prisnivån ( F0 ) för att prova tjänsten och uppgradera senare till en betald nivå för produktion.

Inrätta

Skapa ett nytt Node.js-program

I ett konsolfönster (till exempel cmd, PowerShell eller Bash) skapar du en ny katalog för din app och navigerar till den.

mkdir myapp && cd myapp

Kör kommandot npm init för att skapa ett nodprogram med en package.json -fil.

npm init

Installera klientbiblioteket

Installera ms-rest-azure @azure/cognitiveservices-computervision NPM-paketet och :

npm install @azure/cognitiveservices-computervision

Installera även modulen async:

npm install async

Appens package.json fil uppdateras med beroendena.

Tips

Vill du visa hela snabbstartskodfilen samtidigt? Du hittar den på GitHub, som innehåller kodexe exemplen i den här snabbstarten.

Skapa en ny fil,index.js, och öppna den i en textredigerare.

Hitta prenumerationsnyckeln och slutpunkten

Gå till Azure-portalen. Om den Visuellt innehåll som du skapade i avsnittet Förutsättningar har distribuerats klickar du på knappen Gå till resurs under Nästa steg. Du hittar din prenumerationsnyckel och slutpunkt på resursens nyckel- och slutpunktssida under resurshantering.

Skapa variabler för din Visuellt innehåll-prenumerationsnyckel och slutpunkt. Klistra in din prenumerationsnyckel och slutpunkt i följande kod där det anges. Slutpunkten Visuellt innehåll har formen 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';

Viktigt

Kom ihåg att ta bort prenumerationsnyckeln från koden när du är klar och aldrig publicera den offentligt. Överväg att använda ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter för produktion. Till exempel Azure Key Vault.

Objektmodell

Följande klasser och gränssnitt hanterar några av de viktigaste funktionerna i OCR Node.js SDK.

Name Beskrivning
ComputerVisionClient Den här klassen behövs för alla Visuellt innehåll funktioner. Du instansierar den med din prenumerationsinformation och använder den för att göra de flesta avbildningsåtgärder.

Kodexempel

Dessa kodfragment visar hur du utför följande uppgifter med OCR-klientbiblioteket för Node.js:

Autentisera klienten

Instansiera en klient med din slutpunkt och nyckel. Skapa ett ApiKeyCredentials-objekt med din nyckel och slutpunkt och använd det för att skapa ett ComputerVisionClient-objekt.

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

Definiera sedan en funktion och computerVision deklarera en asynkron serie med primär funktion och återanropsfunktion. I slutet av skriptet slutför du den här funktionsdefinitionen och anropar den.

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

Läsa tryckt och handskriven text

OCR-tjänsten kan extrahera den synliga texten i en bild och konvertera den till en teckenström. I det här exemplet används läsåtgärderna.

Konfigurera testbilder

Spara en referens till URL:en för de bilder som du vill extrahera text från.

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

Anteckning

Du kan också läsa text från en lokal bild. Se ComputerVisionClient-metoderna, till exempel readInStream. Eller så kan du se exempelkoden på GitHub för scenarier som involverar lokala bilder.

Anropa Read-API:et

Definiera följande fält i funktionen för att ange statusvärdena för Läs-anropet.

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

Lägg till koden nedan, som anropar readTextFromURL funktionen för de givna bilderna.

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

Definiera readTextFromURL funktionen. Detta anropar metoden read för klientobjektet, som returnerar ett åtgärds-ID och startar en asynkron process för att läsa innehållet i bilden. Sedan används åtgärds-ID:t för att kontrollera åtgärdsstatusen tills resultatet returneras. De returnerar de extraherade resultaten.

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

Definiera sedan hjälpfunktionen printRecText , som skriver ut resultatet av läsåtgärderna till konsolen.

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

Stäng funktionen

Stäng funktionen computerVision och anropa den.


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

computerVision();

Kör programmet

Kör programmet med kommandot node i snabbstartsfilen.

node index.js

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resursgruppen. När du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du installerar OCR-klientbiblioteket och använder API:et Läsa. Härnäst kan du läsa mer om read API-funktionerna.

Använd OCR-klientbiblioteket för att läsa tryckt och handskriven text från bilder.

Referensdokumentation | Bibliotekskällkod | Paket

Förutsättningar

  • En Azure-prenumeration – Skapa en utan kostnad
  • Den senaste versionen av Go
  • När du har din Azure-prenumeration skapar du Visuellt innehåll resurs för att skapa Visuellt innehåll resurs i Azure Portal för att slutpunkt. När den har distribuerats klickar du på Gå till resurs.
    • Du behöver nyckeln och slutpunkten från resursen som du skapar för att ansluta ditt program till Visuellt innehåll tjänsten. Du klistrar in nyckeln och slutpunkten i koden nedan senare i snabbstarten.
    • Du kan använda den kostnadsfria prisnivån ( F0 ) för att prova tjänsten och uppgradera senare till en betald nivå för produktion.

Inrätta

Skapa en Go-projektkatalog

I ett konsolfönster (cmd, PowerShell, Terminal, Bash) skapar du en ny arbetsyta för Go-projektet med namnet my-app och navigerar till den.

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

Arbetsytan innehåller tre mappar:

  • src – Den här katalogen innehåller källkod och paket. Alla paket som installeras med go get kommandot kommer att placeras i den här katalogen.
  • pkg – den här katalogen innehåller de kompilerade Go-paketobjekten. Alla dessa filer har ett .a tillägg.
  • bin – Den här katalogen innehåller de binära körbara filer som skapas när du kör go install .

Tips

Mer information om strukturen för en Go-arbetsyta finns i språkdokumentationen för Go. Den här guiden innehåller information för att $GOPATH ställa in och $GOROOT .

Installera klientbiblioteket för Go

Installera sedan klientbiblioteket för Go:

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

eller i din lagringsplatskörning om du använder dep:

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

Skapa ett Go-program

Skapa sedan en fil i katalogen src med namnet sample-app.go :

cd src
touch sample-app.go

Tips

Vill du visa hela snabbstartskodfilen samtidigt? Du hittar den på GitHub, som innehåller kodexe exemplen i den här snabbstarten.

Öppna sample-app.go i önskad IDE eller textredigerare.

Deklarera en kontext i roten för skriptet. Du behöver det här objektet för att köra de flesta Visuellt innehåll funktionsanrop.

Hitta prenumerationsnyckeln och slutpunkten

Gå till Azure-portalen. Om den Visuellt innehåll som du skapade i avsnittet Förutsättningar har distribuerats klickar du på knappen Gå till resurs under Nästa steg. Du hittar din prenumerationsnyckel och slutpunkt på resursens nyckel- och slutpunktssida under resurshantering.

Skapa variabler för din Visuellt innehåll-prenumerationsnyckel och slutpunkt. Klistra in din prenumerationsnyckel och slutpunkt i följande kod där det anges. Slutpunkten Visuellt innehåll har formen 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"

Viktigt

Kom ihåg att ta bort prenumerationsnyckeln från koden när du är klar och aldrig publicera den offentligt. Överväg att använda ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter för produktion. Till exempel Azure Key Vault.

Nu ska du börja lägga till kod för att utföra olika OCR-åtgärder.

Objektmodell

Följande klasser och gränssnitt hanterar några av de viktigaste funktionerna i OCR Go SDK.

Name Beskrivning
BaseClient Den här klassen behövs för alla Visuellt innehåll funktioner, till exempel bildanalys och textläsning. Du instansierar den med din prenumerationsinformation och använder den för att göra de flesta avbildningsåtgärder.
ReadOperationResult Den här typen innehåller resultatet av en Batch Read-åtgärd.

Kodexempel

Dessa kodfragment visar hur du utför följande uppgifter med OCR-klientbiblioteket för Go:

Autentisera klienten

Anteckning

Det här steget förutsätter att du har skapat miljövariabler för Visuellt innehåll nyckel och slutpunkt med COMPUTER_VISION_SUBSCRIPTION_KEY namnet COMPUTER_VISION_ENDPOINT respektive.

Skapa en main funktion och lägg till följande kod i den för att instansiera en klient med din slutpunkt och nyckel.

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

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

Läsa tryckt och handskriven text

OCR-tjänsten kan läsa synlig text i en bild och konvertera den till en teckenström. Koden i det här avsnittet definierar en funktion, , som använder klientobjektet för att identifiera och extrahera RecognizeTextReadAPIRemoteImage tryckt eller handskriven text i bilden.

Lägg till exempelbildreferensen och funktionsanropet i main funktionen.

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

Tips

Du kan också extrahera text från en lokal bild. Se BaseClient-metoderna, till exempel BatchReadFileInStream. Eller så kan du se exempelkoden på GitHub för scenarier som involverar lokala bilder.

Anropa Read-API:et

Definiera den nya funktionen för att läsa text, RecognizeTextReadAPIRemoteImage . Lägg till koden nedan, som anropar metoden BatchReadFile för den angivna avbildningen. Den här metoden returnerar ett åtgärds-ID och startar en asynkron process för att läsa avbildningens innehåll.

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

Hämta läsresultat

Hämta sedan åtgärds-ID:t som returnerades från BatchReadFile-anropet och använd det med metoden GetReadOperationResult för att fråga tjänsten efter åtgärdsresultat. Följande kod kontrollerar åtgärden med en sekunds intervall tills resultatet returneras. Den skriver sedan ut extraherade textdata till konsolen.

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

Visa läsresultat

Lägg till följande kod för att parsa och visa hämtade textdata och slutför funktionsdefinitionen.

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

Kör programmet

Kör programmet från programkatalogen med go run kommandot .

go run sample-app.go

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resursgruppen. När du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du installerar OCR-klientbiblioteket och använder API:et Läsa. Härnäst kan du läsa mer om read API-funktionerna.

Använd optisk teckenläsning för REST API att läsa tryckt och handskriven text.

Anteckning

Den här snabbstarten använder cURL-kommandon för att anropa REST API. Du kan också anropa REST API med ett programmeringsspråk. Se GitHub-exemplen för exempel i C#, Python, Java, JavaScriptoch Go.

Förutsättningar

  • En Azure-prenumeration – Skapa en kostnadsfritt
  • När du har din Azure-prenumeration skapar du en Visuellt innehåll-resurs för att skapa Visuellt innehåll resurs i Azure Portal för att slutpunkt. När den har distribuerats klickar du på Gå till resurs.
    • Du behöver nyckeln och slutpunkten från den resurs som du skapar för att ansluta ditt program till Visuellt innehåll tjänsten. Du klistrar in nyckeln och slutpunkten i koden nedan senare i snabbstarten.
    • Du kan använda den kostnadsfria prisnivån ( F0 ) för att prova tjänsten och senare uppgradera till en betald nivå för produktion.
  • cURL installerat

Läsa tryckt och handskriven text

OCR-tjänsten kan läsa synlig text i en bild och konvertera den till en teckenström. Mer information om textigenkänning finns i översikten över optisk teckenläsning (OCR).

Anropa API:et Read

Så här skapar du och kör exemplet:

  1. Kopiera följande kommando till en textredigerare.
  2. Gör följande ändringar i kommandot där det behövs:
    1. Ersätt värdet för <subscriptionKey> med din prenumerationsnyckel.
    2. Ersätt den första delen av url:en för begäran ( westcentralus ) med texten i din egen slutpunkts-URL.

      Anteckning

      Nya resurser som skapats efter den 1 juli 2019 kommer att använda anpassade under domän namn. Mer information och en fullständig lista över regionala slut punkter finns i anpassade under domän namn för Cognitive Services.

    3. Du kan också ändra bild-URL:en i begärandetexten (https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Atomist_quote_from_Democritus.png/338px-Atomist_quote_from_Democritus.png\) till URL:en för en annan bild som ska analyseras.
  3. Öppna ett kommandotolksfönster.
  4. Klistra in kommandot från textredigeraren i kommandotolkens fönster och kör sedan kommandot.
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\"}"

Svaret innehåller en rubrik Operation-Location vars värde är en unik URL. Du använder den här URL:en för att fråga resultatet av åtgärden Läs. URL:en upphör att gälla om 48 timmar.

Hämta läsresultat

  1. Kopiera följande kommando till textredigeraren.
  2. Ersätt URL:en med Operation-Location det värde som du kopierade i föregående steg.
  3. Gör följande ändringar i kommandot där det behövs:
    1. Ersätt värdet för <subscriptionKey> med din prenumerationsnyckel.
  4. Öppna ett kommandotolksfönster.
  5. Klistra in kommandot från textredigeraren i kommandotolkens fönster och kör sedan kommandot.
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}" 

Granska svaret

Ett svar som anger att åtgärden lyckades returneras i JSON. Exempelprogrammet parsar och visar ett lyckat svar i kommandotolkens fönster enligt följande exempel:

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

Nästa steg

I den här snabbstarten har du lärt dig hur du anropar REST API. Härnäst kan du läsa mer om read API-funktionerna.