Snabbstart: Använda OCR-klientbiblioteket (optisk teckenläsning) eller REST API
Kom igång med Visuellt innehåll Läsa REST API klientbibliotek. Tjänsten Read tillhandahåller 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 programmet 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.
- Översikt över OCR
- Källkoden för det här exemplet finns på GitHub.
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 utan kostnad
-
- Python-installationen bör innehålla pip. Du kan kontrollera om du har installerat pip genom
pip --versionatt köra på kommandoraden. Hämta pip genom att installera den senaste versionen av Python.
- Python-installationen bör innehålla pip. Du kan kontrollera om du har installerat pip genom
När du har din Azure-prenumeration skapar du en Visuellt innehåll-resurs för att Visuellt innehåll resurs i Azure Portal för att hämta din nyckel och 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 uppgradera senare 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 önskat redigeringsprogram 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 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 Key Vault.
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 vanlig Analyze-åtgärd. Du anger en uppsättning VisualFeatureTypes-värden beroende på dina behov. |
Kodexempel
Dessa kodfragment 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 Read-API:et
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 avbildningens innehåll.
'''
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 scenarier som involverar lokala bilder.
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. 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.
- Översikt över OCR
- Källkoden för det här exemplet finns på GitHub.
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.
- Översikt över OCR
- Källkoden för det här exemplet finns på GitHub.
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 kostnadsfritt
- Den aktuella versionen av Node.js
- När du har din Azure-prenumeration skapar Visuellt innehåll resurs en Visuellt innehåll resurs i Azure Portal för 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 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 formuläret 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
De här kodfragmenten 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 scenarier som rör lokala avbildningar.
Anropa API:et Read
Definiera följande fält i funktionen för att ange värdena för Status 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 angivna 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 på klientobjektet, som returnerar ett åtgärds-ID och startar en asynkron process för att läsa innehållet i avbildningen. 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. Nu ska du lära dig mer om funktionerna i Api:et Läsa.
- Översikt över OCR
- Källkoden för det här exemplet finns på GitHub.
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 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 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 getkommandot kommer att placeras i den här katalogen. - pkg – Den här katalogen innehåller de kompilerade Go-paketobjekten. Alla dessa filer har ett
.atillä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 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 scenarier som involverar lokala bilder.
Anropa API:et Read
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. 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 får du lära dig mer om funktionerna i Läs API.
- Översikt över OCR
- Källkoden för det här exemplet finns på GitHub.
Använd den optiska teckenigenkänningen REST API för 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 hjälp av ett programmeringsspråk. Se GitHub exempel i C#, Python, Java, JavaScriptoch Go.
Förutsättningar
- En Azure-prenumeration – Skapa en utan kostnad
- 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 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
Extrahera tryckt och handskriven text
OCR-tjänsten kan extrahera synlig text i en bild eller ett dokument och konvertera den till en teckenström. Mer information om extrahering av text finns i översikten optisk teckenläsning (OCR).
Anropa API:et Read
Så här skapar du och kör exemplet:
- Kopiera följande kommando till en textredigerare.
- Gör följande ändringar i kommandot där det behövs:
- Ersätt värdet för
<subscriptionKey>med din prenumerationsnyckel. - 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.
- 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.
- Ersätt värdet för
- Öppna ett kommandotolksfönster.
- 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 köra frågor mot resultatet av läsåtgärden. URL:en upphör att gälla om 48 timmar.
Så här använder du förhandsgranskningsfunktioner
Information om förhandsgranskningsspråk och -funktioner finns i Så här anger du modellversionen för att använda den senaste förhandsversionen. Förhandsversionsmodellen innehåller eventuella förbättringar av de aktuella ga-språken och -funktionerna.
Hämta läsresultat
- Kopiera följande kommando till textredigeraren.
- Ersätt URL:en med
Operation-Locationdet värde som du kopierade i föregående steg. - Gör följande ändringar i kommandot där det behövs:
- Ersätt värdet för
<subscriptionKey>med din prenumerationsnyckel.
- Ersätt värdet för
- Öppna ett kommandotolksfönster.
- 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 får du lära dig mer om funktionerna i Läs API.