PDF в Excel: рахунки в одну перевірену таблицю
Перенесення рахунків PDF в Excel звучить як невелика задача. У вас є папка з PDF-рахунками. Кожен постачальник використовує власну верстку, власні підписи полів і власний спосіб запису дат і сум. Вам потрібна одна таблиця: номер рахунка, дата, постачальник, сума без ПДВ, ПДВ, підсумок. І ви маєте їй довіряти.
Ручне копіювання працює для п’яти рахунків. На п’ятдесяти починаються помилки: кома, прочитана як розділювач тисяч, перевернута дата, підсумок, який ще спочатку не сходився.
Три способи це зробити
| Спосіб | Підходить для | На що звернути увагу |
|---|---|---|
| Excel «Отримати дані → З PDF» (Excel for 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). Після цього застосовуються ті самі правила, але кожну розпізнану цифру варто перевірити.
Що робити, якщо в рахунку немає номера або суми не сходяться?
Таке не слід виправляти непомітно. Рядок лишається таким, як надруковано, і позначається для рішення людиною.
Чи виходять рахунки з мого комп'ютера?
Зі скриптом — ні: він працює там, де лежать ваші файли. З онлайн-конвертером перевірте, куди надсилаються файли та де зберігаються — рахунки містять дані клієнтів.