Отметим: когда стандартные OCR-решения дают сбой на нестандартных шрифтах или плохом освещении, особенно при необходимости извлечь данные из сотен счетов или паспортов, на помощь приходит Azure Computer Vision — облачный сервис Microsoft для распознавания текста. Сертифицированные инженеры с опытом настраивают Read API и Document Intelligence под ваши задачи, гарантируя точность до 99%. Мы внедрили более 30 проектов по автоматизации документооборота в различных отраслях. Автоматизация сокращает затраты на ручную обработку до 80%, что при объёме 10 000 документов в месяц экономит около $15 000.
Почему Read API — основной выбор для OCR в Azure?
Azure Computer Vision предоставляет два OCR-сервиса: Read API (оптимизирован для плотных документов, рекомендуется Microsoft) и старый OCR API (только для простых изображений). Read API 4.0 работает как в облаке, так и в виде контейнера для on-premise развёртывания. Мы используем Read API, потому что он справляется с рукописным текстом, таблицами и многостраничными PDF. Согласно официальной документации Microsoft, точность Read API на структурированных документах достигает 99%.
Интеграция Read API в Python: пошаговое руководство
- Создайте ресурс Computer Vision в портале Azure (ключ и endpoint).
-
Установите библиотеку
azure-cognitiveservices-vision-computervisionчерез pip. - Напишите асинхронный вызов — код ниже демонстрирует класс
AzureOCRдля извлечения текста из изображения. - Обработайте результат — парсинг bounding boxes для таблиц, фильтрация по confidence.
- Добавьте повторные попытки при таймаутах (exponential backoff).
from azure.cognitiveservices.vision.computervision import ComputerVisionClient
from azure.cognitiveservices.vision.computervision.models import OperationStatusCodes
from msrest.authentication import CognitiveServicesCredentials
import time
class AzureOCR:
def __init__(self, endpoint: str, api_key: str):
self.client = ComputerVisionClient(
endpoint,
CognitiveServicesCredentials(api_key)
)
def extract_text_from_url(self, image_url: str) -> str:
"""Read API: асинхронная обработка через URL"""
read_response = self.client.read_in_stream(
open('image.jpg', 'rb'),
raw=True
)
# Получаем operation ID из заголовка
operation_location = read_response.headers['Operation-Location']
operation_id = operation_location.split('/')[-1]
# Ожидание результата
while True:
read_result = self.client.get_read_result(operation_id)
if read_result.status not in [
OperationStatusCodes.running,
OperationStatusCodes.not_started
]:
break
time.sleep(0.5)
# Извлечение текста
text_lines = []
if read_result.status == OperationStatusCodes.succeeded:
for page in read_result.analyze_result.read_results:
for line in page.lines:
text_lines.append(line.text)
return '\n'.join(text_lines)
def extract_with_positions(self, image_path: str) -> list[dict]:
"""Извлечение с координатами bounding boxes"""
with open(image_path, 'rb') as f:
read_response = self.client.read_in_stream(f, raw=True)
operation_id = read_response.headers['Operation-Location'].split('/')[-1]
while True:
result = self.client.get_read_result(operation_id)
if result.status not in [OperationStatusCodes.running,
OperationStatusCodes.not_started]:
break
time.sleep(0.3)
words = []
if result.status == OperationStatusCodes.succeeded:
for page in result.analyze_result.read_results:
for line in page.lines:
for word in line.words:
words.append({
'text': word.text,
'confidence': word.confidence,
'bbox': word.bounding_box
})
return words
Свяжитесь с нами для разработки аналогичного решения под ваш проект.
Когда использовать Document Intelligence вместо Read API?
Для произвольного текста на изображениях используйте Read API. Если нужно извлечь структурированные поля из счетов, договоров или удостоверений, лучше подойдёт Document Intelligence (бывший Form Recognizer). Он содержит предобученные модели и позволяет создавать кастомные. Document Intelligence в 2-3 раза точнее на структурированных документах. Пример анализа инвойса:
from azure.ai.formrecognizer import DocumentAnalysisClient
from azure.core.credentials import AzureKeyCredential
class AzureDocumentIntelligence:
def __init__(self, endpoint: str, api_key: str):
self.client = DocumentAnalysisClient(
endpoint=endpoint,
credential=AzureKeyCredential(api_key)
)
def analyze_invoice(self, image_path: str) -> dict:
"""Специализированный анализ инвойсов"""
with open(image_path, 'rb') as f:
poller = self.client.begin_analyze_document(
'prebuilt-invoice', f
)
result = poller.result()
invoices = []
for invoice in result.documents:
fields = invoice.fields
invoices.append({
'vendor_name': fields.get('VendorName', {}).get('value'),
'invoice_date': str(fields.get('InvoiceDate', {}).get('value')),
'total_amount': fields.get('AmountDue', {}).get('value'),
'invoice_id': fields.get('InvoiceId', {}).get('value'),
'line_items': [
{
'description': item.get('Description', {}).get('value'),
'amount': item.get('Amount', {}).get('value')
}
for item in (fields.get('Items', {}).get('value') or [])
]
})
return invoices[0] if invoices else {}
Как развернуть OCR on-premise?
Для данных с требованием локальной обработки используйте Read API Container. Данные не покидают инфраструктуру, задержка минимальна. Контейнер незаменим в банковском секторе и госорганизациях. Запуск прост:
docker run --rm -it -p 5000:5000 \
-e ApiKey=YOUR_KEY \
-e Billing=YOUR_ENDPOINT \
mcr.microsoft.com/azure-cognitive-services/vision/read:3.2
Кейс: обработка 10 000 счетов в день
Для крупного ритейлера мы развернули гибридное решение: облачный Read API для быстрых запросов и on-premise контейнер для чувствительных данных. Настроили параллельные очереди с Azure Service Bus, что позволило обрабатывать до 10 000 счетов ежедневно с latency p99 < 2 с. Точность распознавания полей составила 98.5%.Процесс внедрения Azure Computer Vision OCR
- Аудит — анализ текущих процессов обработки документов, типов документов, объёмов.
- Проектирование — выбор сервиса (Read API / Document Intelligence), архитектуры (облако / контейнер / гибрид).
- Интеграция — разработка Python-библиотеки для вызова API с обработкой ошибок, повторными попытками, мониторингом.
- Тестирование — проверка accuracy на ваших образцах, стресс-тестирование под нагрузкой.
- Деплой — развёртывание в продуктив, настройка CI/CD, мониторинг latency и accuracy.
- Поддержка — обучение команды, документация, сопровождение после запуска.
Что входит в работу (deliverables)
- Документация — описание архитектуры, инструкции по эксплуатации, описание API.
- Исходный код — Python-модуль для интеграции с Azure Computer Vision, включая обработку ошибок и повторные попытки.
- Обучение команды — воркшоп по использованию разработанного решения.
- Поддержка — гарантийное обслуживание в течение месяца после запуска.
Как избежать типичных ошибок при интеграции OCR?
Неправильный выбор API — использование старого OCR вместо Read API. Решение: всегда используйте Read API для современных сценариев. Игнорирование лимитов: Read API ограничен 10 запросами в минуту для одного ресурса. Для пакетной обработки нужно распределять запросы по нескольким ключам или вводить очередь. Отсутствие обработки ошибок: таймауты, недоступность сервиса. Добавьте exponential backoff и retry logic. Забывают про bounding box: для извлечения текста из таблиц координаты обязательны. Всегда используйте extract_with_positions при работе с таблицами.
| Возможность | Read API | Document Intelligence |
|---|---|---|
| OCR для произвольного текста | Да | Да |
| Структура таблиц | Нет | Да |
| Специализированные модели (invoice, ID) | Нет | Да |
| Кастомные модели | Нет | Да |
| Цена (1000 страниц) | $1.50 | $10–50 |
| Задача | Срок |
|---|---|
| Базовая интеграция Read API | 3–5 дней |
| Document Intelligence с извлечением полей | 1–2 недели |
| On-premise контейнер + обработка PDF | 1–2 недели |
Чек-лист для успешной интеграции
- Определите типы документов и требуемые поля.
- Выберите подходящий service tier (S0/S1) с учётом объёмов.
- Реализуйте асинхронные вызовы с обработкой ошибок.
- Настройте мониторинг метрик (latency, accuracy, error rate).
- Проведите A/B-тестирование на реальных данных.
Получите консультацию инженера по Azure Computer Vision. Свяжитесь с нами для оценки вашего проекта — мы поможем автоматизировать обработку документов с точностью до 99%.







