AI-классификация документов: 95% точность без ручной сортировки
Три часа каждое утро. Менеджер открывает почту, скачивает вложения, читает каждый документ, определяет тип — счёт, акт, накладная, претензия — и вручную раскладывает по папкам и таблицам. Двести документов в день, пять дней в неделю, пятьдесят недель в году. Пятьдесят тысяч документов, каждый из которых кто-то должен прочитать глазами и решить, куда его положить.
Этот кейс — про то, как мы заменили ручную сортировку конвейером на Google Apps Script и Claude API. И почему 95% — это не маркетинговая цифра, а порог, ниже которого систему мы бы не запустили.
Про бизнес
К нам обратилась логистическая компания. Профиль — грузоперевозки по России, собственный автопарк, работа с десятками контрагентов. Документооборот идёт через электронную почту: контрагенты присылают счета на оплату, акты выполненных работ, транспортные накладные, претензии по срокам и повреждениям, заявки на перевозку.
Всё это сыплется в один общий ящик. Двести с лишним писем в день, у многих — по два-три вложения. PDF, сканы, иногда фотографии документов с телефона.
Компания работала в Google Workspace: почта на Gmail, документы в Google Drive, учёт в Google Таблицах. Менять экосистему не планировали — команда привыкла, процессы выстроены.
Что занимало 3-4 часа каждый день
Каждое утро начиналось одинаково. Менеджер по документообороту открывала Gmail, шла по непрочитанным письмам одно за другим. Открывала вложение, читала содержимое, определяла тип документа, записывала ключевые данные в нужную таблицу — номер, дату, контрагента, сумму — и перекладывала файл в соответствующую папку на Google Drive.
Звучит просто. Но при 200+ документах в день это 3-4 часа монотонной работы. Не интеллектуальной — именно монотонной. Менеджер не принимала решений, не анализировала, не согласовывала. Она читала и перекладывала. Изо дня в день.
Проблемы накапливались:
- Задержки. Срочная претензия, пришедшая в пятницу вечером, обнаруживалась только в понедельник утром. К тому моменту сроки реагирования уже нарушены.
- Потери. В потоке из двухсот писем документы терялись. Не часто — два-три в месяц. Но каждый потерянный акт — это неоплаченный счёт или пропущенный дедлайн.
- Ошибки маршрутизации. Накладная попадала в папку актов, претензия — в папку счетов. При ручной работе с 200+ документами ошибки неизбежны. Их находили через дни, иногда недели.
- Зависимость от одного человека. Менеджер заболела — документы копятся. Ушла в отпуск — нужен заместитель, которого надо обучать.
Что мы построили
Конвейер, который делает ровно то, что делала менеджер, — только без перерывов, без ошибок от усталости и за 15 минут вместо трёх часов.
Как это работает
Шаг 1. Извлечение. Google Apps Script по триггеру каждые 10 минут проверяет входящую почту. Находит непрочитанные письма с вложениями, извлекает файлы — PDF, изображения, документы.
Шаг 2. Классификация. Файл отправляется напрямую в Claude API — модель мультимодальна и сама распознаёт текст из PDF, сканов и фотографий. Никакого отдельного OCR-шага не нужно: Claude читает документ и классифицирует его в одном запросе. Промпт содержит:
- Список типов документов с описаниями и примерами
- Правила классификации (например: если в документе есть слова «к оплате» и «итого» — вероятно, счёт)
- Инструкцию вернуть тип документа, уровень уверенности и извлечённые метаданные (номер, дата, контрагент, сумма)
Claude возвращает структурированный JSON:
{
"document_type": "invoice",
"confidence": 0.97,
"metadata": {
"number": "СЧ-2026/0847",
"date": "2026-02-28",
"counterparty": "ООО Транспорт-Логистик",
"amount": 147500.00
}
}
Шаг 3. Маршрутизация. По типу документа скрипт определяет целевую таблицу и папку. Записывает метаданные в строку Google Sheet — номер, дату, контрагента, сумму, ссылку на файл. Файл перемещается в соответствующую папку на Google Drive.
Шаг 4. Уведомление. Если тип документа — претензия или уверенность классификации ниже 85%, скрипт отправляет уведомление ответственному в Telegram. Претензии — потому что требуют немедленной реакции. Низкая уверенность — потому что документ нужно проверить вручную.
Что происходит с неуверенной классификацией
Мы ввели три уровня:
- Выше 90% — автоматическая маршрутизация без вмешательства человека.
- 70-90% — автоматическая маршрутизация + пометка «проверить» в таблице. Менеджер просматривает такие документы в конце дня.
- Ниже 70% — документ попадает в папку «На ручную сортировку» и Telegram-алерт. Таких — менее 3% от общего потока.
Это не костыль, а сознательное решение. AI-классификация не бинарна: «знаю точно» и «не знаю» — это два крайних случая. Между ними — зона, где система справляется, но перестраховка не помешает. Порог 90% мы подобрали эмпирически за первую неделю работы, анализируя расхождения между классификацией модели и ручной проверкой.
Результаты
Система работает в продакшене три месяца. Цифры — за последний полный месяц.
Было: 3-4 часа ежедневной ручной сортировки, 2-3 потерянных документа в месяц, обнаружение срочных документов — на следующий рабочий день.
Стало:
- Время обработки: 15 минут на весь дневной поток. Это время работы скрипта, не человека.
- Точность классификации: 95.2% — доля документов, корректно классифицированных без ручного вмешательства.
- Потерянных документов: 0. Каждое письмо с вложением обрабатывается. Если классификация не удалась — документ не исчезает, а попадает в папку ручной сортировки.
- Претензии обнаруживаются за 10 минут вместо следующего рабочего дня. Telegram-алерт приходит ответственному почти сразу.
Менеджер по документообороту не была уволена — она занялась аналитикой и работой с контрагентами. Той работой, для которой нужна голова, а не способность читать PDF по восемь часов в день.
В пересчёте на год: 3.5 часа в день, 250 рабочих дней — это 875 часов. Больше ста рабочих дней, высвобожденных для задач, которые создают ценность.
Чего не скрываем
Claude API — это внешний сервис с платными запросами. При 200+ документах в день стоимость API составляет примерно 3 000-5 000 рублей в месяц. Это в десятки раз дешевле, чем ручная работа, но важно учитывать в бюджете. При росте объёмов стоимость растёт линейно.
Качество зависит от входящего файла. Фотография мятого документа, снятая при плохом освещении на старый телефон — даже мультимодальная модель распознает с ошибками. Мы рекомендовали клиенту попросить контрагентов присылать документы в PDF, а не в виде фотографий. Большинство согласились. Но часть документов по-прежнему приходит фотографиями — и с ними точность ниже.
Нестандартные документы требуют дообучения промпта. Когда появился новый тип документа — заявка на возврат тары — система начала классифицировать его как претензию. Мы обновили промпт, добавили примеры — проблема решилась за час. Но это ручная работа: кто-то должен заметить, что классификация ошибается, и обновить инструкции для модели.
6-минутный лимит GAS. Знакомая проблема. При большом накоплении писем (например, после выходных) скрипт может не успеть обработать все за один запуск. Мы применили ту же стратегию checkpoint-resume, что и в проекте мониторинга таблиц: скрипт сохраняет позицию и продолжает при следующем запуске. 200 писем обрабатываются за 2-3 последовательных запуска.
Технический стек
| Компонент | Технология |
|---|---|
| Платформа | Google Apps Script (V8 runtime) |
| Классификация + OCR | Claude API (Anthropic) — мультимодальная модель |
| Хранение данных | Google Sheets (по таблице на тип документа) |
| Хранение файлов | Google Drive (по папке на тип документа) |
| Уведомления | Telegram Bot API |
| Обработка ошибок | Retry с exponential backoff, checkpoint-resume |
| Триггер | Time-based trigger (каждые 10 минут) |
Архитектура системы
Система состоит из одного GAS-проекта с тремя модулями: извлечение писем, классификация через Claude API и маршрутизация результатов.
Триггер запускается каждые 10 минут. Модуль извлечения находит непрочитанные письма с вложениями и сохраняет файлы на Google Drive. Модуль классификации отправляет файл в Claude API — модель сама распознаёт содержимое (PDF, скан, фото) и возвращает тип документа с метаданными. Модуль маршрутизации записывает метаданные в целевую таблицу, перемещает файл в нужную папку и при необходимости отправляет Telegram-уведомление.
Для обработки ошибок API используется exponential backoff: 3, 9, 27 секунд между попытками. Если Claude API недоступен — документ откладывается до следующего запуска, не теряется. Checkpoint-resume обеспечивает обработку больших накоплений писем в несколько последовательных запусков, обходя 6-минутный лимит GAS.
Частые вопросы
Можно ли классифицировать документы без AI, по ключевым словам?
Можно, но точность будет существенно ниже. Мы пробовали rule-based подход на этапе прототипирования: искали слова «счёт», «акт», «накладная» в тексте. Точность составила около 70% — слишком много документов, где эти слова встречаются в неожиданном контексте. Счёт-фактура — это не счёт на оплату. Акт приёма-передачи — не акт выполненных работ. Claude понимает контекст, правила — нет.
Насколько безопасно отправлять документы в Claude API?
Документы передаются через HTTPS. Anthropic не использует данные из API-запросов для обучения моделей. Тем не менее, если политика безопасности компании запрещает отправку документов во внешние сервисы — смотрите следующий вопрос.
А если данные не должны покидать контур компании?
Та же архитектура работает с локальными моделями. Вместо Claude API подключается модель, развёрнутая на серверах клиента — через Ollama, vLLM или любой OpenAI-совместимый endpoint. Распознавание и классификация происходят внутри корпоративной сети, ни один документ не уходит наружу.
Для крупного бизнеса с требованиями ИБ это стандартный сценарий. Качество классификации при использовании открытых моделей (Llama, Qwen, Mistral) чуть ниже, чем у Claude, но для типовых документов — достаточное. Мы помогаем подобрать модель и настроить инфраструктуру.
Сколько стоит такая автоматизация?
Разработка заняла 12 дней. Стоимость — 85 000 рублей. Ежемесячные расходы на Claude API — 3 000-5 000 рублей в зависимости от объёма документов. Поддержка — 10 000 рублей в месяц. Окупаемость — менее двух месяцев при полной стоимости рабочего времени менеджера.
Читайте также
- Мониторинг 700+ Google Таблиц — ещё один проект на GAS с checkpoint-resume и борьбой с лимитами
- Как мы строим интеграции: очереди, retry, мониторинг — архитектурные принципы, которые применяем в каждом проекте
- Библиотеки в гугл скриптах: как подключить и использовать
Если у вас похожая ситуация — ручная сортировка документов съедает часы каждый день — напишите нам. Оценим, подходит ли AI-классификация для вашего потока документов, и покажем, как может выглядеть решение.
С вами была команда GoogleSheets.ru, мы автоматизируем то, что не должны делать люди.
Не хотите разбираться сами?
Если читали статью и поняли, что руками уже не справляетесь — напишите. Оценим задачу бесплатно и предложим решение.
Похожие статьи

Как мы построили систему мониторинга 700+ таблиц на Google Apps Script для компании из сферы автовыкупов и высвободили 912 часов в год.

Как мы собрали для девелопера Дирижабль систему координации юридических текстов в рекламе: генерация дисклеймеров и отслеживание изменений по десяткам ЖК.

330 заказов с Flowwow в праздничный день — и ни одного ручного переноса в МойСклад. Как убрали узкое место в обработке заказов.
Хотите такой же результат?
Расскажите о задаче — предложим решение и покажем релевантные кейсы.
Написать в TelegramПодписывайтесь — делимся скриптами, кейсами и лайфхаками