Парсеры и данные
Как извлечь данные из PDF в Excel: файлы, сканы и проверка ошибок
Перенести таблицу — половина задачи. Вторая половина — убедиться, что не исчезли строки, не перепутались столбцы и сошлись суммы. Разберём процесс на небольшом наборе файлов.
Сначала определите тип PDF
Откройте документ и попробуйте выделить одно слово. Если выделяется текст, внутри, вероятно, есть текстовый слой. Если выбирается страница целиком как картинка — перед вами скан. В одном файле могут соседствовать оба варианта, поэтому проверяйте несколько страниц, включая приложения.
Даже наличие текста не гарантирует аккуратную таблицу. PDF хранит расположение элементов на странице; строка товара в нём может оказаться набором отдельных фрагментов. После копирования цена уезжает в соседний столбец, название разбивается на две строки, а повторный заголовок попадает в товары.
| Что внутри файла | С чего начать | Что проверить |
|---|---|---|
| Текст и простая таблица | Импорт PDF в Power Query | Строки, столбцы, типы значений |
| Текст, сложная вёрстка | Правила извлечения для этого формата | Переносы, объединённые ячейки, страницы |
| Скан или фотография | OCR — распознавание изображения | Цифры, знаки, качество изображения |
Когда достаточно импорта в Excel
Если в вашей версии Excel доступен коннектор PDF, попробуйте Power Query. Выберите PDF как источник, укажите файл, в навигаторе найдите нужную таблицу и откройте преобразование данных. Удалите повторные заголовки, задайте типы столбцов и загрузите результат на лист. Доступность коннектора зависит от продукта и версии; порядок подключения описан в документации Microsoft.
Артикулы и номера документов сохраняйте как текст, иначе можно потерять начальные нули. Количество и цену преобразуйте в числа с учётом десятичной запятой и разделителей тысяч. Проверьте, не превратилось ли «1 250,50» в текст или другое число.
Для скана одного извлечения текста библиотекой недостаточно: нужен этап OCR. Такое ограничение отдельно описывает документация pypdf. Распознанный текст затем нужно собрать в поля и строки таблицы, а результат сверить с оригиналом.
Пример: файлы и таблица с проверками
Ниже учебный комплект: два текстовых PDF с разной компоновкой, PDF только с изображением и Excel с контрольными формулами. Все документы созданы для этой статьи. Excel содержит подготовленный эталон и намеренно ошибочную строку для демонстрации проверки; это не результат работы универсального распознавателя.
В документе две позиции: 2 единицы по 1 250 рублей и 3 единицы по 800 рублей. Суммы строк — 2 500 и 2 400, итог — 4 900 рублей. В ошибочном варианте последняя сумма прочитана как 2 900. Контроль «количество × цена» обнаруживает расхождение в 500 рублей, а сверка общего итога подтверждает проблему.
Какие ошибки искать
- Пропущенные строки. Сравнивайте число позиций, номера страниц и итог документа. Сошедшаяся сумма сама по себе не доказывает полноту.
- Разорванные названия. Продолжение описания не должно превращаться в новый товар.
- Ошибки в числах. Проверяйте количество, цену, сумму строки и итог отдельно. Правила округления, скидки и налоги согласуйте заранее.
- Неуверенные поля. Пустое или сомнительное значение отправляйте на проверку, а не заменяйте догадкой.
- Повторная загрузка. Один файл, отправленный дважды, не должен удваивать приход товара.
Для каждого значения полезно хранить файл-источник и страницу. Проверяющий сможет открыть нужное место, а не искать ошибку по всему архиву. Если нужна обработка разных типов документов, следующий шаг — извлечение полей с ИИ и контролем результата.
Как устроить регулярную обработку
- Приём файлов
- Текст или OCR
- Поля и строки
- Проверки
- Excel или API
При регулярном потоке система сначала регистрирует файл, определяет формат и извлекает данные. Затем проверяет обязательные поля и арифметику. Документ с ошибкой попадает в очередь проверки, а прошедший контроль — в выгрузку. Статусы «обработан» и «передан в учётную систему» лучше разделить: успешное распознавание не означает успешную доставку.
Изменение шаблона поставщика может сломать старые правила. Поэтому храните набор контрольных документов, проверяйте его после правок и отслеживайте рост ошибок. Временный сбой не должен стирать исходник или приводить к бесконечным повторам.
Что подготовить для разработки
Нужны примеры каждого формата, в том числе неудобные: многостраничный документ, плохой скан, длинное название, скидка и пустое поле. Приложите образец итоговой таблицы, укажите объём и периодичность, целевую систему и ответственного за спорные значения.
Принимать решение стоит по проверке на этих файлах: какие поля извлечены правильно, сколько документов требуют вмешательства и что происходит при сбое. Если исходные PDF меняются редко, правил может хватить; универсальную модель не обязательно добавлять в каждый этап.