광학 문자 인식 (OCR) 사용해 보기

이 가이드에서는 Google의 Vertex AI Vision 서비스를 사용하여 광학 문자 인식 (OCR) 테스트를 실행하는 과정을 안내합니다.

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 Vertex AI Python API 참조 문서를 확인하세요.

  1. ocr_test.py Python 파일을 만듭니다. 다음과 같이 image_uri_to_test 값을 소스 이미지의 URI로 바꿉니다.

    import os
    import requests
    import json
    
    def detect_text_rest(image_uri):
        """Performs Optical Character Recognition (OCR) on an image by invoking the Vertex AI REST API."""
    
        # Securely fetch the API key from environment variables
        api_key = os.environ.get("GCP_API_KEY")
        if not api_key:
            raise ValueError("GCP_API_KEY environment variable must be defined.")
    
        # Construct the Vision API endpoint URL
        vision_api_url = f"https://vision.googleapis.com/v1/images:annotate?key={api_key}"
    
        print(f"Initiating OCR process for image: {image_uri}")
    
        # Define the request payload for text detection
        request_payload = {
            "requests": [
                {
                    "image": {
                        "source": {
                            "imageUri": image_uri
                        }
                    },
                    "features": [
                        {
                            "type": "TEXT_DETECTION"
                        }
                    ]
                }
            ]
        }
    
        # Send a POST request to the Vision API
        response = requests.post(vision_api_url, json=request_payload)
        response.raise_for_status()  # Check for HTTP errors
    
        response_json = response.json()
    
        print("\n--- OCR Results ---")
    
        # Extract and print the detected text
        if "textAnnotations" in response_json["responses"]:
            full_text = response_json["responses"]["textAnnotations"]["description"]
            print(f"Detected Text:\n{full_text}")
        else:
            print("No text was detected in the image.")
    
        print("--- End of Results ---\n")
    
    if __name__ == "__main__":
        # URI of a publicly available image, or a storage bucket
        image_uri_to_test = "IMAGE_URI"
    
        detect_text_rest(image_uri_to_test)
    

    다음을 바꿉니다.

    • 텍스트가 포함된 공개 이미지의 URI(예: 'https://cloud.google.com/vision/docs/images/sign.jpg')로 IMAGE_URI를 바꿉니다. 또는 Cloud Storage URI(예: 'gs://your-bucket/your-image.png')를 지정할 수 있습니다.
  2. Dockerfile 만들기:

    ROM python:3.9-slim
    
    WORKDIR /app
    
    COPY ocr_test.py /app/
    
    # Install 'requests' for HTTP calls
    RUN pip install --no-cache-dir requests
    
    CMD ["python", "ocr_test.py"]
    
  3. 번역 애플리케이션의 Docker 이미지를 빌드합니다.

    docker build -t ocr-app .
    
  4. Docker 구성의 안내에 따라 다음 작업을 실행합니다.

    1. Docker를 구성합니다.
    2. 보안 비밀을 만들고
    3. HaaS에 이미지를 업로드합니다.
  5. 사용자 클러스터에 로그인하고 사용자 ID로 kubeconfig 파일을 생성합니다. kubeconfig 경로를 환경 변수로 설정해야 합니다.

    export KUBECONFIG=${CLUSTER_KUBECONFIG_PATH}
    
  6. 터미널에서 다음 명령어를 실행하고 API 키를 붙여넣어 Kubernetes 보안 비밀을 만듭니다.

    kubectl create secret generic gcp-api-key-secret \
      --from-literal=GCP_API_KEY='PASTE_YOUR_API_KEY_HERE'
    

    이 명령어는 키 GCP_API_KEY이 있는 gcp-api-key-secret이라는 보안 비밀을 만듭니다.

  7. Kubernetes 매니페스트를 적용합니다.

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: ocr-test-job-apikey
    spec:
      template:
        spec:
          containers:
          - name: ocr-test-container
            image: HARBOR_INSTANCE_URL/HARBOR_PROJECT/ocr-app:latest # Your image path
            # Mount the API key from the secret into the container
            # as an environment variable named GCP_API_KEY.
            imagePullSecrets:
            - name: ${SECRET}
            envFrom:
            - secretRef:
                name: gcp-api-key-secret
          restartPolicy: Never
      backoffLimit: 4
    
    

    다음을 바꿉니다.

    • HARBOR_INSTANCE_URL: Harbor 인스턴스 URL입니다.
    • HARBOR_PROJECT: Harbor 프로젝트입니다.
    • SECRET: Docker 사용자 인증 정보를 저장하기 위해 생성된 보안 비밀의 이름입니다.
  8. 작업 상태를 확인합니다.

    kubectl get jobs/ocr-test-job-apikey
    # It will show 0/1 completions, then 1/1 after it succeeds
    
  9. 작업이 완료되면 포드 로그에서 OCR 출력을 볼 수 있습니다.

    kubectl logs -l job-name=ocr-test-job-apikey