Видобування даних з документів за допомогою Azure Computer Vision

Зазначимо: коли стандартні OCR-рішення дають збій на нестандартних шрифтах або поганому освітленні, особливо при необхідності витягти дані з сотень рахунків або паспортів, на допомогу приходить Azure Computer Vision — хмарний сервіс Microsoft для розпізнавання тексту. Сертифіковані інженери з досвід

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    982
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1241
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    697
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983

Зазначимо: коли стандартні 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: покрокова інструкція

  1. Створіть ресурс Computer Vision на порталі Azure (ключ та endpoint).
  2. Встановіть бібліотеку azure-cognitiveservices-vision-computervision через pip.
  3. Напишіть асинхронний виклик — код нижче демонструє клас AzureOCR для витягування тексту із зображення.
  4. Обробіть результат — парсинг bounding boxes для таблиць, фільтрація за confidence.
  5. Додайте повторні спроби при тайм-аутах (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

  1. Аудит — аналіз поточних процесів обробки документів, типів документів, обсягів.
  2. Проектування — вибір сервісу (Read API / Document Intelligence), архітектури (хмара / контейнер / гібрид).
  3. Інтеграція — розробка Python-бібліотеки для виклику API з обробкою помилок, повторними спробами, моніторингом.
  4. Тестування — перевірка accuracy на ваших зразках, стрес-тестування під навантаженням.
  5. Деплой — розгортання в продуктив, налаштування CI/CD, моніторинг latency та accuracy.
  6. Підтримка — навчання команди, документація, супровід після запуску.

Що входить в роботу (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%.