AI-классификация документов: 95% точность без ручной сортировки
Кейс

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 минут вместо трёх часов.

flowchart LR A["Gmail\nНовое письмо\nс вложением"] --> B["GAS\nИзвлечение\nвложений"] B --> C["Claude API\nРаспознавание +\nклассификация"] C --> D{"Тип\nдокумента"} D -->|Счёт| E["Google Sheet\n«Счета»"] D -->|Акт| F["Google Sheet\n«Акты»"] D -->|Накладная| G["Google Sheet\n«Накладные»"] D -->|Претензия| H["Google Sheet\n«Претензии»"] E & F & G & H --> I["Google Drive\nСохранение в папку"] I --> J["Telegram\nУведомление\nответственному"]

Как это работает

Шаг 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)
Классификация + OCRClaude 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 рублей в месяц. Окупаемость — менее двух месяцев при полной стоимости рабочего времени менеджера.

Читайте также


Если у вас похожая ситуация — ручная сортировка документов съедает часы каждый день — напишите нам. Оценим, подходит ли AI-классификация для вашего потока документов, и покажем, как может выглядеть решение.

С вами была команда GoogleSheets.ru, мы автоматизируем то, что не должны делать люди.

Не хотите разбираться сами?

Если читали статью и поняли, что руками уже не справляетесь — напишите. Оценим задачу бесплатно и предложим решение.

140+ реализованных проектов
Google Products Expert в команде

Хотите такой же результат?

Расскажите о задаче — предложим решение и покажем релевантные кейсы.

Написать в Telegram

Подписывайтесь — делимся скриптами, кейсами и лайфхаками