решение из ленты заказов

PDF-фактуры — в данные, VAT — в VIES

Автобизнес: машины идут из Европы, и на каждую — фактура в PDF. Немецкая Rechnung, польская faktura, английский invoice — всё вручную перебивается в таблицу, а VAT-номер контрагента «когда-нибудь проверим». Парсер извлекает номер, дату, VIN, сумму и контрагента, а VAT тут же проверяется в официальном реестре VIES Еврокомиссии — с живым статусом, именем и адресом компании из реестра.

До и после

До: фактура как приходит

Три PDF из прогона (документы синтетические — чужие фактуры на витрину не выкладываем, а поля и форматы — как в жизни).

PDF-фактура немецкого автодилера: Rechnung, VIN, USt-IdNr, Endbetrag EUR
invoice-de-autohaus.pdf — Rechnung немецкого автодилера
Что в пачке:
  • Немецкая Rechnung: VIN в строке «Fahrgestellnummer», сумма «18.500,00 EUR» (точка — тысячные!), USt-IdNr. с пробелами, покупатель из Литвы со своим PVM kodas.
  • Польская faktura VAT: NIP UE записан с дефисами «PL 113-245-67-89», сумма «62 400,00 PLN», VIN в строке «Nr nadwozia».
  • Английский invoice с дырами: VIN «to be advised», VAT-номера нет вовсе — проверка, что парсер не выдумывает.
↓  один прогон: разбор + запрос в VIES  ↓

После: поля и статус VAT

Каждое поле привязано к строке-источнику в PDF. Чего в документе нет — честное «не распознано», а не выдуманное значение.

16/18полей извлечено
2честных «нет в PDF»
2VIN, формат верен
3валюты: EUR·PLN·EUR
0выдумано
полеRechnung (DE)faktura VAT (PL)invoice (EN, с дырами)
номер фактурыRE-2026-4711FV/2026/09/0142INV-0937
дата → ISO2026-09-152026-09-222026-09-18
из «18 September 2026»
VINWVWZZZ3CZLE012345
формат верен
WAUZZZ8K9BA123456
формат верен
не распознано — в PDF его нет
сумма18 500,00 EUR62 400,00 PLN9 750,00 EUR
контрагентAutohaus Westfalen GmbHAUTO-HANDEL KOWALSKI Sp. z o.o.Atlantic Motors Ltd
VAT-номерDE811223344
формат DE верен
PL1132456789
формат PL верен
не распознано — в PDF его нет
VIESinvalid номер вымышлен — реестр честно его не знаетinvalid то же: вымышленskipped — проверять нечего

Отчёт разбора — каждое поле со строкой-источником

Фрагмент отчёта по немецкой Rechnung: откуда взято каждое значение.

НомерRE-2026-4711 — строка 4: RECHNUNG Nr. RE-2026-4711
Дата2026-09-15 — строка 5: Rechnungsdatum: 15.09.2026
VINWVWZZZ3CZLE012345 — строка 13: Fahrgestellnummer (VIN): …. Формат верен (17 симв., без I/O/Q); чек-цифра не совпала — и это норма: она обязательна только в США/Канаде
Сумма18500.00 EUR — строка 22: Endbetrag: 18.500,00 EUR — точка распознана как тысячный разделитель, не как десятичная
КонтрагентAutohaus Westfalen GmbH — строка 1 («шапка» документа)
VAT продавцаDE811223344 — строка 3: USt-IdNr.: DE 811 223 344; VAT покупателя LT100004466113 не перепутан с продавцом — лежит отдельным полем

VIES — живой, со всеми его капризами

✅

Валидный номер: ответ реестра как есть

Живой запрос к VIES при сборке этой страницы — известный валидный номер Google Ireland:

IE6388047V → valid
GOOGLE IRELAND LIMITED
3RD FLOOR, GORDON HOUSE,
BARROW STREET, DUBLIN 4
проверено 29.09.2026 11:02 UTC
🚫

Невалидный — тоже честно

Вымышленные номера из наших фикстур реестр не знает — и статус так и показан: invalid. Формат при этом верный, то есть до VIES запрос дошёл. Кривой формат (8 цифр у DE, код «RU») отсекается до сети — статус bad_format, лишних запросов нет.

⏳

VIES висит? Статус «недоступен», а не враньё

VIES славится таймаутами и ответами MS_UNAVAILABLE, когда реестр отдельной страны лёг. Скрипт делает до 3 повторов с паузой, а если сервис так и не ответил — пишет vies_unavailable: проверить позже. «Недоступен» никогда не превращается в «номер плохой».

Как это встраивается

📁

Папка PDF → таблица

Скрипт смотрит за папкой (почтовые вложения, выгрузка из сканера): новый PDF — строка в CSV для Excel и JSON, плюс отчёт «что распознано, что нет» по каждому файлу. Работает на вашей машине или сервере — фактуры никуда не уходят.

CSV с ; и BOM — Excel открывает сразуJSON под интеграции
🧮

В 1С / CRM / учёт

JSON с полями и статусом VIES кладётся в обмен: 1С (загрузка поступлений), Битрикс24/CRM (карточка сделки по VIN), склад. Контрагент с невалидным VAT подсвечивается до оплаты, а не после.

🔍

Сканы — отдельно и честно

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

Деталь, которая решает всё

Ничего не выдумывать

Извлекатели полей любят показывать красивую таблицу без пустых клеток. Откуда значения — вопрос: чего в документе не было, то «дораспозналось». Через месяц в учёте — VIN, которых не существует.

Здесь у каждого поля — строка-источник в PDF. Чего нет — честное «не распознано» в отчёте и пустая клетка в таблице. Недоступный VIES — статус «проверить позже», а не случайный ответ. На вымышленных номерах демо показывает invalid — потому что так отвечает реестр.

Пришлите 2–3 своих фактуры

Пришлите фактуры, как они приходят вам (можно замазать лишнее) — вернём таблицу полей, отчёт разбора по каждой строке и статусы контрагентов в VIES. Под ваши форматы дописывается словарь меток: обычно это день работы.

Разовая пачка PDF → таблица — от 5 000 ₽. Конвейер «папка → таблица/1С» с проверкой VIES — 1–2 дня, от 15 000 ₽.

Прислать фактуры