Сотні накладних, інвойсів та договорів щоденно надходять у вигляді скан-копій. Ручне введення — вузьке горло, помилки неминучі. Втрати часу та бюджету зростають. Ми вирішуємо це за допомогою Document AI — автоматичного вилучення структурованих даних. Наш підхід дає F1 до 96% на складних полях і скорочує час обробки в 10–20 разів. На відміну від класичного OCR, який видає лише плоский текст, Document AI розуміє семантику та візуальне розташування елементів. Модель знає, що 12 345.00 справа від Total — підсумкова сума, а не випадкове число. Це ключовий елемент автоматизації документообігу, де машинне навчання дозволяє позбутися рутини.
Якість вилучення безпосередньо залежить від розмітки та архітектури моделі. Ми використовуємо LayoutLMv3 — State-of-the-Art для документів з довільним шаблоном. Нижче розберемо ключові проблеми та їх вирішення.
Як Document AI вилучає структуровані дані?
Стек: PyTorch, Hugging Face Transformers, LayoutLMv3, Tesseract для OCR. Для кожного типу документів навчаємо окрему модель з BIO-розміткою сутностей (NER).
from transformers import LayoutLMv3Processor, LayoutLMv3ForTokenClassification from PIL import Image import torch class DocumentFieldExtractor: def __init__(self, model_path: str, labels: list[str]): self.processor = LayoutLMv3Processor.from_pretrained(model_path) self.model = LayoutLMv3ForTokenClassification.from_pretrained( model_path, num_labels=len(labels) * 2 + 1 # BIO tagging ) self.labels = labels self.model.eval() @torch.no_grad() def extract(self, image_path: str) -> dict: image = Image.open(image_path).convert('RGB') encoding = self.processor( image, return_tensors='pt', truncation=True, padding='max_length', max_length=512 ) outputs = self.model(**encoding) predictions = outputs.logits.argmax(-1).squeeze().tolist() return self._decode_entities(encoding, predictions) Розмітка даних ведеться в Label Studio з підтримкою Document AI — розмітник виділяє області на скан-копії та призначає тип поля. Мінімум 200–500 розмічених документів для базової якості.
Fine-tuning виконується стандартним Trainer з Hugging Face:
from transformers import TrainingArguments, Trainer from datasets import load_dataset training_args = TrainingArguments( output_dir='./invoice_extractor', num_train_epochs=20, per_device_train_batch_size=2, per_device_eval_batch_size=2, learning_rate=5e-5, warmup_steps=100, weight_decay=0.01, fp16=True, evaluation_strategy='epoch', save_strategy='best', metric_for_best_model='f1' ) trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset, compute_metrics=compute_ner_metrics ) trainer.train() Які проблеми вирішує Document AI?
- Нестандартні шаблони — різні постачальники оформлюють інвойси по-своєму. LayoutLMv3 стійкий до варіацій, якщо навчати на репрезентативній вибірці.
- Низька якість скан-копій — перекоси, шум, погане освітлення. Попередня обробка (deskew, denoise) + дані з аугментаціями підвищують робастність.
- Змішані типи документів — в одному потоці можуть бути і накладні, і договори. Ми навчаємо мультитипові моделі або класифікатор перед екстракцією.
- Валідація вилучених даних — контрольні суми, формати дат, довідники. Постобробка з бізнес-правилами відсіює помилки.
| Проблема | Рішення |
|---|---|
| Нестандартні шаблони | LayoutLMv3 адаптується при достатній кількості прикладів; навчаємо на репрезентативній вибірці |
| Низька якість скан-копій | Попередня обробка (deskew, denoise) + аугментації даних |
| Змішані типи документів | Використовуємо класифікатор перед екстракцією або мультитипову модель |
| Валідація вилучених даних | Постобробка з бізнес-правилами: контрольні суми, формати дат, довідники |
Чому LayoutLMv3 краще за класичний OCR?
Класичний OCR (Tesseract, Abbyy) видає лише текст та координати. Document AI на основі LayoutLMv3 додатково розуміє семантику: модель знає, що рядок "ІПН 7701234567" — це ІПН, а не номер рахунку. Як показано в роботі LayoutLMv3: Pre-training for Document AI with Unified Text and Image Masking, на датасеті CORD LayoutLMv3 досягає F1 95.5%, тоді як OCR+регулярки — близько 70–80%. LayoutLMv3 працює в 5–10 разів точніше при вилученні складних полів, особливо дат і сум.
| Датасет | Поле | F1 (LayoutLMv3) |
|---|---|---|
| FUNSD (форми) | Entity extraction | 92.0% |
| CORD (чеки) | Поля транзакцій | 95.5% |
| SROIE (інвойси) | 4 ключових поля | 96.6% |
| DocVQA (QA на документах) | ANLS | 83.5% |
Типові помилки при впровадженні екстрактора інвойсів
- Замало розмічених даних — менше 200 скан-копій на тип, що призводить до перенавчання.
- Однотипні шаблони у вибірці — модель не бачить варіацій і помиляється на нових форматах.
- Ігнорування аугментацій — без поворотів і шуму модель падає на реальних скан-копіях.
- Відсутність постобробки — дати в різних форматах, суми без роздільників — модель видає сирі токени, а не нормалізовані значення.
Що входить в роботу?
- Індивідуальна модель — донавчений LayoutLMv3 під ваш тип документів.
- API-контейнер — Docker-образ з REST API та прикладами запитів.
- Документація — опис роботи моделі, інструкції з інтеграції.
- Навчання співробітників — вебінар з розмітки даних та використання екстрактора.
- Підтримка — 3 місяці моніторингу якості та донавчань при необхідності.
Отримайте консультацію щодо вашого проєкту — оцінка безкоштовно.
Вимоги до даних: для розмітки достатньо скан-копій у форматах PDF, JPG, PNG. Роздільна здатність не менше 150 DPI. Бажано, щоб шаблони були однотипними, але модель адаптується до варіацій при достатній кількості прикладів (від 200).
Покроковий процес впровадження
- Збір та розмітка даних — виділяємо 200–500 скан-копій вашого типу, розмічаємо поля через Label Studio.
- Fine-tuning моделі — налаштовуємо LayoutLMv3 під вашу розмітку, оптимізуємо гіперпараметри.
- Постобробка — додаємо правила валідації (формати, контрольні суми).
- Упаковка в API — модель у Docker-контейнері з REST ендпоінтами.
- Інтеграція та тестування — підключаємо до вашої системи, перевіряємо на відкладеній вибірці.
- Моніторинг та підтримка — відстежуємо якість, при необхідності донавчаємо.
Терміни: один тип документа з розміченою вибіркою займає 4–6 тижнів, для 3–5 типів — 8–12 тижнів, універсальний екстрактор — до 18 тижнів.
Наші компетенції та гарантії
Ми — команда ML-інженерів з 7+ роками досвіду в Computer Vision та NLP. Реалізували понад 30 проєктів з Document AI для банків, логістики та рітейлу. Маємо сертифікований досвід роботи з Hugging Face та NVIDIA.
Гарантуємо точність на вашому типі документів: якщо F1 нижче обумовленого порогу на тестовій вибірці — доопрацьовуємо модель безкоштовно. Впровадження включає моніторинг та можливість донавчання протягом 3 місяців.
Замовте пілотний проєкт — оцініть результат на ваших даних. Якщо ви хочете автоматизувати документообіг, зв'яжіться з нами для консультації та оцінки проєкту.







