빠른 시작: OCR(광학 문자 인식) 클라이언트 라이브러리 또는 REST API 사용

Computer Vision 읽기 REST API 또는 클라이언트 라이브러리를 시작합니다. Read 서비스는 이미지에서 표시되는 텍스트를 추출하고 구조화된 문자열로 반환하는 AI 알고리즘을 제공합니다. 다음 단계에 따라 애플리케이션에 패키지를 설치하고 기본 작업에 대한 샘플 코드를 사용해 보세요.

OCR 클라이언트 라이브러리를 사용하여 이미지에서 인쇄 및 필기 텍스트를 읽습니다.

참조 설명서 | 라이브러리 소스 코드 | 패키지(NuGet) | 샘플

필수 구성 요소

  • Azure 구독 - 체험 구독 만들기
  • Visual Studio IDE 또는 현재 버전의 .NET Core.
  • Azure 구독을 보유한 후에는 Azure Portal에서 Computer Vision 리소스 를 만들어 키와 엔드포인트를 가져옵니다. 배포 후 리소스로 이동 을 클릭합니다.
    • 애플리케이션을 Computer Vision 서비스에 연결하려면 만든 리소스의 키와 엔드포인트가 필요합니다. 이 빠른 시작의 뒷부분에 나오는 코드에 키와 엔드포인트를 붙여넣습니다.
    • 평가판 가격 책정 계층(F0)을 통해 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.

설치

새 C# 애플리케이션 만들기

Visual Studio를 사용하여 새 .NET Core 애플리케이션을 만듭니다.

클라이언트 라이브러리 설치

새 프로젝트를 만든 후 솔루션 탐색기 에서 프로젝트 솔루션을 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 관리 를 선택하여 클라이언트 라이브러리를 설치합니다. 열리는 패키지 관리자에서 찾아보기 를 선택하고, 시험판 포함 을 선택하고, Microsoft.Azure.CognitiveServices.Vision.ComputerVision를 검색합니다. 7.0.0 버전, 설치 를 차례로 선택합니다.

한 번에 전체 빠른 시작 코드 파일을 보시겠습니까? GitHub에서 찾을 수 있으며 이 빠른 시작의 코드 예제를 포함합니다.

선호하는 편집기 또는 IDE에서 프로젝트 디렉터리의 Program.cs 파일을 엽니다.

구독 키 및 엔드포인트 찾기

Azure Portal로 이동합니다. 필수 구성 요소 섹션에서 만든 Computer Vision 리소스가 성공적으로 배포된 경우 다음 단계 아래에서 리소스로 이동 단추를 클릭합니다. 리소스 관리 아래에 있는 리소스의 키 및 엔드포인트 페이지에서 구독 키와 엔드포인트를 찾을 수 있습니다.

애플리케이션의 Program 클래스에서 Computer Vision 구독 키 및 엔드포인트에 대한 변수를 만듭니다. 구독 키와 엔드포인트를 표시된 다음 코드에 붙여넣습니다. Computer Vision 엔트포인트의 형식은 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";

중요

완료되면 코드에서 구독 키를 제거하고 공개적으로 게시하지 마세요. 프로덕션의 경우 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용하는 것이 좋습니다. 예를 들어 Azure Key Vault입니다.

애플리케이션의 Main 메서드에서 이 빠른 시작에 사용된 메서드에 대한 호출을 추가합니다. 나중에 만들 것입니다.

ComputerVisionClient client = Authenticate(endpoint, subscriptionKey);

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

개체 모델

OCR .NET SDK의 주요 기능 중 일부를 처리하는 클래스와 인터페이스는 다음과 같습니다.

Name Description
ComputerVisionClient 이 클래스는 모든 Computer Vision 기능에 필요합니다. 구독 정보를 사용하여 이 클래스를 인스턴스화한 다음, 대부분의 이미지 작업에 사용합니다.
ComputerVisionClientExtensions 이 클래스는 ComputerVisionClient 에 대한 추가 메서드를 포함하고 있습니다.

코드 예제

여기에 나와 있는 코드 조각에서는 .NET용 OCR 클라이언트 라이브러리를 사용하여 다음 작업을 수행하는 방법을 보여 줍니다.

클라이언트 인증

Program 클래스의 새 메서드에서 엔드포인트 및 구독 키를 사용하여 클라이언트를 인스턴스화합니다. 구독 키를 사용하여 ApiKeyServiceClientCredentials 개체를 만들고, 엔드포인트에서 이를 사용하여 ComputerVisionClient 개체를 만듭니다.

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

인쇄 텍스트 및 필기 텍스트 읽기

OCR 서비스는 이미지 속의 시각적 텍스트를 읽고 문자 스트림으로 변환할 수 있습니다. 텍스트 인식에 대한 자세한 내용은 OCR(광학 인식) 개요를 참조하세요. 이 섹션의 코드는 최신 Read 3.0용 Computer Vision SDK 릴리스를 사용하고, 클라이언트 개체를 사용하여 이미지의 텍스트를 감지하고 추출하는 BatchReadFileUrl 메서드를 정의합니다.

로컬 이미지에서 텍스트를 추출할 수도 있습니다. ComputerVisionClient 메서드(예: ReadInStreamAsync)를 참조하세요. 또는 로컬 이미지와 관련된 시나리오는 GitHub의 샘플 코드를 참조하세요.

테스트 이미지 설정

Program 클래스에서 텍스트를 추출하려는 이미지의 URL에 대한 참조를 저장합니다. 이 코드 조각에는 인쇄된 텍스트 및 필기 텍스트 모두에 대한 샘플 이미지가 포함되어 있습니다.

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

읽기 API 호출

텍스트를 읽기 위한 새 메서드를 정의합니다. 지정된 이미지에 대해 ReadAsync 메서드를 호출하는 아래 코드를 추가합니다. 그러면 작업 ID가 반환되고 이미지의 콘텐츠를 읽는 비동기 프로세스가 시작됩니다.

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

읽기 결과 가져오기

그런 다음, ReadAsync 호출에서 반환된 작업 ID를 가져와서 서비스의 작업 결과를 쿼리합니다. 다음 코드는 결과가 반환될 때까지 작업을 검사합니다. 그런 다음, 추출된 텍스트 데이터를 콘솔에 출력합니다.

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

읽기 결과 표시

검색된 텍스트 데이터를 구문 분석하고, 표시하고, 메서드 정의를 완료하는 다음 코드를 추가합니다.

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

애플리케이션 실행

IDE 창의 위쪽에서 디버그 단추를 클릭하여 애플리케이션을 실행합니다.

리소스 정리

Cognitive Services 구독을 정리하고 제거하려면 리소스나 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

이 빠른 시작에서는 OCR 클라이언트 라이브러리를 설치하고 Read API를 사용하는 방법을 알아보았습니다. 다음으로, Read API 기능에 대해 자세히 알아보세요.

  • OCR 개요
  • 이 샘플의 소스 코드는 GitHub에서 확인할 수 있습니다.

광학 인식 클라이언트 라이브러리를 사용하여 Read API를 통해 인쇄 및 필기 텍스트를 읽을 수 있습니다.

참조 설명서 | 라이브러리 소스 코드 | 패키지(PiPy) | 샘플

필수 구성 요소

  • Azure 구독 - 체험 구독 만들기

  • Python 3.x

    • Python 설치에 pip가 포함되어야 합니다. 명령줄에서 pip --version을 실행하여 pip가 설치되어 있는지 확인할 수 있습니다. 최신 버전의 Python을 설치하여 pip를 받으세요.
  • Azure 구독을 만든 후에는 Azure Portal에서 Computer Vision 리소스를 만들어 키와 엔드포인트를 가져옵니다. 배포 후 리소스로 이동 을 클릭합니다.

    • 애플리케이션을 Computer Vision 서비스에 연결하려면 만든 리소스의 키와 엔드포인트가 필요합니다. 이 빠른 시작의 뒷부분에 나오는 코드에 키와 엔드포인트를 붙여넣습니다.
    • 평가판 가격 책정 계층(F0)을 통해 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.

설치

클라이언트 라이브러리 설치

다음을 사용하여 클라이언트 라이브러리를 설치할 수 있습니다.

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

Pillow 라이브러리도 설치합니다.

pip install pillow

새 Python 애플리케이션 만들기

한 번에 전체 빠른 시작 코드 파일을 보시겠습니까? GitHub에서 찾을 수 있으며 이 빠른 시작의 코드 예제를 포함합니다.

예를 들어 새 Python 파일(—quickstart-file.py)을 만듭니다. 그런 다음, 선호하는 편집기 또는 IDE에서 엽니다.

구독 키 및 엔드포인트 찾기

Azure Portal로 이동합니다. 필수 구성 요소 섹션에서 만든 Computer Vision 리소스가 성공적으로 배포된 경우 다음 단계 아래에서 리소스로 이동 단추를 클릭합니다. 리소스 관리 아래에 있는 리소스의 키 및 엔드포인트 페이지에서 구독 키와 엔드포인트를 찾을 수 있습니다.

Computer Vision 구독 키와 엔드포인트에 대한 변수를 만듭니다. 구독 키와 엔드포인트를 표시된 다음 코드에 붙여넣습니다. Computer Vision 엔트포인트의 형식은 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"

중요

완료되면 코드에서 구독 키를 제거하고 공개적으로 게시하지 마세요. 프로덕션의 경우 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용하는 것이 좋습니다. 예를 들어 Azure Key Vault입니다.

개체 모델

OCR Python SDK의 주요 기능 중 일부를 처리하는 클래스와 인터페이스는 다음과 같습니다.

Name Description
ComputerVisionClientOperationsMixin 이 클래스는 이미지 분석, 텍스트 감지, 썸네일 생성 등의 모든 이미지 작업을 직접 처리합니다.
ComputerVisionClient 이 클래스는 모든 Computer Vision 기능에 필요합니다. 구독 정보를 사용하여 인스턴스화하고, 다른 클래스의 인스턴스를 생성하는 데 사용합니다. ComputerVisionClientOperationsMixin 을 구현합니다.
VisualFeatureTypes 이 열거형은 표준 Analyze(분석) 작업에서 수행할 수 있는 다양한 유형의 이미지 분석을 정의합니다. 필요에 따라 VisualFeatureTypes 값 세트를 지정합니다.

코드 예제

여기에 나와 있는 코드 조각에서는 Python용 OCR 클라이언트 라이브러리를 사용하여 다음 작업을 수행하는 방법을 보여 줍니다.

클라이언트 인증

엔드포인트 및 키를 사용하여 클라이언트를 인스턴스화합니다. 키를 사용하여 CognitiveServicesCredentials 개체를 만든 다음, 엔드포인트에 사용하여 ComputerVisionClient 개체를 만듭니다.

computervision_client = ComputerVisionClient(endpoint, CognitiveServicesCredentials(subscription_key))

인쇄 텍스트 및 필기 텍스트 읽기

OCR 서비스는 이미지 속의 시각적 텍스트를 읽고 문자 스트림으로 변환할 수 있습니다. 이 작업을 두 부분에서 수행합니다.

읽기 API 호출

먼저 다음 코드를 사용하여 지정된 이미지에 대한 읽기 메서드를 호출합니다. 그러면 작업 ID가 반환되고 이미지의 콘텐츠를 읽는 비동기 프로세스가 시작됩니다.

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

로컬 이미지에서 텍스트를 읽을 수도 있습니다. ComputerVisionClientOperationsMixin 메서드(예: read_in_stream)를 참조하세요. 또는 로컬 이미지와 관련된 시나리오는 GitHub의 샘플 코드를 참조하세요.

읽기 결과 가져오기

그런 다음, 읽기 호출에서 반환된 작업 ID를 가져와서 서비스의 작업 결과를 쿼리합니다. 다음 코드는 결과가 반환될 때까지 1초 간격으로 작업을 검사합니다. 그런 다음, 추출된 텍스트 데이터를 콘솔에 출력합니다.

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

애플리케이션 실행

quickstart 파일의 python 명령을 사용하여 애플리케이션을 실행합니다.

python quickstart-file.py

리소스 정리

Cognitive Services 구독을 정리하고 제거하려면 리소스나 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

이 빠른 시작에서는 OCR 클라이언트 라이브러리를 설치하고 Read API를 사용하는 방법을 알아보았습니다. 다음으로, Read API 기능에 대해 자세히 알아보세요.

  • OCR 개요
  • 이 샘플의 소스 코드는 GitHub에서 확인할 수 있습니다.

광학 인식 클라이언트 라이브러리를 사용하여 이미지에서 인쇄 및 필기 텍스트를 읽을 수 있습니다.

참조 설명서 | 라이브러리 소스 코드 |아티팩트(Maven) | 샘플

필수 구성 요소

  • Azure 구독 - 체험 구독 만들기
  • JDK(Java Development Kit)의 현재 버전
  • Gradle 빌드 도구 또는 다른 종속성 관리자
  • Azure 구독을 보유한 후에는 Azure Portal에서 Computer Vision 리소스 를 만들어 키와 엔드포인트를 가져옵니다. 배포 후 리소스로 이동 을 클릭합니다.
    • 애플리케이션을 Computer Vision 서비스에 연결하려면 만든 리소스의 키와 엔드포인트가 필요합니다. 이 빠른 시작의 뒷부분에 나오는 코드에 키와 엔드포인트를 붙여넣습니다.
    • 평가판 가격 책정 계층(F0)을 통해 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.

설치

새 Gradle 프로젝트 만들기

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 앱에 대한 새 디렉터리를 만들고 이 디렉터리로 이동합니다.

mkdir myapp && cd myapp

작업 디렉터리에서 gradle init 명령을 실행합니다. 이 명령은 build.gradle.kts 를 포함하여 런타임에 애플리케이션을 만들고 구성하는 데 사용되는 Gradle용 필수 빌드 파일을 만듭니다.

gradle init --type basic

DSL 을 선택하라는 메시지가 표시되면 Kotlin 을 선택합니다.

클라이언트 라이브러리 설치

이 빠른 시작에서는 Gradle 종속성 관리자를 사용합니다. 다른 종속성 관리자에 대한 클라이언트 라이브러리 및 정보는 Maven 중앙 리포지토리에서 찾을 수 있습니다.

build.gradle.kts 를 찾고, 원하는 IDE 또는 텍스트 편집기에서 엽니다. 그런 다음, 다음 빌드 구성을 복사합니다. 이 구성은 프로젝트를 Java 애플리케이션(진입점이 ComputerVisionQuickstart 클래스임)으로 정의합니다. Computer Vision 라이브러리를 가져옵니다.

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

Java 파일 만들기

작업 디렉터리에서 다음 명령을 실행하여 프로젝트 원본 폴더를 만듭니다.

mkdir -p src/main/java

한 번에 전체 빠른 시작 코드 파일을 보시겠습니까? GitHub에서 찾을 수 있으며 이 빠른 시작의 코드 예제를 포함합니다.

새 폴더로 이동하여 ComputerVisionQuickstart.java 라는 파일을 만듭니다. 선호하는 편집기 또는 IDE에서 엽니다.

구독 키 및 엔드포인트 찾기

Azure Portal로 이동합니다. 필수 구성 요소 섹션에서 만든 Computer Vision 리소스가 성공적으로 배포된 경우 다음 단계 아래에서 리소스로 이동 단추를 클릭합니다. 리소스 관리 아래에 있는 리소스의 키 및 엔드포인트 페이지에서 구독 키와 엔드포인트를 찾을 수 있습니다.

ComputerVisionQuickstart 클래스를 정의합니다. Computer Vision 구독 키와 엔드포인트에 대한 변수를 만듭니다. 구독 키와 엔드포인트를 표시된 다음 코드에 붙여넣습니다. Computer Vision 엔트포인트의 형식은 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";

중요

완료되면 코드에서 구독 키를 제거하고 공개적으로 게시하지 마세요. 프로덕션의 경우 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용하는 것이 좋습니다. 예를 들어 Azure Key Vault입니다.

애플리케이션의 main 메서드에서 이 빠른 시작에서 사용되는 메서드에 대한 호출을 추가합니다. 나중에 이를 정의합니다.

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

개체 모델

OCR Java SDK의 주요 기능 중 일부를 처리하는 클래스와 인터페이스는 다음과 같습니다.

Name Description
ComputerVisionClient 이 클래스는 모든 Computer Vision 기능에 필요합니다. 구독 정보를 사용하여 인스턴스화하고, 다른 클래스의 인스턴스를 생성하는 데 사용합니다.

코드 예제

여기에 나와 있는 코드 조각에서는 Java용 OCR 클라이언트 라이브러리를 사용하여 다음 작업을 수행하는 방법을 보여 줍니다.

클라이언트 인증

새 메서드에서 엔드포인트와 키를 사용하여 ComputerVisionClient 개체를 인스턴스화합니다.

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

인쇄 텍스트 및 필기 텍스트 읽기

OCR 서비스는 이미지 속의 시각적 텍스트를 읽고 문자 스트림으로 변환할 수 있습니다. 이 섹션에서는 로컬 파일 경로를 사용하고 이미지의 텍스트를 콘솔에 인쇄하는 ReadFromFile 메서드를 정의합니다.

URL에서 참조하는 원격 이미지의 텍스트를 읽을 수도 있습니다. ComputerVision 메서드(예: read)를 참조하세요. 또는 원격 이미지와 관련된 시나리오는 GitHub의 샘플 코드를 참조하세요.

테스트 이미지 설정

resources/ 폴더를 프로젝트의 src/main/ 폴더에 만들고, 텍스트를 읽을 이미지를 추가합니다. 샘플 이미지를 다운로드하여 여기에서 사용할 수 있습니다.

그런 다음, 다음 메서드 정의를 ComputerVisionQuickstart 클래스에 추가합니다. 이미지 파일과 일치하도록 localFilePath의 값을 변경합니다.

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

읽기 API 호출

그런 후, 다음 코드를 추가하여 지정된 이미지에 대해 readInStreamWithServiceResponseAsync 메서드를 호출합니다.


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

다음 코드 블록은 읽기 호출의 응답에서 작업 ID를 추출합니다. 이 ID를 도우미 메서드와 함께 사용하여 텍스트 읽기 결과를 콘솔에 인쇄합니다.

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

getAndPrintReadResult(vision, operationLocation);

try/catch 블록과 메서드 정의를 닫습니다.


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

읽기 결과 가져오기

그런 다음, 도우미 메서드에 대한 정의를 추가합니다. 이 메서드는 이전 단계의 작업 ID를 사용하여 읽기 작업을 쿼리하고 사용할 수 있을 때 OCR 결과를 가져옵니다.

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

나머지 메서드는 OCR 결과를 구문 분석하여 콘솔에 인쇄합니다.

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

마지막으로, 위에서 사용된 다른 도우미 메서드를 추가합니다. 이 메서드는 초기 응답에서 작업 ID를 추출합니다.

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

애플리케이션 실행

다음을 사용하여 앱을 빌드할 수 있습니다.

gradle build

gradle run 명령을 사용하여 애플리케이션을 실행합니다.

gradle run

리소스 정리

Cognitive Services 구독을 정리하고 제거하려면 리소스나 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

이 빠른 시작에서는 OCR 클라이언트 라이브러리를 설치하고 Read API를 사용하는 방법을 알아보았습니다. 다음으로, Read API 기능에 대해 자세히 알아보세요.

  • OCR 개요
  • 이 샘플의 소스 코드는 GitHub에서 확인할 수 있습니다.

광학 인식 클라이언트 라이브러리를 사용하여 Read API를 통해 인쇄 및 필기 텍스트를 읽을 수 있습니다.

참조 설명서 | 라이브러리 소스 코드 | 패키지(npm) | 샘플

필수 구성 요소

  • Azure 구독 - 체험 구독 만들기
  • 현재 버전의 Node.js
  • Azure 구독을 보유한 후에는 Azure Portal에서 Computer Vision 리소스 를 만들어 키와 엔드포인트를 가져옵니다. 배포 후 리소스로 이동 을 클릭합니다.
    • 애플리케이션을 Computer Vision 서비스에 연결하려면 만든 리소스의 키와 엔드포인트가 필요합니다. 이 빠른 시작의 뒷부분에 나오는 코드에 키와 엔드포인트를 붙여넣습니다.
    • 평가판 가격 책정 계층(F0)을 통해 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.

설치

새 Node.js 애플리케이션 만들기

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 앱에 대한 새 디렉터리를 만들고 이 디렉터리로 이동합니다.

mkdir myapp && cd myapp

package.json 파일을 사용하여 노드 애플리케이션을 만들려면 npm init 명령을 실행합니다.

npm init

클라이언트 라이브러리 설치

ms-rest-azure@azure/cognitiveservices-computervision NPM 패키지를 설치합니다.

npm install @azure/cognitiveservices-computervision

비동기 모듈도 설치합니다.

npm install async

종속성이 있는 앱의 package.json 파일이 업데이트됩니다.

한 번에 전체 빠른 시작 코드 파일을 보시겠습니까? GitHub에서 찾을 수 있으며 이 빠른 시작의 코드 예제를 포함합니다.

새 파일, index.js 를 만들고, 텍스트 편집기에서 엽니다.

구독 키 및 엔드포인트 찾기

Azure Portal로 이동합니다. 필수 구성 요소 섹션에서 만든 Computer Vision 리소스가 성공적으로 배포된 경우 다음 단계 아래에서 리소스로 이동 단추를 클릭합니다. 리소스 관리 아래에 있는 리소스의 키 및 엔드포인트 페이지에서 구독 키와 엔드포인트를 찾을 수 있습니다.

Computer Vision 구독 키와 엔드포인트에 대한 변수를 만듭니다. 구독 키와 엔드포인트를 표시된 다음 코드에 붙여넣습니다. Computer Vision 엔트포인트의 형식은 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';

중요

완료되면 코드에서 구독 키를 제거하고 공개적으로 게시하지 마세요. 프로덕션의 경우 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용하는 것이 좋습니다. 예를 들어 Azure Key Vault입니다.

개체 모델

OCR Node.js SDK의 주요 기능 중 일부를 처리하는 클래스와 인터페이스는 다음과 같습니다.

Name Description
ComputerVisionClient 이 클래스는 모든 Computer Vision 기능에 필요합니다. 구독 정보를 사용하여 이 클래스를 인스턴스화한 다음, 대부분의 이미지 작업에 사용합니다.

코드 예제

여기에 나와 있는 코드 조각에서는 Node.js용 OCR 클라이언트 라이브러리를 사용하여 다음 작업을 수행하는 방법을 보여 줍니다.

클라이언트 인증

엔드포인트 및 키를 사용하여 클라이언트를 인스턴스화합니다. 키 및 엔드포인트를 사용하여 ApiKeyCredentials 개체를 만든 다음, 이를 사용하여 ComputerVisionClient 개체를 만듭니다.

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

그런 다음, computerVision 함수를 정의하고 기본 함수 및 콜백 함수를 사용하여 비동기 계열을 선언합니다. 스크립트의 끝에서 이 함수 정의를 완료하고 호출합니다.

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

인쇄 텍스트 및 필기 텍스트 읽기

OCR 서비스는 이미지에서 보이는 텍스트를 추출하여 문자 스트림으로 변환할 수 있습니다. 이 샘플에서는 읽기 작업을 사용합니다.

테스트 이미지 설정

텍스트를 추출하려는 이미지의 URL에 대한 참조를 저장합니다.

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

참고

로컬 이미지에서 텍스트를 읽을 수도 있습니다. ComputerVisionClient 메서드(예: readInStream)를 참조하세요. 또는 로컬 이미지와 관련된 시나리오는 GitHub의 샘플 코드를 참조하세요.

읽기 API 호출

함수에서 다음 필드를 정의하여 읽기 호출 상태 값을 표시합니다.

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

지정된 이미지에 대해 readTextFromURL 함수를 호출하는 아래 코드를 추가합니다.

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

readTextFromURL 함수를 정의합니다. 클라이언트 개체에서 read 메서드를 호출합니다. 이는 작업 ID를 반환하고 이미지의 콘텐츠를 읽는 비동기 프로세스를 시작합니다. 그런 다음, 작업 ID를 사용하여 결과가 반환될 때까지 작업 상태를 확인합니다. 추출된 결과를 반환합니다.

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

그런 다음, 읽기 작업의 결과를 콘솔에 출력하는 printRecText 도우미 함수를 정의합니다.

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

함수 닫기

computerVision 함수를 닫고 호출합니다.


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

computerVision();

애플리케이션 실행

quickstart 파일의 node 명령을 사용하여 애플리케이션을 실행합니다.

node index.js

리소스 정리

Cognitive Services 구독을 정리하고 제거하려면 리소스나 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

이 빠른 시작에서는 OCR 클라이언트 라이브러리를 설치하고 Read API를 사용하는 방법을 알아보았습니다. 다음으로, Read API 기능에 대해 자세히 알아보세요.

  • OCR 개요
  • 이 샘플의 소스 코드는 GitHub에서 확인할 수 있습니다.

OCR 클라이언트 라이브러리를 사용하여 이미지에서 인쇄 및 필기 텍스트를 읽습니다.

참조 설명서 | 라이브러리 소스 코드 | 패키지

필수 구성 요소

  • Azure 구독 - 체험 구독 만들기
  • 최신 버전의 Go
  • Azure 구독을 보유한 후에는 Azure Portal에서 Computer Vision 리소스 를 만들어 키와 엔드포인트를 가져옵니다. 배포 후 리소스로 이동 을 클릭합니다.
    • 애플리케이션을 Computer Vision 서비스에 연결하려면 만든 리소스의 키와 엔드포인트가 필요합니다. 이 빠른 시작의 뒷부분에 나오는 코드에 키와 엔드포인트를 붙여넣습니다.
    • 평가판 가격 책정 계층(F0)을 통해 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.

설치

Go 프로젝트 디렉터리 만들기

콘솔 창(cmd, PowerShell, 터미널, Bash)에서 Go 프로젝트에 대한 새 작업 영역 my-app을 만들고 해당 작업 영역으로 이동합니다.

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

작업 영역에는 다음 세 개의 폴더가 있습니다.

  • src - 이 디렉터리에는 소스 코드와 패키지가 포함됩니다. go get 명령으로 설치된 모든 패키지는 이 디렉터리로 이동됩니다.
  • pkg - 이 디렉터리에는 컴파일된 Go 패키지 개체가 포함됩니다. 이러한 파일의 확장명은 모두 .a입니다.
  • bin - 이 디렉터리에는 go install을 실행할 때 만들어지는 이진 실행 파일이 포함됩니다.

Go 작업 영역의 구조에 대한 자세한 내용은 Go 언어 설명서를 참조하세요. 이 가이드에는 $GOPATH$GOROOT 설정에 대한 정보가 있습니다.

Go용 클라이언트 라이브러리 설치

다음으로, Go용 클라이언트 라이브러리를 설치합니다.

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

dep를 사용하는 경우에는 리포지토리 내에서 다음을 실행합니다.

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

Go 애플리케이션 빌드

다음으로, src 디렉터리에 sample-app.go라는 파일을 만듭니다.

cd src
touch sample-app.go

한 번에 전체 빠른 시작 코드 파일을 보시겠습니까? GitHub에서 찾을 수 있으며 이 빠른 시작의 코드 예제를 포함합니다.

원하는 IDE 또는 텍스트 편집기에서 sample-app.go를 엽니다.

스크립트의 루트에서 컨텍스트를 선언합니다. 대부분의 Computer Vision 함수 호출을 실행하려면 이 개체가 필요합니다.

구독 키 및 엔드포인트 찾기

Azure Portal로 이동합니다. 필수 구성 요소 섹션에서 만든 Computer Vision 리소스가 성공적으로 배포된 경우 다음 단계 아래에서 리소스로 이동 단추를 클릭합니다. 리소스 관리 아래에 있는 리소스의 키 및 엔드포인트 페이지에서 구독 키와 엔드포인트를 찾을 수 있습니다.

Computer Vision 구독 키와 엔드포인트에 대한 변수를 만듭니다. 구독 키와 엔드포인트를 표시된 다음 코드에 붙여넣습니다. Computer Vision 엔트포인트의 형식은 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"

중요

완료되면 코드에서 구독 키를 제거하고 공개적으로 게시하지 마세요. 프로덕션의 경우 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용하는 것이 좋습니다. 예를 들어 Azure Key Vault입니다.

다음으로, 다른 OCR 작업을 수행하는 코드를 추가합니다.

개체 모델

OCR Go SDK의 주요 기능 중 일부를 처리하는 클래스와 인터페이스는 다음과 같습니다.

Name Description
BaseClient 이 클래스는 이미지 분석이나 텍스트 읽기 같은 모든 Computer Vision 기능에 필요합니다. 구독 정보를 사용하여 이 클래스를 인스턴스화한 다음, 대부분의 이미지 작업에 사용합니다.
ReadOperationResult 이 형식에는 일괄 읽기 작업의 결과가 포함됩니다.

코드 예제

여기에 나와 있는 코드 조각에서는 Go용 OCR 클라이언트 라이브러리를 사용하여 다음 작업을 수행하는 방법을 보여 줍니다.

클라이언트 인증

참고

이 단계에서는 각각 COMPUTER_VISION_SUBSCRIPTION_KEYCOMPUTER_VISION_ENDPOINT라는 Computer Vision 키와 엔드포인트에 대한 환경 변수를 만들었다고 가정합니다.

클라이언트를 엔드포인트 및 키로 인스턴스화하도록 main 함수를 만들고 다음 코드를 이 함수에 추가합니다.

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

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

인쇄 텍스트 및 필기 텍스트 읽기

OCR 서비스는 이미지 속의 시각적 텍스트를 읽고 문자 스트림으로 변환할 수 있습니다. 이 단원의 코드는 클라이언트 개체를 사용하여 이미지의 인쇄 텍스트 또는 필기 텍스트를 감지하고 추출하는 RecognizeTextReadAPIRemoteImage 함수를 정의합니다.

main 함수에 샘플 이미지 참조 및 함수 호출을 추가합니다.

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

로컬 이미지에서 텍스트를 추출할 수도 있습니다. BaseClient 메서드(예: BatchReadFileInStream)를 참조하세요. 또는 로컬 이미지와 관련된 시나리오는 GitHub의 샘플 코드를 참조하세요.

읽기 API 호출

텍스트를 읽기 위한 새 함수 RecognizeTextReadAPIRemoteImage를 정의합니다. 지정된 이미지에 대해 BatchReadFile 메서드를 호출하는 아래 코드를 추가합니다. 이 메서드는 작업 ID를 반환하고, 이미지의 콘텐츠를 읽는 비동기 프로세스를 시작합니다.

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

읽기 결과 가져오기

다음으로, BatchReadFile 호출에서 반환된 작업 ID를 가져와 GetReadOperationResult 메서드에 사용하여 서비스의 작업 결과를 쿼리합니다. 다음 코드는 결과가 반환될 때까지 1초 간격으로 작업을 검사합니다. 그런 다음, 추출된 텍스트 데이터를 콘솔에 출력합니다.

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

읽기 결과 표시

검색된 텍스트 데이터를 구문 분석하고, 표시하고, 함수 정의를 완료하는 다음 코드를 추가합니다.

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

애플리케이션 실행

go run 명령을 사용하여 애플리케이션 디렉터리에서 애플리케이션을 실행합니다.

go run sample-app.go

리소스 정리

Cognitive Services 구독을 정리하고 제거하려면 리소스나 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

이 빠른 시작에서는 OCR 클라이언트 라이브러리를 설치하고 Read API를 사용하는 방법을 알아보았습니다. 다음으로, Read API 기능에 대해 자세히 알아보세요.

  • OCR 개요
  • 이 샘플의 소스 코드는 GitHub에서 확인할 수 있습니다.

광학 인식 REST API를 사용하여 인쇄 및 필기 텍스트를 읽을 수 있습니다.

참고

이 빠른 시작에서는 cURL 명령을 사용하여 REST API를 호출합니다. 프로그래밍 언어를 사용하여 REST API를 호출할 수도 있습니다. C#, Python, Java, JavaScript, Go의 예는 GitHub 샘플을 참조하세요.

필수 구성 요소

  • Azure 구독 - 체험 구독 만들기
  • Azure 구독을 보유한 후에는 Azure Portal에서 Computer Vision 리소스 를 만들어 키와 엔드포인트를 가져옵니다. 배포 후 리소스로 이동 을 클릭합니다.
    • 애플리케이션을 Computer Vision 서비스에 연결하려면 만든 리소스의 키와 엔드포인트가 필요합니다. 이 빠른 시작의 뒷부분에 나오는 코드에 키와 엔드포인트를 붙여넣습니다.
    • 평가판 가격 책정 계층(F0)을 통해 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.
  • cURL 설치

인쇄 및 필기 텍스트 추출

OCR 서비스는 이미지나 문서에서 보이는 텍스트를 추출하여 문자 스트림으로 변환할 수 있습니다. 텍스트 추출에 대한 자세한 내용은 OCR(광학 인식) 개요를 참조하세요.

읽기 API 호출

샘플을 만들고 실행하려면 다음 단계를 수행합니다.

  1. 다음 명령을 텍스트 편집기에 복사합니다.
  2. 필요한 경우 명령에서 다음 내용을 변경합니다.
    1. <subscriptionKey>의 값을 구독 키로 바꿉니다.
    2. 요청 URL(westcentralus)의 첫 번째 부분을 고유한 엔드포인트 URL의 텍스트로 바꿉니다.

      참고

      2019년 7월 1일 이후에 만들어진 새 리소스는 사용자 지정 하위 도메인 이름을 사용합니다. 자세한 내용 및 지역별 엔드포인트의 전체 목록은 Cognitive Services에 대한 사용자 지정 하위 도메인 이름을 참조하세요.

    3. 필요한 경우 요청 본문의 이미지 URL(https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Atomist_quote_from_Democritus.png/338px-Atomist_quote_from_Democritus.png\)을 분석할 다른 이미지의 URL로 변경합니다.
  3. 명령 프롬프트 창을 엽니다.
  4. 텍스트 편집기에서 명령 프롬프트 창으로 명령을 붙여넣은 후 명령을 실행합니다.
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\"}"

응답에는 값이 고유한 URL인 Operation-Location 헤더가 포함됩니다. 이 URL을 사용하여 읽기 작업의 결과를 쿼리할 수 있습니다. URL은 48시간 후에 만료됩니다.

미리 보기 기능을 사용하는 방법

미리 보기 언어 및 기능의 경우, 최신 미리 보기를 사용하려면 모델 버전을 지정하는 방법을 참조하세요. 미리 보기 모델에는 현재 GA 언어 및 기능에 대한 향상된 기능이 포함되어 있습니다.

읽기 결과 가져오기

  1. 다음 명령을 텍스트 편집기에 복사합니다.
  2. URL을 이전 단계에서 복사한 Operation-Location 값으로 바꿉니다.
  3. 필요한 경우 명령에서 다음 내용을 변경합니다.
    1. <subscriptionKey>의 값을 구독 키로 바꿉니다.
  4. 명령 프롬프트 창을 엽니다.
  5. 텍스트 편집기에서 명령 프롬프트 창으로 명령을 붙여넣은 후 명령을 실행합니다.
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}" 

응답 검사

성공적인 응답이 JSON을 통해 반환됩니다. 애플리케이션 예제는 다음 예제와 유사하게 명령 프롬프트 창에서 성공한 응답을 구문 분석하고 표시합니다.

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

다음 단계

이 빠른 시작에서는 Read REST API를 호출하는 방법을 알아보았습니다. 다음으로, Read API 기능에 대해 자세히 알아보세요.