빠른 시작: OCR(광학 인식)

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

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

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

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

필수 구성 요소

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

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

  1. 새 C# 애플리케이션을 만듭니다.

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

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

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

  2. 키와 엔드포인트를 찾습니다.

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

  3. 선호하는 편집기 또는 IDE에서 프로젝트 디렉터리의 Program.cs 파일을 엽니다. Program.cs의 내용을 다음 코드로 바꿉니다.

    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";
    
            private const string READ_TEXT_URL_IMAGE = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/printed_text.jpg";
    
            static void Main(string[] args)
            {
                Console.WriteLine("Azure Cognitive Services Computer Vision - .NET quickstart example");
                Console.WriteLine();
    
                ComputerVisionClient client = Authenticate(endpoint, subscriptionKey);
    
                // Extract text (OCR) from a URL image using the Read API
                ReadFileUrl(client, READ_TEXT_URL_IMAGE).Wait();
            }
    
            public static ComputerVisionClient Authenticate(string endpoint, string key)
            {
                ComputerVisionClient client =
                  new ComputerVisionClient(new ApiKeyServiceClientCredentials(key))
                  { Endpoint = endpoint };
                return client;
            }
    
            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);
    
                // 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();
            }
    
        }
    }
    
  4. 표시된 곳에 키와 엔드포인트를 코드에 붙여넣습니다. Computer Vision 엔트포인트의 형식은 https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/입니다.

    중요

    완료되면 코드에서 키를 제거하고 공개적으로 게시하지 마세요. 프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자세한 내용은 Cognitive Services 보안 문서를 참조하세요.

  5. 선택적 단계로 모델 버전 지정 방법을 참조하세요. 예를 들어 최신 GA 모델을 명시적으로 지정하려면 표시된 대로 ReadAsync 호출을 편집합니다. 매개 변수를 건너뛰거나 "latest"를 사용하면 가장 최근의 GA 모델이 자동으로 사용됩니다.

      // Read text from URL with a specific model version
      var textHeaders = await client.ReadAsync(urlFile,null,null,"2022-04-30");
    
  6. 애플리케이션을 실행합니다.

    IDE 창 상단의 디버그 단추를 클릭합니다.


출력

Azure Cognitive Services Computer Vision - .NET quickstart example

----------------------------------------------------------
READ FILE FROM URL

Extracting text from URL file printed_text.jpg...


Nutrition Facts Amount Per Serving
Serving size: 1 bar (40g)
Serving Per Package: 4
Total Fat 13g
Saturated Fat 1.5g
Amount Per Serving
Trans Fat 0g
Calories 190
Cholesterol 0mg
ories from Fat 110
Sodium 20mg
nt Daily Values are based on Vitamin A 50%
calorie diet.

리소스 정리

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

다음 단계

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

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

OCR 클라이언트 라이브러리를 사용하여 원격 이미지에서 인쇄 및 필기 텍스트를 읽습니다. OCR 서비스는 이미지 속의 시각적 텍스트를 읽고 문자 스트림으로 변환할 수 있습니다. 텍스트 인식에 대한 자세한 내용은 OCR(광학 인식) 개요를 참조하세요.

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

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

필수 구성 요소

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

  • Python 3.x

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

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

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

  1. 클라이언트 라이브러리를 설치합니다.

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

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

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

    pip install pillow
    
  2. 새 Python 애플리케이션 만들기

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

  3. 키와 엔드포인트를 찾습니다.

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

  4. quickstart-file.py의 내용을 다음 코드로 바꿉니다.

    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"
    
    computervision_client = ComputerVisionClient(endpoint, CognitiveServicesCredentials(subscription_key))
    '''
    END - Authenticate
    '''
    
    '''
    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)
    
    # 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()
    '''
    END - Read File - remote
    '''
    
    print("End of Computer Vision quickstart.")
    
    
  5. 표시된 곳에 키와 엔드포인트를 코드에 붙여넣습니다. Computer Vision 엔트포인트의 형식은 https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/입니다.

    중요

    완료되면 코드에서 키를 제거하고 공개적으로 게시하지 마세요. 프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자세한 내용은 Cognitive Services 보안 문서를 참조하세요.

  6. 선택적 단계로 모델 버전 지정 방법을 참조하세요. 예를 들어 최신 GA 모델을 명시적으로 지정하려면 표시된 대로 read 문을 편집합니다. 매개 변수를 건너뛰거나 "latest"를 사용하면 가장 최근의 GA 모델이 자동으로 사용됩니다.

       # Call API with URL and raw response (allows you to get the operation location)
       read_response = computervision_client.read(read_image_url,  raw=True, model_version="2022-04-30")
    
  7. quickstart 파일의 python 명령을 사용하여 애플리케이션을 실행합니다.

    python quickstart-file.py
    

출력

===== Read File - remote =====
The quick brown fox jumps
[38.0, 650.0, 2572.0, 699.0, 2570.0, 854.0, 37.0, 815.0]
Over
[184.0, 1053.0, 508.0, 1044.0, 510.0, 1123.0, 184.0, 1128.0]
the lazy dog!
[639.0, 1011.0, 1976.0, 1026.0, 1974.0, 1158.0, 637.0, 1141.0]

End of Computer Vision quickstart.

리소스 정리

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

다음 단계

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

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

OCR 클라이언트 라이브러리를 사용하여 원격 이미지에서 인쇄 및 필기 텍스트를 읽습니다. OCR 서비스는 이미지 속의 시각적 텍스트를 읽고 문자 스트림으로 변환할 수 있습니다. 텍스트 인식에 대한 자세한 내용은 OCR(광학 인식) 개요를 참조하세요.

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

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

필수 구성 요소

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

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

  1. 새 Gradle 프로젝트를 만듭니다.

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

    mkdir myapp && cd myapp
    

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

    gradle init --type basic
    

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

  2. 클라이언트 라이브러리를 설치합니다.

    이 빠른 시작에서는 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")
    }
    
  3. 테스트 이미지를 설정합니다.

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

  4. Java 파일을 만듭니다.

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

    mkdir -p src/main/java
    

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

  5. 키와 엔드포인트를 찾습니다.

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

  6. 파일 내용을 다음 코드로 바꿉니다. 이 코드에서는 원격 이미지 경로를 사용하고 이미지의 텍스트를 콘솔에 인쇄하는 ReadFromUrl 메서드를 정의합니다.

    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";
    
        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 remote image
            ReadFromUrl(compVisClient);
        }
    
        public static ComputerVisionClient Authenticate(String subscriptionKey, String endpoint){
            return ComputerVisionManager.authenticate(subscriptionKey).withEndpoint(endpoint);
        }
        
        /**
         * OCR with READ : Performs a Read Operation
         * @param client instantiated vision client
         */
        private static void ReadFromUrl(ComputerVisionClient client) {
            System.out.println("-----------------------------------------------");
            
            String remoteTextImageURL = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/printed_text.jpg";
            System.out.println("Read with URL: " + remoteTextImageURL);
    
            try {
                // Cast Computer Vision to its implementation to expose the required methods
                ComputerVisionImpl vision = (ComputerVisionImpl) client.computerVision();
    
                // Read in remote image and response header
                ReadHeaders responseHeader = vision.readWithServiceResponseAsync(remoteTextImageURL, null)
                .toBlocking()
                .single()
                .headers();
    
                // Extract the operation Id from the operationLocation header
                String operationLocation = responseHeader.operationLocation();
                System.out.println("Operation Location:" + operationLocation);
    
                getAndPrintReadResult(vision, operationLocation);
    
            } catch (Exception e) {
                System.out.println(e.getMessage());
                e.printStackTrace();
            }
        }
    
        /**
         * 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");
        }
    
        /**
         * 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;
                    }
                }
            }
    
            // 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());
            }
        }
    }
    
  7. 표시된 위치에 위의 코드에 키와 엔드포인트를 붙여넣습니다. Computer Vision 엔트포인트의 형식은 https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/입니다.

    중요

    완료되면 코드에서 키를 제거하고 공개적으로 게시하지 마세요. 프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자세한 내용은 Cognitive Services 보안 문서를 참조하세요.

  8. 다음 명령을 사용하여 앱을 빌드합니다.

    gradle build
    

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

    gradle run
    

출력

Operation Location:https://pafarley-computer-vision.cognitiveservices.azure.com/vision/v3.2/read/analyzeResults/c6755b9a-1b37-4a0a-9497-d4483fce670a
Polling for Read results ...

Printing Read results for page 1
Nutrition Facts Amount Per Serving
Serving size: 1 bar (40g)
Serving Per Package: 4
Total Fat 13g
Saturated Fat 1.5g
Amount Per Serving
Trans Fat 0g
alories 190
Cholesterol Omg
ories from Fat 110
Sodium 20mg
nt Daily Values are based on
Vitamin A 50%
calorie diet

리소스 정리

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

다음 단계

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

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

광학 인식 클라이언트 라이브러리를 사용하여 Read API를 통해 인쇄 및 필기 텍스트를 읽을 수 있습니다. OCR 서비스는 이미지 속의 시각적 텍스트를 읽고 문자 스트림으로 변환할 수 있습니다. 텍스트 인식에 대한 자세한 내용은 OCR(광학 인식) 개요를 참조하세요.

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

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

필수 구성 요소

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

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

  1. 새 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 파일이 업데이트됩니다.

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

  2. 키와 엔드포인트를 찾습니다.

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

  3. 다음 코드를 index.js 파일에 붙여넣습니다.

    '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';
    
    const computerVisionClient = new ComputerVisionClient(
      new ApiKeyCredentials({ inHeader: { 'Ocp-Apim-Subscription-Key': key } }), endpoint);
    /**
     * END - Authenticate
     */
    
    function computerVision() {
      async.series([
        async function () {
    
          /**
           * OCR: READ PRINTED & HANDWRITTEN TEXT WITH THE READ API
           * Extracts text from images using OCR (optical character recognition).
           */
          console.log('-------------------------------------------------');
          console.log('READ PRINTED, HANDWRITTEN TEXT AND PDF');
          console.log();
    
          // 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://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/printed_text.jpg';
    
          // 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);
    
          // 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 !== "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.
          }
    
          // 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.'); }
            }
          }
    
          /**
           * 
           * Download the specified file in the URL to the current local folder
           * 
           */
          function downloadFilesToLocal(url, localFileName) {
            return new Promise((resolve, reject) => {
              console.log('--- Downloading file to local directory from: ' + url);
              const request = https.request(url, (res) => {
                if (res.statusCode !== 200) {
                  console.log(`Download sample file failed. Status code: ${res.statusCode}, Message: ${res.statusMessage}`);
                  reject();
                }
                var data = [];
                res.on('data', (chunk) => {
                  data.push(chunk);
                });
                res.on('end', () => {
                  console.log('   ... Downloaded successfully');
                  fs.writeFileSync(localFileName, Buffer.concat(data));
                  resolve();
                });
              });
              request.on('error', function (e) {
                console.log(e.message);
                reject();
              });
              request.end();
            });
          }
    
          /**
           * END - Recognize Printed & Handwritten Text
           */
          console.log();
          console.log('-------------------------------------------------');
          console.log('End of quickstart.');
    
        },
        function () {
          return new Promise((resolve) => {
            resolve();
          })
        }
      ], (err) => {
        throw (err);
      });
    }
    
    computerVision();
    
  4. 표시된 위치에 위의 코드에 키와 엔드포인트를 붙여넣습니다. Computer Vision 엔트포인트의 형식은 https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/입니다.

    중요

    완료되면 코드에서 키를 제거하고 공개적으로 게시하지 마세요. 프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자세한 내용은 Cognitive Services 보안 문서를 참조하세요.

  5. 선택적 단계로 모델 버전 지정 방법을 참조하세요. 예를 들어 최신 GA 모델을 명시적으로 지정하려면 표시된 대로 read 문을 편집합니다. 매개 변수를 건너뛰거나 "latest"를 사용하면 가장 최근의 GA 모델이 자동으로 사용됩니다.

      let result = await client.read(url,{modelVersion:"2022-04-30"});
    
  6. quickstart 파일의 node 명령을 사용하여 애플리케이션을 실행합니다.

    node index.js
    

출력

-------------------------------------------------
READ PRINTED, HANDWRITTEN TEXT AND PDF

Read printed text from URL... printed_text.jpg
Recognized text:
Nutrition Facts Amount Per Serving
Serving size: 1 bar (40g)
Serving Per Package: 4
Total Fat 13g
Saturated Fat 1.5g
Amount Per Serving
Trans Fat 0g
Calories 190
Cholesterol 0mg
ories from Fat 110
Sodium 20mg
nt Daily Values are based on Vitamin A 50%
calorie diet.

-------------------------------------------------
End of quickstart.

리소스 정리

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

다음 단계

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

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

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

참고

이 빠른 시작에서는 cURL 명령을 사용하여 REST API를 호출합니다. 프로그래밍 언어를 사용하여 REST API를 호출할 수도 있습니다. C#, Python, JavaJavaScript의 예는 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 모델을 명시적으로 지정하려면 model-version=2022-04-30을 매개 변수로 사용합니다. 매개 변수를 건너뛰거나 model-version=latest를 사용하면 가장 최근의 GA 모델이 자동으로 사용됩니다.

curl -v -X POST "https://westcentralus.api.cognitive.microsoft.com/vision/v3.2/read/analyze?model-version=2022-04-30" -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\"}"

읽기 결과 가져오기

  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 기능에 대해 자세히 알아보세요.

사전 요구 사항

  • Azure 구독 및 Cognitive Services 리소스로 Vision Studio에 로그인합니다. 이 단계에서 도움이 필요하면 개요의 시작 섹션을 참조하세요.

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

  1. 텍스트 추출 탭을 선택하고 이미지에서 텍스트 추출이라는 패널을 선택합니다.
  2. 시험 사용 환경을 사용하려면 리소스를 선택하고 가격 책정 계층에 따라 사용량이 발생함을 인정해야 합니다.
  3. 사용 가능한 집합에서 이미지를 선택하거나 고유의 이미지를 업로드합니다.
  4. 이미지를 선택하면 추출된 텍스트가 출력 창에 표시됩니다. JSON 탭을 선택하여 API 호출이 반환하는 JSON 출력을 볼 수도 있습니다.
  5. 시험 사용 환경 아래에는 고유의 애플리케이션에서 이 기능을 사용하기 시작하는 다음 단계가 나와 있습니다.

다음 단계

이 빠른 시작에서는 Vision Studio를 사용하여 읽기 API에 액세스했습니다. 다음으로, Read API 기능에 대해 자세히 알아보세요.