이미지의 텍스트 감지

Google Distributed Cloud (GDC) 에어갭의 Vertex AI 광학 문자 인식 (OCR) 서비스는 BatchAnnotateImages API 메서드를 사용하여 이미지에서 텍스트를 감지합니다. 이 서비스는 이미지에 JPEG 및 PNG 파일을 지원합니다.

이 페이지에서는 Distributed Cloud에서 OCR API를 사용하여 이미지 텍스트를 감지하는 방법을 보여줍니다.

시작하기 전에

OCR API를 사용하려면 OCR API가 사용 설정된 프로젝트와 적절한 사용자 인증 정보가 있어야 합니다. 클라이언트 라이브러리를 설치하여 API를 호출할 수도 있습니다. 자세한 내용은 문자 인식 프로젝트 설정을 참고하세요.

JPEG 및 PNG 파일에서 텍스트 감지

BatchAnnotateImages 메서드는 JPEG 또는 PNG 파일 배치에서 텍스트를 감지합니다. 텍스트를 감지할 파일을 API 요청의 콘텐츠로 직접 전송합니다. 시스템은 API 응답에서 감지된 텍스트를 JSON 형식으로 반환합니다.

API 요청의 JSON 본문에 있는 필드의 값을 지정해야 합니다. 다음 표에는 텍스트 감지 요청에 BatchAnnotateImages API 메서드를 사용할 때 제공해야 하는 요청 본문 필드에 관한 설명이 포함되어 있습니다.

요청 본문 필드 필드 설명
content 감지할 텍스트가 포함된 이미지입니다. 바이너리 이미지 데이터의 Base64 표현 (ASCII 문자열)을 제공합니다.
type 이미지에서 필요한 텍스트 감지 유형입니다.

다음 두 가지 주석 기능 중 하나를 지정합니다.
  • TEXT_DETECTION은 임의의 이미지에서 텍스트를 감지하고 추출합니다. JSON 응답에는 추출된 문자열, 개별 단어, 해당 경계 상자가 포함됩니다.
  • DOCUMENT_TEXT_DETECTION도 이미지에서 텍스트를 추출하지만, 서비스는 밀집된 텍스트와 문서에 맞게 응답을 최적화합니다. JSON은 페이지, 블록, 단락, 단어, 줄바꿈 정보를 포함합니다.
이러한 주석 기능에 대한 자세한 내용은 광학 문자 인식 기능을 참고하세요.
language_hints (선택사항) 텍스트 감지에 사용할 언어 목록입니다.

시스템은 이 필드의 빈 값을 자동 언어 감지로 해석합니다.

라틴 알파벳을 사용하는 언어의 경우 language_hints 필드를 설정할 필요가 없습니다.

이미지에 포함된 텍스트의 언어를 알고 있는 경우 힌트를 설정하면 결과가 개선됩니다.

전체 JSON 표현에 관한 자세한 내용은 AnnotateImageRequest을 참고하세요.

API 요청하기

REST API 메서드를 사용하여 OCR 사전 학습 API에 요청합니다. 그렇지 않으면 Python 스크립트에서 OCR 사전 학습 API와 상호작용하여 JPEG 또는 PNG 파일에서 텍스트를 감지합니다.

다음 예에서는 OCR을 사용하여 이미지에서 텍스트를 감지하는 방법을 보여줍니다.

REST

REST API 메서드를 사용하여 이미지에서 텍스트를 감지하려면 다음 단계를 따르세요.

  1. 요청 본문에 다음 request.json 파일을 저장합니다.

    cat <<- EOF > request.json
    {
      "requests": [
        {
          "image": {
            "content": BASE64_ENCODED_IMAGE
          },
          "features": [
            {
              "type": "FEATURE_TYPE"
            }
          ],
          "image_context": {
            "language_hints": [
              "LANGUAGE_HINT_1",
              "LANGUAGE_HINT_2",
              ...
            ]
          }
        }
      ]
    }
    EOF
    

    다음을 바꿉니다.

    • BASE64_ENCODED_IMAGE: 바이너리 이미지 데이터의 Base64 표현(ASCII 문자열)입니다. 이 문자열은 /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==와 비슷한 문자로 시작합니다.
    • FEATURE_TYPE: 이미지에서 필요한 텍스트 감지 유형입니다. 허용되는 값은 TEXT_DETECTION 또는 DOCUMENT_TEXT_DETECTION입니다.
    • LANGUAGE_HINT: 텍스트 감지를 위한 언어 힌트로 사용할 BCP 47 언어 태그입니다(예: en-t-i0-handwrit). 이 필드는 선택사항이며 시스템은 빈 값을 자동 언어 감지로 해석합니다.
  2. 인증 토큰 가져오기

  3. 요청을 합니다.

    curl

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "x-goog-user-project: projects/PROJECT_ID" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      https://ENDPOINT/v1/images:annotate
    

    다음을 바꿉니다.

    PowerShell

    $headers = @{
      "Authorization" = "Bearer TOKEN"
      "x-goog-user-project" = "projects/PROJECT_ID"
    }
    
    Invoke-WebRequest
      -Method POST
      -Headers $headers
      -ContentType: "application/json; charset=utf-8"
      -InFile request.json
      -Uri "ENDPOINT/v1/images:annotate" | Select-Object -Expand Content
    

    다음을 바꿉니다.

Python

Python 스크립트에서 OCR 서비스를 사용하여 이미지의 텍스트를 감지하려면 다음 단계를 따르세요.

  1. 최신 버전의 OCR 클라이언트 라이브러리를 설치합니다.

  2. Python 스크립트에서 필수 환경 변수를 설정합니다.

  3. API 요청을 인증합니다.

  4. 만든 Python 스크립트에 다음 코드를 추가합니다.

    from google.cloud import vision
    import google.auth
    from google.auth.transport import requests
    from google.api_core.client_options import ClientOptions
    
    audience = "https://ENDPOINT:443"
    api_endpoint="ENDPOINT:443"
    
    def vision_client(creds):
      opts = ClientOptions(api_endpoint=api_endpoint)
      return vision.ImageAnnotatorClient(credentials=creds, client_options=opts)
    
    def main():
      creds = None
      try:
        creds, project_id = google.auth.default()
        creds = creds.with_gdch_audience(audience)
        req = requests.Request()
        creds.refresh(req)
        print("Got token: ")
        print(creds.token)
      except Exception as e:
        print("Caught exception" + str(e))
        raise e
      return creds
    
    def vision_func(creds):
      vc = vision_client(creds)
      image = {"content": "BASE64_ENCODED_IMAGE"}
      features = [{"type_": vision.Feature.Type.FEATURE_TYPE}]
      # Each requests element corresponds to a single image. To annotate more
      # images, create a request element for each image and add it to
      # the array of requests
      req = {"image": image, "features": features}
    
      metadata = [("x-goog-user-project", "projects/PROJECT_ID")]
    
      resp = vc.annotate_image(req,metadata=metadata)
    
      print(resp)
    
    if __name__=="__main__":
      creds = main()
      vision_func(creds)
    

    다음을 바꿉니다.

    • ENDPOINT: 조직에서 사용하는 OCR 엔드포인트입니다. 자세한 내용은 서비스 상태 및 엔드포인트 보기를 참고하세요.
    • BASE64_ENCODED_IMAGE: 바이너리 이미지 데이터의 Base64 표현(ASCII 문자열)입니다. 이 문자열은 /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==와 비슷한 문자로 시작합니다.
    • FEATURE_TYPE: 이미지에서 필요한 텍스트 감지 유형입니다. 허용되는 값은 TEXT_DETECTION 또는 DOCUMENT_TEXT_DETECTION입니다.
    • PROJECT_ID: 프로젝트 ID입니다.
  5. Python 스크립트를 저장합니다.

  6. Python 스크립트를 실행하여 이미지에서 텍스트를 감지합니다.

    python SCRIPT_NAME
    

    SCRIPT_NAME을 Python 스크립트에 지정한 이름(예: vision.py)으로 바꿉니다.