Google Cloud Vision OCR Integration

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
Google Cloud Vision OCR Integration
Simple
from 1 business day to 3 business days
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1212
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    852
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    822

Integration Google Cloud Vision OCR

Google Cloud Vision API — управляемый OCR-сервис с высоким качеством распознавания и поддержкой 50+ языков. Два режима: TEXT_DETECTION (OCR для изображений) и DOCUMENT_TEXT_DETECTION (оптимизирован для плотных документов с сохранением структуры). Не требует инфраструктуры, платная модель на основе количества запросов.

Базовая интеграция

from google.cloud import vision
from google.oauth2 import service_account
import io

class GoogleVisionOCR:
    def __init__(self, credentials_path: str):
        credentials = service_account.Credentials.from_service_account_file(
            credentials_path
        )
        self.client = vision.ImageAnnotatorClient(credentials=credentials)

    def extract_text(self, image_path: str) -> str:
        with io.open(image_path, 'rb') as image_file:
            content = image_file.read()

        image = vision.Image(content=content)
        response = self.client.text_detection(image=image)

        if response.error.message:
            raise RuntimeError(f'Vision API error: {response.error.message}')

        return response.text_annotations[0].description if response.text_annotations else ''

    def extract_document(self, image_path: str) -> dict:
        """DOCUMENT_TEXT_DETECTION для структурированных документов"""
        with io.open(image_path, 'rb') as f:
            content = f.read()

        image = vision.Image(content=content)
        response = self.client.document_text_detection(image=image)
        document = response.full_text_annotation

        pages_data = []
        for page in document.pages:
            page_text = ''
            blocks = []
            for block in page.blocks:
                block_text = ''
                for paragraph in block.paragraphs:
                    para_text = ' '.join(
                        ''.join(s.text for s in word.symbols)
                        for word in paragraph.words
                    )
                    block_text += para_text + '\n'
                blocks.append({'text': block_text.strip()})
                page_text += block_text

            pages_data.append({'text': page_text, 'blocks': blocks})

        return {'full_text': document.text, 'pages': pages_data}

Батчевая обработка и оптимизация стоимости

import base64
from google.cloud import vision_v1

def batch_process_gcs(gcs_uris: list[str],
                       output_gcs_prefix: str,
                       credentials_path: str):
    """Асинхронная batch обработка через Google Cloud Storage — дешевле"""
    client = vision_v1.ImageAnnotatorClient.from_service_account_file(
        credentials_path
    )

    requests = []
    for uri in gcs_uris:
        source = vision_v1.ImageSource(gcs_image_uri=uri)
        image = vision_v1.Image(source=source)
        feature = vision_v1.Feature(type_=vision_v1.Feature.Type.DOCUMENT_TEXT_DETECTION)
        requests.append(vision_v1.AnnotateImageRequest(
            image=image, features=[feature]
        ))

    # Batch request — обрабатывает до 2000 изображений асинхронно
    gcs_dest = vision_v1.GcsDestination(uri=output_gcs_prefix)
    output_config = vision_v1.OutputConfig(
        gcs_destination=gcs_dest,
        batch_size=100  # файлы результатов по 100 страниц
    )

    operation = client.async_batch_annotate_images(
        requests=requests[:2000],
        output_config=output_config
    )
    return operation

Работа с PDF через Cloud Vision

def process_pdf(pdf_gcs_uri: str, output_gcs_prefix: str, client):
    """OCR PDF-файлов через Cloud Vision"""
    feature = vision_v1.Feature(
        type_=vision_v1.Feature.Type.DOCUMENT_TEXT_DETECTION
    )
    gcs_source = vision_v1.GcsSource(uri=pdf_gcs_uri)
    input_config = vision_v1.InputConfig(
        gcs_source=gcs_source,
        mime_type='application/pdf'
    )
    gcs_dest = vision_v1.GcsDestination(uri=output_gcs_prefix)
    output_config = vision_v1.OutputConfig(
        gcs_destination=gcs_dest, batch_size=10
    )

    request = vision_v1.AsyncAnnotateFileRequest(
        features=[feature],
        input_config=input_config,
        output_config=output_config
    )
    operation = client.async_batch_annotate_files(requests=[request])
    return operation

Стоимость и лимиты

Объём в месяц Цена за 1000 запросов
Первые 1000 (бесплатно) $0
1001 – 5,000,000 $1.50
> 5,000,000 $0.60

Optimization стоимости: использовать DOCUMENT_TEXT_DETECTION только для документов (качественнее, но та же цена), батчевая обработка через GCS для больших объёмов.

Когда выбирать Cloud Vision vs PaddleOCR

Критерий Cloud Vision PaddleOCR (self-hosted)
Качество на сложных документах Отличное Хорошее
Стоимость при объёме 100k/день ~$150/день Только инфраструктура
Требование on-premise Нет Да
Latency 500ms–2s 50–500ms
Обслуживание Не требуется Требуется
Задача Срок
Базовая интеграция API 3–5 дней
Полный сервис с батчингом и обработкой результатов 1–2 недели