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







