빠른 시작: Azure Vision v3.2 GA 읽기

OCR(읽기) 버전

중요

요구 사항에 가장 적합한 읽기 버전을 선택합니다.

입력 예제 에디션 읽기 이점
이미지: 일반, 야생 이미지 레이블, 도로 표지판 및 포스터 이미지용 OCR(버전 4.0) 사용자 환경 시나리오에 OCR을 더 쉽게 포함할 수 있도록 성능이 향상된 동기 API를 사용하여 일반 문서가 아닌 이미지에 최적화되었습니다.
문서: 디지털 및 스캔, 이미지 포함 책, 문서 및 보고서 문서 인텔리전스 읽기 모델 대규모로 지능형 문서 처리를 자동화하는 데 도움이 되도록 비동기 API를 사용하여 텍스트가 많은 스캔 및 디지털 문서에 최적화되었습니다.

Azure Vision v3.2 GA 소개

최신 Azure Vision v3.2 GA 읽기를 찾고 계신가요? 향후의 모든 읽기 OCR 개선 사항은 이전에 나열된 두 서비스의 일부입니다. Azure Vision v3.2에 대한 추가 업데이트는 없습니다. 자세한 내용은 Call Azure Vision 3.2 GA Read APIQuickstart: Azure Vision v3.2 GA Read 참조하세요.

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

OCR(광학 문자 인식) 클라이언트 라이브러리를 사용하여 이미지에서 인쇄 및 필기 텍스트를 읽습니다. OCR 서비스는 이미지에서 표시되는 텍스트를 읽고 문자 스트림으로 변환할 수 있습니다. 텍스트 인식에 대한 자세한 내용은 OCR 개요를 참조하세요. 이 섹션의 코드는 Foundry 도구의 최신 Azure Vision 패키지를 사용합니다.

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

리퍼런스 설명서리브라리 소스 코드패키지(NuGet)샘플스<

필수 구성 요소

  • Azure 구독 - 무료로 구독 만들기.
  • Visual Studio IDE 또는 현재 버전의 .NET Core.
  • Azure Vision 리소스 생성합니다. 무료 가격 책정 계층(F0)을 사용하여 서비스를 사용해 볼 수 있으며 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.
  • 애플리케이션을 Azure Vision에 연결하기 위해 만든 리소스의 키 및 엔드포인트입니다.
    1. Azure Vision 리소스가 배포된 후 리소스로 이동합니다 선택합니다.
    2. 왼쪽 창에서 키 및 엔드포인트를 선택합니다.
    3. 빠른 시작의 뒷부분에서 사용할 키와 엔드포인트 중 하나를 복사합니다.

환경 변수 만들기

이 예제에서는 애플리케이션을 실행하는 로컬 컴퓨터의 환경 변수에 자격 증명을 씁니다.

Azure 포털로 이동합니다. 필수 구성 요소 섹션에서 만든 리소스가 성공적으로 배포된 경우 다음 단계에서리소스로 이동을 선택합니다. Face 리소스의 키 및 엔드포인트 페이지에서 리소스 관리 에서 키와 엔드포인트 를 찾을 수 있습니다. 리소스 키가 Azure 구독 ID와 동일하지 않습니다.

키 및 엔드포인트에 대한 환경 변수를 설정하려면 콘솔 창을 열고 운영 체제 및 개발 환경에 대한 지침을 따릅니다.

  • 환경 변수를 설정하기 위해 VISION_KEY, <your_key>를 리소스의 키 중 하나로 교체하십시오.
  • 환경 변수를 설정하려면 VISION_ENDPOINT, 리소스의 엔드포인트로 <your_endpoint>를 바꾸십시오.

중요

Microsoft Entra ID 인증을 통해 클라우드에서 실행되는 애플리케이션에 자격 증명을 저장하지 않도록 Azure 리소스를 위한 관리 ID를 사용하는 것이 좋습니다.

주의해서 API 키를 사용합니다. API 키를 코드에 직접 포함하지 말고 공개적으로 게시하지 마세요. API 키를 사용하는 경우 Azure Key Vault 안전하게 저장하고, 키를 정기적으로 회전하고, 역할 기반 액세스 제어 및 네트워크 액세스 제한을 사용하여 Azure Key Vault 대한 액세스를 제한합니다. 앱에서 API 키를 안전하게 사용하는 방법에 대한 자세한 내용은 Azure Key Vault API 키를 참조하세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스 참조하세요.

setx VISION_KEY <your_key>
setx VISION_ENDPOINT <your_endpoint>

환경 변수를 추가한 후에는 콘솔 창을 포함하여 환경 변수를 읽을 실행 중인 프로그램을 다시 시작해야 할 수 있습니다.

인쇄 및 필기 텍스트 읽기

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

    Visual Studio를 사용하여 콘솔 앱 (.NET Framework) 프로젝트를 C#, Windows, Console용으로 만듭니다.

    새 프로젝트를 만든 후 클라이언트 라이브러리를 설치합니다.

    1. 솔루션 탐색기에서 프로젝트 솔루션을 마우스 오른쪽 단추로 클릭하고 솔루션용 NuGet 패키지 관리 선택합니다.
    2. 열리는 패키지 관리자에서 찾아보기를 선택합니다. 미리 보기 버전 포함을 선택합니다.
    3. Microsoft.Azure.CognitiveServices.Vision.ComputerVision 검색하여 선택합니다.
    4. 세부 정보 대화 상자에서 프로젝트를 선택하고 안정적인 최신 버전을 선택합니다. 그런 다음 설치를 선택합니다.
  2. 프로젝트 디렉터리에서 기본 설정 편집기 또는 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 key and endpoint
            static string key = Environment.GetEnvironmentVariable("VISION_KEY");
            static string endpoint = Environment.GetEnvironmentVariable("VISION_ENDPOINT");
    
            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, key);
    
                // 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();
            }
    
        }
    }
    
  3. 선택적 단계로 데이터를 처리하는 방법 결정(Determine)을 참조하세요. 예를 들어 최신 GA 모델을 명시적으로 지정하려면 표시된 대로 호출을 ReadAsync 편집합니다. 매개 변수를 건너뛰거나 가장 최근의 GA 모델을 사용하는 데 사용합니다 "latest" .

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

    • 디버그 메뉴에서 디버깅 시작을 선택합니다.

출력

Azure 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
Calories from Fat 110
Sodium 20mg
nt Daily Values are based on Vitamin A 50%
calorie diet.

리소스 정리

Foundry Tools 구독을 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 연결된 다른 리소스도 삭제됩니다.

다음 단계

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

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

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

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

필수 구성 요소

  • Azure 구독 - 무료로 구독 만들기.
  • Python 3.x.
  • Python 설치에는 pip 포함되어야 합니다. pip가 설치되어 있는지 여부를 확인하고 명령줄에서 실행할 pip --version 수 있습니다. 최신 버전의 Python 설치하여 pip를 가져옵니다.
  • Foundry Tools의 Azure Vision 리소스. 무료 가격 책정 계층(F0)을 사용하여 서비스를 사용해 볼 수 있으며 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.
  • 애플리케이션을 Azure Vision에 연결하기 위해 만든 리소스의 키 및 엔드포인트입니다.
    1. Azure Vision 리소스가 배포된 후 리소스로 이동합니다 선택합니다.
    2. 왼쪽 창에서 키 및 엔드포인트를 선택합니다.
    3. 빠른 시작의 뒷부분에서 사용할 키와 엔드포인트 중 하나를 복사합니다.

환경 변수 만들기

이 예제에서는 애플리케이션을 실행하는 로컬 컴퓨터의 환경 변수에 자격 증명을 씁니다.

Azure 포털로 이동합니다. 필수 구성 요소 섹션에서 만든 리소스가 성공적으로 배포된 경우 다음 단계에서리소스로 이동을 선택합니다. Face 리소스의 키 및 엔드포인트 페이지에서 리소스 관리 에서 키와 엔드포인트 를 찾을 수 있습니다. 리소스 키가 Azure 구독 ID와 동일하지 않습니다.

키 및 엔드포인트에 대한 환경 변수를 설정하려면 콘솔 창을 열고 운영 체제 및 개발 환경에 대한 지침을 따릅니다.

  • 환경 변수를 설정하기 위해 VISION_KEY, <your_key>를 리소스의 키 중 하나로 교체하십시오.
  • 환경 변수를 설정하려면 VISION_ENDPOINT, 리소스의 엔드포인트로 <your_endpoint>를 바꾸십시오.

중요

Microsoft Entra ID 인증을 통해 클라우드에서 실행되는 애플리케이션에 자격 증명을 저장하지 않도록 Azure 리소스를 위한 관리 ID를 사용하는 것이 좋습니다.

주의해서 API 키를 사용합니다. API 키를 코드에 직접 포함하지 말고 공개적으로 게시하지 마세요. API 키를 사용하는 경우 Azure Key Vault 안전하게 저장하고, 키를 정기적으로 회전하고, 역할 기반 액세스 제어 및 네트워크 액세스 제한을 사용하여 Azure Key Vault 대한 액세스를 제한합니다. 앱에서 API 키를 안전하게 사용하는 방법에 대한 자세한 내용은 Azure Key Vault API 키를 참조하세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스 참조하세요.

setx VISION_KEY <your_key>
setx VISION_ENDPOINT <your_endpoint>

환경 변수를 추가한 후에는 콘솔 창을 포함하여 환경 변수를 읽을 실행 중인 프로그램을 다시 시작해야 할 수 있습니다.

인쇄 및 필기 텍스트 읽기

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

    콘솔 창에서 다음 명령을 실행합니다.

    pip install --upgrade azure-cognitiveservices-vision-computervision
    
  2. 베개 라이브러리를 설치합니다.

    pip install pillow
    
  3. 새 Python 애플리케이션 파일 quickstart-file.py 만듭니다. 그런 다음 기본 설정 편집기 또는 IDE에서 엽니다.

  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 = os.environ["VISION_KEY"]
    endpoint = os.environ["VISION_ENDPOINT"]
    
    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://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png"
    
    # 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. 선택적 단계로 데이터를 처리하는 방법 결정(Determine)을 참조하세요. 예를 들어 최신 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")
    
  6. 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 Azure Vision quickstart.

리소스 정리

Foundry Tools 구독을 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 연결된 다른 리소스도 삭제됩니다.

다음 단계

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

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

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

참조 설명서 | 패키지(npm) | 샘플

필수 구성 요소

  • Azure 구독 - 무료로 구독 만들기.
  • 현재 버전의 Node.js.
  • Foundry Tools의 Azure Vision 리소스. 무료 가격 책정 계층(F0)을 사용하여 서비스를 사용해 볼 수 있으며 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.
  • 애플리케이션을 Azure Vision에 연결하기 위해 만든 리소스의 키 및 엔드포인트입니다.
    1. Azure Vision 리소스가 배포된 후 리소스로 이동합니다 선택합니다.
    2. 왼쪽 창에서 키 및 엔드포인트를 선택합니다.
    3. 빠른 시작의 뒷부분에서 사용할 키와 엔드포인트 중 하나를 복사합니다.

환경 변수 만들기

이 예제에서는 애플리케이션을 실행하는 로컬 컴퓨터의 환경 변수에 자격 증명을 씁니다.

Azure 포털로 이동합니다. 필수 구성 요소 섹션에서 만든 리소스가 성공적으로 배포된 경우 다음 단계에서리소스로 이동을 선택합니다. Face 리소스의 키 및 엔드포인트 페이지에서 리소스 관리 에서 키와 엔드포인트 를 찾을 수 있습니다. 리소스 키가 Azure 구독 ID와 동일하지 않습니다.

키 및 엔드포인트에 대한 환경 변수를 설정하려면 콘솔 창을 열고 운영 체제 및 개발 환경에 대한 지침을 따릅니다.

  • 환경 변수를 설정하기 위해 VISION_KEY, <your_key>를 리소스의 키 중 하나로 교체하십시오.
  • 환경 변수를 설정하려면 VISION_ENDPOINT, 리소스의 엔드포인트로 <your_endpoint>를 바꾸십시오.

중요

Microsoft Entra ID 인증을 통해 클라우드에서 실행되는 애플리케이션에 자격 증명을 저장하지 않도록 Azure 리소스를 위한 관리 ID를 사용하는 것이 좋습니다.

주의해서 API 키를 사용합니다. API 키를 코드에 직접 포함하지 말고 공개적으로 게시하지 마세요. API 키를 사용하는 경우 Azure Key Vault 안전하게 저장하고, 키를 정기적으로 회전하고, 역할 기반 액세스 제어 및 네트워크 액세스 제한을 사용하여 Azure Key Vault 대한 액세스를 제한합니다. 앱에서 API 키를 안전하게 사용하는 방법에 대한 자세한 내용은 Azure Key Vault API 키를 참조하세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스 참조하세요.

setx VISION_KEY <your_key>
setx VISION_ENDPOINT <your_endpoint>

환경 변수를 추가한 후에는 콘솔 창을 포함하여 환경 변수를 읽을 실행 중인 프로그램을 다시 시작해야 할 수 있습니다.

인쇄 및 필기 텍스트 읽기

새 Node.js 애플리케이션을 만듭니다.

  1. 콘솔 창에서 앱에 대한 새 디렉터리를 만들고 해당 디렉터리로 이동합니다.

    mkdir myapp
    cd myapp
    
  2. npm init 명령을 실행하여 package.json 파일이 있는 노드 애플리케이션을 만드세요. 프롬프트에 대해 Enter 키를 선택합니다.

    npm init
    
  3. 클라이언트 라이브러리를 설치하려면 ms-rest-azure@azure/cognitiveservices-computervision npm 패키지를 설치하십시오.

    npm install ms-rest-azure
    npm install @azure/cognitiveservices-computervision
    
  4. 비동기 모듈을 설치합니다.

    npm install async
    

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

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

  6. 다음 코드를 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 = process.env.VISION_KEY;
    const endpoint = process.env.VISION_ENDPOINT;
    
    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();
    
  7. 선택적 단계로 데이터를 처리하는 방법 결정(Determine)을 참조하세요. 예를 들어 최신 GA 모델을 명시적으로 지정하려면 문을 read 표시된 대로 편집 수정하십시오. 매개 변수를 건너뛰거나 사용하는 "latest" 경우 가장 최근의 GA 모델이 자동으로 사용됩니다.

      let result = await client.read(url,{modelVersion:"2022-04-30"});
    
  8. 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.

리소스 정리

Foundry Tools 구독을 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 연결된 다른 리소스도 삭제됩니다.

다음 단계

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

OCR(광학 문자 인식) REST API를 사용하여 인쇄 및 필기 텍스트를 읽습니다.

참고

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

필수 구성 요소

  • Azure 구독 - 무료로 구독 만들기.
  • cURL 이 설치되었습니다.
  • Foundry Tools의 Azure Vision 리소스. 무료 가격 책정 계층(F0)을 사용하여 서비스를 사용해 볼 수 있으며 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.
  • 애플리케이션을 Azure Vision에 연결하기 위해 만든 리소스의 키 및 엔드포인트입니다.
    1. Azure Vision 리소스가 배포된 후 리소스로 이동합니다 선택합니다.
    2. 왼쪽 창에서 키 및 엔드포인트를 선택합니다.
    3. 빠른 시작의 뒷부분에서 사용할 키와 엔드포인트 중 하나를 복사합니다.

인쇄 및 필기 텍스트 읽기

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

읽기 API 호출

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

  1. 다음 명령을 텍스트 편집기에 복사합니다.

  2. 필요한 경우 명령에서 다음을 변경합니다.

    1. 값을 <key>의 키값으로 바꾸십시오.
    2. 요청 URL(https://westcentralus.api.cognitive.microsoft.com/)의 첫 번째 부분을 사용자 고유의 엔드포인트 URL의 텍스트로 바꿉니다.

      참고

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

    3. 필요에 따라 요청 본문(https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png)의 이미지 URL을 분석할 다른 이미지의 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://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png'}"

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

필요에 따라 모델 버전을 지정합니다.

선택적 단계로 데이터를 처리하는 방법 결정(Determine)을 참조하세요. 예를 들어 최신 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://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png'}"

읽기 결과 가져오기

  1. 텍스트 편집기에 다음 명령을 복사합니다.

  2. URL을 이전 절차에서 복사한 값으로 Operation-Location 바꿉다.

  3. 값을 <key>의 키값으로 바꾸십시오.

  4. 콘솔 창을 엽니다.

  5. 텍스트 편집기에서 콘솔 창에 명령을 붙여넣은 다음 명령을 실행합니다.

    curl -v -X GET "https://westcentralus.api.cognitive.microsoft.com/vision/v3.2/read/analyzeResults/{operationId}" -H "Ocp-Apim-Subscription-Key: {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
              }
            ]
          }
        ]
      }
    ]
  }
}

리소스 정리

Foundry Tools 구독을 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 연결된 다른 리소스도 삭제됩니다.

다음 단계

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