PDF в Excel: одна проверенная таблица вместо копипасты
Перенос счетов из PDF в Excel выглядит как небольшая задача. У вас есть папка с PDF-счетами. У каждого поставщика свой макет, свои названия полей и свой способ записи дат и сумм. А нужна одна таблица: номер счёта, дата, поставщик, сумма без НДС, НДС, итог. И нужно, чтобы ей можно было доверять.
Вручную это работает, если счетов пять. Когда их пятьдесят, начинаются ошибки: запятая прочитана как разделитель тысяч, дата перепутана местами, итог, который изначально не сходился.
Три способа
| Способ | Для чего подходит | На что обратить внимание |
|---|---|---|
| Excel «Получить данные → Из PDF» (Excel для Microsoft 365 на Windows) | несколько счетов с аккуратными таблицами | для каждого макета — свои шаги; итоги никто не проверяет |
| Онлайн-конвертер | разовый файл | куда отправляются и где хранятся ваши счета; результат всё равно нужно проверять |
| Небольшой скрипт | много счетов, разные поставщики, каждый месяц | один раз нужно настроить под ваши макеты |
Если вы получаете несколько счетов в месяц от одного поставщика, хватит Excel. Когда поставщиков несколько и это повторяется каждый месяц, скрипт окупается: правила задаются один раз, а запускать скрипт можно снова и снова.
Как выглядит хороший результат
Одна строка на каждый PDF, одинаковые столбцы для всех поставщиков, даты в едином формате (2026-09-03), суммы — обычными числами (1240.00), и ещё один столбец: требует проверки.
Этот последний столбец — самый важный. Хороший процесс не угадывает. Если у счёта нет номера или сумма без НДС плюс НДС не равна итогу, строка остаётся такой, как напечатана, и помечается. Решение принимает человек.
Как работает подход со скриптом
- Прочитать текст из каждого PDF. Счета, созданные бухгалтерскими программами, содержат настоящий текст, так что библиотека вроде
pypdfможет его прочитать. - Найти каждое поле по его меткам. Одно и то же поле называется по-разному:
Invoice No:,Facture n°,Rechnungsnummer;Subtotal,Total HT,Nettobetrag. Вы держите короткий список меток для каждого поля. - Нормализовать числа и даты.
1,240.00,1 240,00 €и180,00 EUR— всё это суммы;14/09/2026и22.09.2026— обе даты. Договоритесь о порядке день/месяц до начала работы. - Проверить арифметику. Сумма без НДС плюс НДС должны давать итог — с точностью до цента.
- Помечать, а не исправлять. Нет номера, нечитаемая дата, не сходящийся итог — строка попадает в список на проверку.
Минимальная версия шагов 1 и 4:
from pypdf import PdfReader
def pdf_text(path):
return "\n".join(page.extract_text() or "" for page in PdfReader(path).pages)
def totals_ok(net, vat, total):
return round(net + vat, 2) == round(total, 2)
Что мы увидели на тестовом наборе
Мы собрали небольшую демонстрацию на шести вымышленных счетах от трёх поставщиков, с метками на английском, французском и немецком. В двух из них были заложены проблемы: один итог не совпадал со строками, у одного счёта не было номера. Скрипт выдал одну таблицу с четырьмя чистыми строками и пометил на проверку именно те два.
Это тест на выдуманных данных, а не обещание по вашим счетам. Реальные папки приносят свои сюрпризы — потому столбец проверки и существует.
Типичные ловушки при переносе счетов из PDF в Excel
- Запятая или точка в десятичной части.
1.240,00и1,240.00— одна и та же сумма;1,240может быть чем угодно. Определите правило для каждого поставщика. - День и месяц.
03/04/2026— это 3 апреля во Франции и 4 марта в США. Договоритесь о порядке до запуска. - Несколько ставок НДС в одном счёте. Одного столбца на сумму без НДС и одного на НДС недостаточно; храните строку на каждую ставку или итог с пометкой.
- Кредит-ноты. Они должны попадать в таблицу отрицательными суммами, а не вторым счётом, удваивающим ваши расходы.
- Валюта. Если поставщик выставляет счёт в другой валюте, сохраните столбец с валютой и конвертируйте потом — но никогда незаметно.
Пятиминутная проверка, прежде чем доверять таблице
- Количество строк равно количеству PDF.
- Сумма столбца итогов совпадает с тем, что показывает ваша бухгалтерия или банк за тот же период.
- Ни один номер счёта не встречается дважды.
- Откройте три случайных счёта и сравните их со строками.
- У каждой строки в списке на проверку есть решение: исправлено вручную или подтверждено как есть.
Ограничения, о которых стоит знать
- Сканы — это картинки. Сначала нужно распознавание текста (OCR), а распознанные цифры требуют проверки.
- Новые макеты требуют добавления их меток. Обычно быстро, но кто-то должен это сделать.
- Необычные форматы чисел (например, три знака после запятой) нужно согласовать, а не угадывать.
Сделать самим или передать нам
Если вы уверенно работаете с Python, описанных шагов достаточно для старта. Демо на вымышленных счетах можно посмотреть на странице наших работ. Если вам проще отправить папку и получить обратно проверенную таблицу со списком того, что требует вашего внимания, — это наш сервис Документы — в таблицы. Когда файлы конфиденциальны, обработка может остаться на вашем компьютере или на нашем в ЕС — см. Свой ИИ без облака.
Вопросы
Считываются ли отсканированные счета так же?
Напрямую — нет. Скан — это изображение бумаги, поэтому текст сначала нужно распознать (OCR). После этого применяются те же правила, но каждую распознанную цифру стоит перепроверить.
Что делать, если у счёта нет номера или итоги не сходятся?
Молча «исправлять» нельзя. Строка остаётся такой, как напечатана, и помечается для решения человеком.
Покидают ли счета мой компьютер?
Со скриптом — нет: он работает там, где лежат ваши файлы. С онлайн-конвертером проверяйте, куда отправляются и где хранятся файлы — в счетах есть данные клиентов.