Счета, накладные, акты, анкеты, чеки из авансового отчёта — всё это приходит картинкой или PDF, а нужно в виде полей: номер, дата, сумма, контрагент. Обычно между одним и другим сидит человек и перебивает цифры в учётную систему. Это самая скучная работа в компании и самая дорогая по ошибкам: перепутанная цифра в сумме всплывает через месяц.
В Staqflow появился узел «Извлечение из документа». На входе PDF или скан, на выходе — заполненные поля, которые следующий шаг кладёт в 1С, CRM или таблицу.
Извлечение из документа — это шаг процесса, который читает приложенный файл и возвращает не свободный текст, а строго заданную форму: вы перечисляете нужные поля, а узел отдаёт их значениями из документа.
Чем это отличается от анализа изображения
Узел анализа картинки отвечает словами: «на фото накладная №такая-то от такого-то числа». Это удобно человеку и неудобно процессу — дальше такой ответ нужно разбирать.
Узел извлечения отвечает структурой. Вы говорите: нужны number, date, total, supplier — и получаете именно их, в нужных типах. Плюс он берёт не только картинку, но и PDF.
Семь провайдеров и три повадки
| Провайдер | Как читает документ |
|---|---|
| OpenAI | читает файл сам |
| OpenRouter | читает файл сам, моделями разных вендоров |
| Свой сервер | читает сам, если говорит на протоколе OpenAI |
| xAI (Grok) | читает сам, но только отдельной ручкой: обычный чат файла не берёт |
| Google Gemini | читает своим протоколом и требует схему в своём диалекте |
| Mistral | распознаёт и заполняет форму одним запросом |
| Yandex Vision | отдаёт текст, а поля из него достаёт второй вызов языковой модели на том же ключе |
Разницу узел прячет: панель одна и та же, а перевод в протокол конкретного сервиса — его забота. Для Yandex отдельное подключение заводить не нужно, хватает того же ключа.
Честно про тех, кого нет: у Qwen в сообщении бывают только текст, картинка и видео, у Groq — строка или картинка, а у GigaChat файл загружается, но работа с ним идёт за отдельным тарифом.
Как настроить
- Добавьте подключение к сервису в учётных данных пространства.
- Поставьте узел «Извлечение из документа» и выберите провайдера и модель.
- Укажите поле с документом — бинарное поле элемента, куда предыдущий шаг положил файл: вложение из почты, файл из Telegram, скан из хранилища.
- Перечислите поля, которые нужно достать.
Для каждого поля задаются четыре вещи: название (оно же станет ключом в ответе), что искать — подсказка модели своими словами, тип и обязательность.
Типы: текст, число, дата, «да или нет» и список строк. Тип — это не украшение: сумма приходит числом, а не строкой с пробелами, и её сразу можно сравнить с лимитом в условии.
Своя JSON-схема
Если форма сложнее плоского списка — например, нужны строки таблицы с наименованием, количеством и ценой в каждой, — переключите «Что достаём» на свою JSON-схему и опишите вложенность как надо.
Почему необязательное поле — это тип с null
Деталь, которая объясняет качество результата. Строгий режим провайдеров требует, чтобы в ответе присутствовали все свойства схемы. Если «необязательность» выражать отсутствием поля в списке обязательных, модель всё равно обязана его заполнить — и заполняет выдумкой. Поэтому узел выражает необязательное поле типом, который допускает null: модель имеет право честно ответить «этого в документе нет».
Той же цели служит и просьба, которую узел добавляет к запросу сам: брать значения только из документа и не придумывать то, чего в нём нет.
Уточнение для сложных бланков
Когда бланк нестандартный, помогает поле «Уточнение» — несколько слов своими словами о том, где что искать: «номер счёта стоит в шапке справа, не путать с номером договора», «суммы указаны без НДС, итог в последней строке таблицы». Это дописывается к просьбе и заметно улучшает результат на тех документах, где одинаковых по смыслу чисел несколько.
Форматы и проверка файла
Принимаются PDF, PNG, JPEG, WebP и GIF. Тип определяется по первым байтам файла, а не по тому, что записано в его свойствах: в бинарном поле лежит то, что положил предыдущий шаг, и заявленный тип там бывает любой.
Отдельная история — TIFF со сканера: его узел отсекает до запроса и говорит, какие форматы годятся, вместо невнятного отказа провайдера через полминуты и за ваши деньги.
Что приходит на выход
fields— те самые поля со значениями;providerиmodel— кто читал и чем;text— распознанный текст целиком, если включить «Оставлять распознанный текст». Так умеют только Mistral и Yandex: остальные читают документ, но текст не возвращают;pages— сколько страниц обработано, когда провайдер это сообщает;tokens— расход.
Включите «Сохранять поля входа», и рядом останутся данные исходного элемента: идентификатор письма, имя файла, отправитель.
Сценарии автоматизации
Счета и накладные в учётную систему
Письмо с вложением приходит на почту → узел достаёт номер, дату, сумму, ИНН и контрагента → процесс находит поставщика в 1С и создаёт документ. Спорные случаи — сумма выше лимита или контрагент не найден — уходят в чат бухгалтерии на ручное подтверждение.
Чеки в авансовый отчёт
Сотрудник присылает фото чека в Telegram-бот → достаются дата, сумма, магазин и категория → строка добавляется в отчёт, а сотрудник получает подтверждение в том же чате.
Заявки и анкеты из PDF
Заполненная форма приходит файлом → поля превращаются в карточку CRM без перебивки руками.
Договоры и акты
Из подписанного скана достаются номер, дата, стороны, сумма и срок — и ложатся в реестр договоров, который дальше сам напоминает о продлении.
Первичка из архива
Папка сканов обрабатывается разом: каждый файл отдельным элементом, ошибки складываются в отдельную ветку, а не роняют весь прогон.
Что стоит проверять
Модель читает документ лучше человека по скорости, но хуже по ответственности. Несколько правил, которые экономят нервы:
- Считайте контрольные значения сами. Если в документе есть сумма и построчные позиции, сверьте их узлом «Код» — расхождение означает, что читать нужно внимательнее.
- Ставьте условие на сомнительное. Пустое обязательное поле или сумма выше порога — повод отправить документ человеку, а не в учётную систему.
- Не смешивайте типы документов в одном узле. Накладной и анкете нужны разные формы; проще развести их условием по отправителю или по теме письма.
- Помните про персональные данные. Паспорта и медицинские справки уезжают во внешний сервис вместе с файлом. Если так нельзя — собственный контур и локальная модель на протоколе OpenAI.
Сколько это стоит
Провайдеры считают по токенам, а страница документа — это много токенов, особенно скан. Поэтому дешевле отправлять нужные страницы, а не весь договор на сорок листов, и не гонять один и тот же файл дважды.
В Staqflow оплачивается только работа процесса — токены за CPU-секунды, а ожидание ответа провайдера процессор почти не грузит. Тарифы — на странице цен.
Частые вопросы
Чем это отличается от обычного OCR?
OCR возвращает текст, и дальше его надо разбирать регулярками, которые ломаются на каждом новом бланке. Здесь вы описываете поля, а не формат, — и один и тот же узел справляется со счетами разных поставщиков.
Нужен ли отдельный сервис распознавания?
Нет. Шесть из семи провайдеров читают документ сами. Yandex Vision распознаёт текст, а поля из него достаёт языковая модель на том же ключе — отдельное подключение не нужно.
Что будет, если поля нет в документе?
Необязательное поле придёт пустым — ровно для этого оно и описывается типом, допускающим пустоту. Обязательное пустым быть не должно, и это удобный признак: пустота значит, что документ не тот или скан нечитаемый.
Можно ли достать строки таблицы?
Да, через свою JSON-схему: описываете массив объектов с нужными полями и получаете позиции накладной списком.
Скан плохого качества — что делать?
Сначала проверьте формат: TIFF узел не примет и скажет об этом сразу. Дальше помогает «Уточнение» — подсказка своими словами, например что документ повёрнут или что печать перекрывает номер.
Можно ли обработать сразу пачку файлов?
Да: каждый файл приходит отдельным элементом и обрабатывается своим запросом. Сбой на одном документе можно увести в отдельную ветку, чтобы он не ронял остальные.
Попробуйте
- Создайте аккаунт — карта не нужна.
- Соберите процесс из трёх узлов: почта с вложением, «Извлечение из документа» с пятью полями и запись в таблицу.
- Или опишите задачу ИИ-клиенту через MCP: «Забирай счета из почты, доставай номер, дату и сумму и клади в таблицу».
Куда отправить готовые поля — смотрите в каталоге интеграций.
