Поставщик прислал прайс в PDF: как получить из него таблицу

Поставщик прислал прайс на 400 позиций — в PDF. Открываете: визуально аккуратная таблица, колонки «Артикул», «Наименование», «Цена». Выделяете, копируете в Excel — и получаете кашу: вся строка в одной ячейке, цены оторвались от названий, половина наименований уехала на вторую строку. Ситуация классическая: кто-то так «защищает» файл от правок, кто-то просто нажал «Печать → Сохранить как PDF». Разберём, как получить из такого файла рабочую таблицу.

Почему PDF — это не таблица

PDF создавался как формат документов для печати, а не для данных. Внутри файла нет ни строк, ни колонок — есть только фрагменты текста и координаты, где их нарисовать на странице. «Таблица», которую вы видите, — иллюзия: слова просто стоят ровно друг под другом, а линии нарисованы отдельными командами.

Отсюда все беды при копировании: программа, которая читает PDF, вынуждена угадывать структуру по отступам. Длинное наименование на две строки она честно считает двумя разными строками. Пустую ячейку в колонке «Скидка» — пропуском, из-за которого следующие значения сдвигаются влево. Чем «красивее» свёрстан прайс, тем хуже он извлекается.

Три способа вытащить таблицу

Копирование через Word. Word 2013 и новее открывает PDF напрямую: «Файл → Открыть» — и документ превращается в редактируемый текст, откуда таблицу можно скопировать в Excel. Для короткого простого прайса на пару страниц сойдёт, но на десяти страницах с переносами Word сам теряет границы ячеек, и на выходе та же каша, только уже в Excel.

Excel «Из PDF». Вкладка «Данные» → «Получить данные» → «Из файла» → «Из PDF»: Excel покажет список таблиц, которые нашёл на страницах, и загрузит их на лист. Способ самый аккуратный из штатных, но с двумя ограничениями. Первое: работает только с «настоящим» PDF, где есть текстовый слой, — на скане Excel не найдёт ни одной таблицы. Второе: многостраничный прайс разбивается на отдельные таблицы по страницам, а шапка со второй страницы превращается в данные.

Онлайн-распознаватели PDF → Excel. Загружаете файл, получаете XLSX. Качество непредсказуемое, плюс вопрос конфиденциальности: цены и условия поставщика уезжают на чужой сервер. Для прайса, который и так висит в открытом доступе, терпимо; для персональных условий — повод подумать.

Если PDF оказался сканом без текстового слоя, остаётся распознавание (OCR) и обязательная ручная сверка чисел: распознаватель легко путает «0» и «О», точку и запятую в цене. Прайс на 400 позиций после OCR стоит просмотреть глазами хотя бы выборочно.

Таблица, извлечённая из PDF: строки разорваны переносами, колонки съехали
Результат извлечения из PDF: данные на листе, но это ещё не таблица

Извлечь — только полдела

Даже в удачном случае на листе оказывается не готовый прайс, а сырьё: шапка в две строки («Цена» над «опт / розница»), строки-разделы с названиями категорий посреди данных, итоговые строки внизу каждой страницы, колонка наименований, разорванная переносами. Механика таких шапок подробно разобрана в статье про многострочные заголовки.

Руками это чистится долго, поэтому дальше извлечённый XLSX или CSV удобно прогнать через конвертер — он как раз принимает XLS, XLSX и CSV. На шаге «Структура» вы указываете, с какой строки начинается таблица, схлопываете многострочную шапку в одну и удаляете строки-разделы — живое превью сразу показывает результат:

Шаг «Структура»: указана первая строка таблицы, шапка схлопнута, строки-разделы удалены
Шаг «Структура»: из сырого текста собрана нормальная таблица

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

Шаг «Колонки»: переименование колонок и действие «Убрать пробелы» на ценах
Шаг «Колонки»: лишнее удалено, цены очищены действием «Убрать пробелы»

После регистрации настройки шагов сохраняются в шаблон — следующий прайс от того же поставщика прогоняется по тому же сценарию за минуту.

Профилактика: договориться с поставщиком

Всё описанное выше — обходные пути. Прямое решение одно: попросить прайс в Excel. У поставщика он и так живёт в учётной системе, и «Сохранить как XLSX» для него — десять секунд. Аргумент, который обычно работает: «для загрузки на маркетплейсы нужна таблица, PDF площадка не принимает».

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

Пока договорённости нет, рабочая схема такая: извлекли таблицу из PDF любым способом → сохранили как XLSX или CSV → прогнали через конвертер по сохранённому шаблону → получили файл, который площадка примет.

Частые вопросы

Можно ли загрузить PDF сразу в конвертер?

Нет: конвертер принимает XLS, XLSX и CSV — PDF в этот список не входит. Сначала извлеките таблицу любым способом (Excel «Из PDF» — самый аккуратный), сохраните результат как XLSX или CSV и загрузите уже его: дальше чистка на шагах «Структура» и «Колонки».

Excel «Из PDF» не нашёл ни одной таблицы — почему?

Скорее всего, у файла нет текстового слоя: это скан или фото документа. Проверить просто — попробуйте выделить текст в просмотрщике PDF. Если текст не выделяется, поможет только распознавание (OCR) с последующей ручной сверкой чисел.

После извлечения цены стали текстом и не считаются. Что делать?

При копировании из PDF числа приходят с неразрывными пробелами и выглядят для Excel текстом. На шаге «Колонки» повесьте на колонку цены действие «Убрать пробелы» — значения станут настоящими числами. Заодно проверьте разделитель копеек: точку в русской локали Excel числом не считает.

Поставщик принципиально шлёт только PDF. Как быть?

Попросите Excel-версию «для загрузки на маркетплейсы» — это аргумент, который понимают. Если отказываются, автоматизируйте обход: один раз соберите шаблон обработки в конвертере и прогоняйте через него каждый новый извлечённый файл — ручной чистки больше не потребуется.