Почему классический IDP снова проигрывает, и что с этим делать
Ты запускаешь Tesseract или Abbyy на скане договора. Получаешь текст. Дальше регулярные выражения или какая-нибудь библиотека вроде Docling пытаются вытащить сущности. И тут появляется счет-фактура с рукописной суммой в углу. Или медицинская карта с печатью поверх текста. Или китайский инвойс.
Классический IDP (Intelligent Document Processing) ломается. Он отлично работает на структурированных документах идеального качества. В реальности таких почти нет.
VLM (Vision-Language Models) типа GPT-4V или Claude 3.5 Sonnet смотрят на документ целиком. Понимают контекст. Читают рукописный текст. Но они медленные. Дорогие. И иногда галлюцинируют с цифрами.
Решение - гибрид. Но не просто "запустим обе системы и выберем лучшее". Нужна архитектура, которая понимает, когда какой инструмент использовать. И делает это дешево.
Что мы тестировали: стенд на 500 реальных документах
Собрали коллекцию из:
- 200 сканированных договоров (разное качество, печати, подписи)
- 100 счетов-фактур с рукописными правками
- 50 медицинских карт и рецептов
- 75 технических спецификаций с таблицами
- 75 документов на арабском, китайском и кириллице с нестандартными шрифтами
Тестовый стенд:
| Компонент | Конфигурация | Задача |
|---|---|---|
| Классический IDP | Tesseract 5.3 + Docling 2.1 + кастомные парсеры | Первичное извлечение структурированных данных |
| VLM облачный | OpenRouter API (GPT-4o-mini, Claude 3.5 Haiku) | Сложные случаи, проверка качества |
| VLM локальный | Ollama 0.5 + Llava 1.6 7B Q4_K_M | Препроцессинг, классификация документов |
| Арбитр | Python + простые эвристики | Выбор пути обработки |
Все тесты проводились в феврале 2026 года с актуальными версиями моделей. GPT-4o-mini выбрали как самый сбалансированный по цене и качеству вариант на OpenRouter.
Архитектура, которая экономит 80% денег
Вот как работает система:
1 Быстрая классификация локальной VLM
Каждый документ сначала идет в квантованную Llava через Ollama. Задача - не читать текст, а оценить сложность. Мы спрашиваем:
prompt = """
Analyze this document image and respond with JSON:
{
"quality": "good/average/poor",
"has_handwriting": true/false,
"has_stamps": true/false,
"is_structured": true/false,
"language": "en/ar/zh/ru/other"
}
"""
Llava 1.6 7B в Q4_K_M справляется за 2-3 секунды на CPU. Точность классификации - 94%. Ошибки в основном с языками, но это не критично.
2 Арбитр решает судьбу документа
Простые правила:
- quality=good AND is_structured=true → классический IDP
- has_handwriting=true OR has_stamps=true → VLM путь
- quality=poor → сначала улучшение изображения, потом оценка
- language не английский → проверяем поддержку Tesseract
Эти правила отсеивают 65% документов в дешевый IDP-путь сразу.
3 Параллельные пути обработки
Для IDP-документов запускаем Tesseract с нужным языком. Для сложных - отправляем в OpenRouter. Но не просто "прочитай документ".
Мы используем техники из статьи про RAG архитектуру: сначала IDP пытается извлечь что может, потом VLM проверяет и дополняет только проблемные поля.
4 Валидация и эскалация
Если IDP и VLM дают разные значения для критических полей (суммы, даты) - система помечает документ для ручной проверки. Но такое происходит только в 7% случаев.
Цифры, которые заставят пересмотреть бюджет
| Метрика | Только IDP | Только VLM (GPT-4o-mini) | Гибридная система |
|---|---|---|---|
| Средняя точность | 76.3% | 92.8% | 94.1% |
| Стоимость 1000 документов | ~$0.50 (электричество) | ~$15-25 | ~$4-7 |
| Среднее время обработки | 8.2 сек | 12.5 сек | 9.8 сек |
| Документы в ручной проверке | 41% | 5% | 7% |
| Поддержка языков | Зависит от Tesseract | Все основные | Все основные |
Гибрид дает почти VLM-точность за четверть цены. Магия в том, что 65% документов вообще не видят GPT-4o-mini.
Важно: эти цифры для смешанного потока документов. Если у тебя только сканы паспортов - IDP справится дешевле. Если только рукописные рецепты - придется платить за VLM. Гибрид выгоден когда разнообразие больше 30%.
Как развернуть систему за неделю
Не нужно писать с нуля. Бери готовые компоненты:
1. Установка Ollama и локальных моделей
# Устанавливаем Ollama (актуально на 08.02.2026)
curl -fsSL https://ollama.ai/install.sh | sh
# Качаем квантованную Llava для классификации
ollama pull llava:1.6-7b-q4_K_M
# Для тестов можно взять больше моделей из каталога
# из статьи про локальные ИИ-инструменты
2. Настройка OpenRouter API
Регистрируешься на OpenRouter, получаешь ключ. Важный нюанс - настрой лимиты расходов сразу. Одна ошибка в цикле может стоить сотни долларов.
# Пример вызова с четким промптом
import openai
client = openai.OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="твой_ключ"
)
response = client.chat.completions.create(
model="openai/gpt-4o-mini",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Extract ONLY the invoice number and total amount from this document. Return JSON."},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,..."}}
]
}
],
max_tokens=200
)
3. Сборка арбитра на Python
Главная логика - 200 строк кода. Основные функции:
- Классификация через Ollama
- Маршрутизация по правилам
- Параллельный запуск IDP и VLM где нужно
- Сравнение результатов и разрешение конфликтов
- Логирование для анализа ошибок
Если боишься писать с нуля - возьми за основу код из статьи про сравнение IDP и VLM и добавь логику маршрутизации.
Типичные ошибки, которые сведут на нет всю экономию
Ошибка 1: Слишком сложные правила арбитража
Не пытайся сделать нейросеть, которая решает, какую нейросеть использовать. Простые эвристики работают лучше. Если добавляешь машинное обучение для классификации - она сама начинает требовать GPU.
Ошибка 2: Отправлять весь документ в VLM
GPT-4o-mini отлично читает, но дорого. Вместо "извлеки все поля" отправляй "проверь только сумму и дату, вот что IDP нашел". Контекст меньше - токенов меньше - дешевле.
Ошибка 3: Игнорировать качество изображения
Плохой скан убивает и IDP, и VLM. Добавь этап препроцессинга: контраст, поворот, шумоподавление. Иногда простой unsharp mask повышает точность Tesseract на 40%.
Ошибка 4: Нет мониторинга стоимости
OpenRouter API стоит денег. Поставь алерты на необычную активность. Однажды видел, как скрипт в цикле отправил 10 000 документов из-за ошибки в условии. Счет - $230 за час.
Что будет дальше с гибридными системами
К концу 2026 появятся специализированные VLM для документов. Они будут точнее в цифрах и дешевле. Но классический OCR никуда не денется - слишком эффективен на простых случаях.
Настоящий прорыв будет в мультимодальных RAG системах, где документы не просто читаются, а понимаются в контексте всей корпоративной базы знаний. Представь: VLM видит график в отчете, понимает, что это quarterly revenue, ищет похожие графики в прошлых отчетах через векторный поиск, и генерирует аналитику.
Но это уже тема для другой статьи. А пока - гибрид IDP+VLM самый pragmatic choice на 2026 год. Не идеальный, но работающий. И что важно - окупаемый.