파일에서 텍스트 감지

이 페이지에서는 Google Distributed Cloud (GDC) 에어 갭 어플라이언스에서 광학 문자 인식 (OCR) API를 사용하여 파일에서 텍스트를 감지하는 방법을 보여줍니다.

GDC 에어 갭 어플라이언스의 Vertex AI OCR 서비스는 BatchAnnotateFiles API 메서드를 사용하여 PDF 및 TIFF 파일에서 텍스트를 감지합니다.

시작하기 전에

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

인라인 요청으로 텍스트 감지

BatchAnnotateFiles 메서드는 PDF 또는 TIFF 파일 일괄 처리에서 텍스트를 감지합니다. API 요청의 콘텐츠로 직접 텍스트를 감지하려는 파일을 보냅니다. 시스템은 API 응답에서 감지된 텍스트를 JSON 형식으로 반환합니다.

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

요청 본문 필드 필드 설명
content 텍스트를 감지할 파일입니다. 바이너리 파일 콘텐츠의 Base64 표현 (ASCII 문자열)을 제공합니다.
mime_type 소스 파일 유형입니다. 다음 값 중 하나로 설정해야 합니다.
  • PDF 파일의 경우 application/pdf
  • TIFF 파일의 경우 image/tiff
type 파일에서 필요한 텍스트 감지 유형입니다.

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

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

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

파일의 텍스트 언어를 알고 있는 경우 힌트를 설정하면 결과가 개선됩니다.
pages 선택사항입니다. 텍스트 감지를 위해 처리할 파일의 페이지 수입니다.

지정할 수 있는 최대 페이지 수는 5개입니다. 페이지 수를 지정하지 않으면 서비스는 파일의 처음 5페이지를 처리합니다.

인라인 API 요청하기

REST API 메서드를 사용하여 OCR 사전 학습된 API에 요청합니다. 또는 Python 스크립트에서 OCR 사전 학습된 API와 상호작용하여 PDF 또는 TIFF 파일에서 텍스트를 감지합니다.

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

REST

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

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

    cat <<- EOF > request.json
    {
      "requests": [
        {
          "input_config": {
            "content": BASE64_ENCODED_FILE,
            "mime_type": "application/pdf"
          },
          "features": [
            {
              "type": "FEATURE_TYPE"
            }
          ],
          "image_context": {
            "language_hints": [
              "LANGUAGE_HINT_1",
              "LANGUAGE_HINT_2",
              ...
            ]
          },
          "pages": []
        }
      ]
    }
    EOF
    

    다음을 바꿉니다.

    • BASE64_ENCODED_FILE: 바이너리 파일 콘텐츠의 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/files: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/files: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)
      input_config = {"content": "BASE64_ENCODED_FILE"}
      features = [{"type_": vision.Feature.Type.FEATURE_TYPE}]
      # Each requests element corresponds to a single file. To annotate more
      # files, create a request element for each file and add it to
      # the array of requests
      req = {"input_config": input_config, "features": features}
    
      metadata = [("x-goog-user-project", "projects/PROJECT_ID")]
    
      resp = vc.annotate_file(req,metadata=metadata)
    
      print(resp)
    
    if __name__=="__main__":
      creds = main()
      vision_func(creds)
    

    다음을 바꿉니다.

    • ENDPOINT: 조직에서 사용하는 OCR 엔드포인트입니다. 자세한 내용은, 서비스 상태 및 엔드포인트를 참고하세요.
    • BASE64_ENCODED_FILE: 파일 콘텐츠의 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)으로 바꿉니다.