Почему таблицу из PDF нужно проверить перед загрузкой в отчёт

На странице видна аккуратная таблица, но после извлечения столбцы могут сместиться. Объясняем различия текста и скана и предлагаем проверку строк, заголовков и итогов.

Лупа увеличивает границу между ячейками светлой таблицы с оранжевыми прямоугольниками.

Похожая картинка может скрывать разные исходные данные

Представим условный PDF с перечнем товаров и стоимостью. На экране он выглядит как обычная таблица, но после переноса название оказывается рядом с чужой суммой, а заголовок повторяется среди строк. Если сразу включить результат в отчёт, ошибка исходного разбора станет выглядеть как достоверная цифра. Красивый вид страницы не подтверждает правильность извлечённых данных.

Сначала стоит выяснить, что находится внутри файла. Это может быть текст с расположением символов на странице, изображение от сканирования или сочетание изображения и распознанного текста. Внешне страницы бывают очень похожи. Однако способ получения содержимого и виды возможных ошибок у них различаются, поэтому одной проверки расширения файла недостаточно.

Текстовый слой не всегда хранит готовые ячейки

В документации pypdf объясняется, что таблица в PDF часто представлена расположенными на странице фрагментами текста. Их принадлежность строкам и столбцам приходится восстанавливать. Для объединённых ячеек, многострочных названий и повторяющихся заголовков возможны разные варианты интерпретации. Наличие выделяемого текста ещё не даёт готовую таблицу для расчёта.

В нашем примере название товара может занимать две строки, а цена находиться на уровне второй. При простом чтении подряд легко получить два товара или отнести сумму к соседу. Поэтому предложим сопоставлять извлечённую строку с местом на исходной странице. Важно проверять смысл связи между значениями, а не только наличие всех слов и чисел.

Для скана требуется распознавание символов

Если страница является изображением, нужен этап оптического распознавания, часто называемый OCR. Он превращает видимые символы в текст. При этом могут перепутаться похожие знаки или исчезнуть разделитель дробной части. Документация pypdf отдельно указывает, что сама библиотека не является средством OCR. Успешное открытие файла не означает, что изображение прочитано.

Наличие скрытого текста под картинкой тоже не исключает ошибок прежнего распознавания. Предложим проверить несколько характерных мест: мелкий шрифт, переносы, дробные суммы и отрицательные значения, если они есть в исходнике. Сохранять ссылку на страницу полезно, чтобы при расхождении можно было вернуться к источнику, а не угадывать, как выглядела потерянная ячейка.

Проверяйте границы таблицы, а не только цифры

В документации pdfplumber описаны выделение таблиц по линиям или расположению текста и визуальная проверка найденных границ. Это показывает, почему результат зависит от устройства страницы. Упоминание инструмента здесь поясняет механизм; оно не означает, что один способ одинаково хорошо разберёт любую таблицу или скан.

Для условного перечня предложим проверить начало и конец таблицы на каждой странице. Не попал ли номер страницы в данные? Не принято ли повторное название столбца за товар? Если общий заголовок относится к нескольким колонкам, нужно понять, как он раскрыт в итоговой структуре. Пустая ячейка также не обязательно означает нулевое значение.

Совпадение числа строк не подтверждает правильность сумм

Рассмотрим условные позиции на 300 и 700 рублей и отдельную строку «Итого» на 1000 рублей. Если загрузить все три числа как самостоятельные продажи, получится 2000 рублей вместо 1000. Все цифры при этом будут перенесены без ошибок. Потерян не символ, а различие между исходными позициями и сводной строкой.

Для учебной проверки предложим отдельно сопоставить заголовки, число содержательных записей, несколько строк целиком и контрольный итог. При расхождении важно сохранить исходный PDF и результат извлечения для разбора. Исправлять неизвестные значения догадками не стоит. Если источник предоставляет настоящую табличную выгрузку, полезно запросить её вместо восстановления структуры по внешнему виду страницы.

Как встроить извлечение в работу с данными

Проверки после переноса подробнее разобраны в статье о сверке источника и отчёта. А место таких задач среди других технологий показывает материал про инструменты Data Engineer. Здесь важно отделить получение символов от подтверждения смысла готовых записей.

Познакомиться с подготовкой данных можно на курсе Data Engineer для начинающих. Для первого разбора достаточно взять небольшой условный документ и объяснить, где заканчивается исходная позиция, откуда получена каждая сумма и почему результат извлечения требует отдельной проверки.

Data Engineer для начинающих
Курс
Доступ сразу
Data Engineer для начинающих

Освойте Data Engineering с нуля: научитесь собирать, хранить и обрабатывать данные. Практика на каждом этапе — опыт не нужен.

С нуля до junior
Теория и практика
Диплом по окончании
12 990
₽/мес
УЗНАТЬ ПОДРОБНЕЕ

Источники

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

Обучить команду или нанять специалиста по данным: как выбрать
47

Обучить команду или нанять специалиста по данным: как выбрать

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

Вертикальное и горизонтальное масштабирование данных: в чём разница

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

Журнал изменений данных: как выяснить, кто и когда изменил набор

Что можно узнать из журнала действий с данными, как он помогает разбирать ошибки и почему его записи не показывают всю историю сами по себе.

Занятия проходят
в Нова Дата СДО

Вебинары, практика и общение с преподавателем — в одном окне браузера.

Посмотреть интерфейс платформы
Календарь обучения в Нова Дата СДО
Курсы студента в Нова Дата СДО
Редактор кода для практики в Нова Дата СДО
Вебинары и расписание Ваши курсы Код в браузере
Нова Дата СДО — в реестре российского ПОРеестровая запись № 34931
Заявка отправлена
Отправим вам подборку курсов в течение 5 минут. С вами также свяжется наш специалист и даст карьерную консультацию.
Персональный промокод
На курс «Инженер по парсингу данных»
Введите код при оплате, чтобы применить скидку к программе.