파일에서 텍스트 감지

이 페이지에서는 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 소스 파일 유형입니다. 다음 값 중 하나로 설정해야 합니다.
  • application/pdf(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)으로 바꿉니다.