Зазначимо: коли стандартні 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%.







