Как проверять таблицы, извлечённые из PDF с помощью ИИ
Извлечение таблицы из PDF считается успешным не тогда, когда на экране появилась аккуратная сетка, а когда каждое важное значение можно связать с исходной страницей и перепроверить. ИИ хорошо восстанавливает заголовки, объединяет строки и угадывает структуру, но именно эта способность делает ошибку убедительной. Ниже — рабочий маршрут для отчётов, прайс-листов, счетов и приложений к договорам.
1. Определите результат до загрузки файла
Сначала запишите, что вы хотите получить. «Перенести таблицу в Excel» слишком расплывчато. Укажите листы, обязательные столбцы, формат дат, валюту, десятичный разделитель и правила для пустых ячеек. Отдельно перечислите поля, от которых зависит решение: итоговая сумма, ставка, период, единица измерения, номер позиции.
Создайте простой словарь типов. Например, количество — целое число, цена — денежное значение с двумя знаками, скидка — процент, артикул — строка, даже если состоит из цифр. Без этого артикул 00124 легко превращается в 124, а дата 03/04/26 получает неверный месяц. Подробный разбор подготовки документа есть в материале как разобрать PDF нейросетью, но здесь сосредоточимся именно на приёмке таблицы.
2. Сохраните неизменяемый исходник
Работайте с копией файла и вычислите контрольную сумму, если документ важен для аудита. Запишите имя, дату получения и владельца. Не перезаписывайте исходный PDF после распознавания. Если страницы сканированные, сохраните также изображения, на которых выполнялся OCR: автоматическое выравнивание и повышение контраста иногда удаляют тонкие разделители или минус перед числом.
До отправки в облачную модель удалите лишние персональные и коммерческие данные. Для регулярной работы полезен локальный этап очистки. Он не улучшает распознавание, но уменьшает последствия ошибочной загрузки. Сотрудник должен видеть, какая версия очищена и какие поля заменены.
3. Извлекайте данные вместе с координатами
Просите систему вернуть не только значение, но и страницу, номер таблицы, строку и исходный фрагмент. Удобный минимальный формат — CSV или JSON со служебными полями page, source_text и confidence_note. Не полагайтесь на числовую «уверенность», если непонятно, как она рассчитана. Текстовая пометка вроде «ячейка частично перекрыта печатью» полезнее абстрактных 92 процентов.
Большую таблицу разбивайте по логическим блокам, а не по случайному числу токенов. Сначала извлеките заголовок и единицы, затем строки, затем примечания. После сборки проверьте, что число строк совпадает с визуальным оригиналом. Модель может незаметно объединить две похожие позиции или принять перенос описания за новую запись.
4. Проверьте структуру до отдельных чисел
Сверьте число столбцов, многоуровневые заголовки, объединённые ячейки, итоги и сноски. Частая ошибка — значение оказывается в правильной строке, но в соседнем столбце. Особенно опасны таблицы, где единицы указаны один раз над группой колонок. В финальной таблице повторите единицу в отдельном поле, чтобы она не потерялась при фильтрации.
Пять случайных строк не заменяют риск-ориентированную выборку. Обязательно возьмите первую и последнюю строку страницы, максимальное и минимальное значение, отрицательное число, пустую ячейку и строку рядом с переносом страницы. Если есть печать или рукописная пометка, проверьте участок отдельно.
5. Пересчитайте арифметику вне языковой модели
Все суммы, проценты и итоги рассчитывает таблица или короткий скрипт. Языковая модель может предложить формулу, но не является источником результата. Сравните сумму строк с напечатанным итогом и зафиксируйте допустимое расхождение из-за округления. Если итог не сходится, не подгоняйте одну ячейку: найдите первую строку, после которой появляется разница.
Проверьте инварианты. Количество не бывает отрицательным, ставка должна попадать в допустимый диапазон, конец периода не раньше начала, валюта одинакова внутри блока. Такие правила ловят ошибки, которые визуально выглядят правдоподобно. Для сложных документов полезен подход из гайда по проверке длинного документа: сначала список утверждений, затем координаты и только потом вывод.
6. Сравните два независимых прохода
Для критических таблиц выполните второе извлечение другим способом: иной OCR, другая модель или ручной ввод контрольной части. Сравнивайте ячейки программно. Совпадение двух систем не доказывает истину, особенно если они используют одну библиотеку распознавания, но расхождение точно показывает место для проверки.
Не просите вторую модель «подтвердить правильность» первой без исходного изображения. Она будет оценивать правдоподобие готовой таблицы. Правильная задача — независимо прочитать конкретную область страницы и вернуть символы без исправления смысла.
7. Организуйте очередь исправлений
Каждая исправленная ячейка получает старое значение, новое значение, страницу, причину и имя проверившего. Исправления типа «очевидная опечатка» всё равно документируются. Если модель регулярно путает один формат, добавьте пример в тестовый набор и проверьте следующую версию на тех же страницах.
Для денежных и юридически значимых данных введите двойное подтверждение. Один сотрудник исправляет, другой принимает. Не позволяйте интерфейсу скрывать изменения после экспорта: итоговый файл должен содержать версию и ссылку на журнал.
8. Примите результат по заранее заданному порогу
Считайте ошибки на тысячу ячеек и отдельно — критические ошибки. Одна неверная сумма опаснее десяти лишних пробелов. Зафиксируйте время ручной проверки: если оно не меньше ручного переноса, автоматизация пока не окупается. Возможно, стоит извлекать только повторяющиеся поля, а сложные приложения оставлять специалисту.
Пилот считается готовым, когда новый файл проходит структурные проверки, арифметика сходится, критические значения связаны с координатами, а другой сотрудник может восстановить ход исправлений. Для выбора подходящего класса модели откройте каталог инструментов и сравните его с процессом, а не с одной красивой демонстрацией.
Частые вопросы
Можно ли доверять таблице при 99% распознанных символов? Нет. Один процент может попасть в итог, ставку или артикул. Нужна отдельная проверка критических полей.
Что делать с рукописными пометками? Выносить их в отдельный слой и проверять вручную; не смешивать с печатной таблицей молча.
Какой формат экспорта лучше? Для дальнейшей обработки — CSV или типизированный JSON, для аудита — файл плюс координаты и журнал исправлений.