본문 바로가기

콩's AI

구글 비전 API(OCR) 가격, 월 1000회가 무료일까?

반응형
구글 비전 API (OCR) 가격, 월 1000회 무료? 파이썬 연동 예제

구글 비전 API(OCR) 가격, 월 1000회가 무료일까?

요즘 Gemini API를 사용해서 이미지 속 텍스트를 추출(OCR)하는 기능을 구현하시다가, 더 전문적인 OCR 기능인 구글 클라우드 비전(Google Cloud Vision) API에 대해 궁금해하시는 분들이 많은 것 같아요.

가장 많이 궁금해하시는 가격 정보와 파이썬 연동 방법에 대해 정리해 봤습니다.

1. 구글 비전 API, 월 1,000회 무료?

결론부터 말하면, 네, 맞습니다. 정확히는 '1,000 유닛'이 무료입니다.

  • 구글 클라우드(GCP)의 '항상 무료(Always Free)' 등급 정책에 포함되어 있습니다.
  • 정확히는 'Text Detection' (OCR 기능)이 매월 1,000 유닛(unit)까지 무료로 제공됩니다.
  • 여기서 1 유닛은 이미지 1장 또는 PDF/TIFF 파일의 1페이지를 의미합니다.
  • 즉, 이미지 1,000장을 매달 무료로 처리할 수 있습니다.

2. 무료 사용량(1,000 유닛) 초과 시 비용

월 1,000 유닛을 모두 사용하면 유료로 자동 전환되며, 사용량에 따라 구간별로 가격이 책정됩니다. (2025년 10월 기준)

  • 1,001 ~ 5,000,000 유닛: 1,000 유닛당 $1.50 (USD)
  • 5,000,001 ~ 20,000,000 유닛: 1,000 유닛당 $0.60 (USD)
  • (이후 대용량 사용 시 가격은 더 저렴해집니다.)

예를 들어, 한 달에 1,500개의 이미지를 처리했다면, 무료 1,000 유닛을 제외한 500 유닛에 대한 비용만 청구됩니다. (1,000 유닛당 $1.50이므로, 500 유닛은 약 $0.75가 됩니다.)

3. Gemini API처럼 파이썬에서 연동할 수 있나요?

네, 당연히 가능합니다. Gemini API를 `google-generativeai` 라이브러리로 사용했다면, 구글 클라우드 비전 API는 `google-cloud-vision` 라이브러리를 사용합니다.

커서(Cursor) IDE, VSCode, 파이참 등 어떤 파이썬 개발 환경에서도 동일하게 사용할 수 있습니다.

다만, Gemini API와 달리 GCP(구글 클라우드 플랫폼) 프로젝트 생성, Vision API 활성화, 서비스 계정(JSON 인증키) 설정 등 사전 준비 작업이 필요합니다.

4. 파이썬 OCR 간단 예제

GCP 설정이 완료되었다는 가정 하에, 로컬 이미지를 읽어 OCR을 수행하는 간단한 예제입니다.

1) 라이브러리 설치

pip install google-cloud-vision

2) 인증 설정 (필수!)

다운로드한 GCP 서비스 계정 JSON 키 파일의 경로를 환경 변수로 설정해야 합니다. (터미널에서)

# Windows (cmd)
set GOOGLE_APPLICATION_CREDENTIALS="C:\경로\내-json-키파일.json"

# macOS / Linux
export GOOGLE_APPLICATION_CREDENTIALS="/경로/내-json-키파일.json"

3) Python 코드 예제

import io
from google.cloud import vision

def detect_text(image_path):
    # 클라이언트 인스턴스 생성
    client = vision.ImageAnnotatorClient()

    # 로컬 이미지 파일 읽기
    with io.open(image_path, 'rb') as image_file:
        content = image_file.read()

    image = vision.Image(content=content)

    # text_detection API 호출
    response = client.text_detection(image=image)
    texts = response.text_annotations

    if response.error.message:
        raise Exception(
            f'{response.error.message}'
        )

    if texts:
        print('--- 감지된 전체 텍스트 ---')
        print(texts[0].description) # texts[0]은 항상 전체 텍스트
    else:
        print('텍스트를 감지하지 못했습니다.')

# 사용 예시
if __name__ == '__main__':
    detect_text('my_image.jpg') # 여기에 분석할 이미지 파일 경로 입력
반응형

⚠️ 광고 차단 프로그램 감지

애드블록, 유니콘 등 광고 차단 확장 프로그램을 해제하거나
화이트리스트에 추가해주세요.