/
Paff
/
declarant
Обзор
Документация
Войти
/
Paff
/
declarant
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
_diag.py
33 строки
2 KB
1pash1985-gif
Unified doc list UI + AI prompt for FORM_A
05 авг 2026, 10:09
05 авг 2026, 10:09
e439f08
Код
Авторство
О чём код?
import sys, os, pdfplumber sys.stdout.reconfigure(encoding='utf-8') os.environ['SKIP_OCR'] = '1' from cert_parser import split_cert_blocks, parse_certificate, _KE_INV_TABLE_LINE, _KE_CERT_NR_LINE, _KE_INVOICE_NR, _CERT_HEADER_PATS path = r'c:\Users\0\Desktop\Задача по логистике\24.07\24.07\333MBK\Sertif Ke 122.pdf' print('=== ПОСТРАНИЧНЫЙ АНАЛИЗ ===') with pdfplumber.open(path) as pdf: print(f'Страниц всего: {len(pdf.pages)}') for i, page in enumerate(pdf.pages): txt = page.extract_text() or '' # Проверяем паттерны matched = [j for j, pat in enumerate(_CERT_HEADER_PATS) if pat.search(txt)] cert_nr = _KE_CERT_NR_LINE.match(txt.strip().split('\n')[0].strip()) if txt.strip() else None inv = _KE_INVOICE_NR.search(txt) if txt else None table = _KE_INV_TABLE_LINE.search(txt) if txt else None print(f'Стр {i+1:2d}: {len(txt.strip()):4d} симв | header_pats={matched} | cert_nr={cert_nr and cert_nr.group(1)} | inv={inv and inv.group(1)} | table={table and table.group(0)[:40]}') print() print('=== split_cert_blocks ===') blocks = split_cert_blocks(path) print(f'Блоков: {len(blocks)}') for i, b in enumerate(blocks): first_line = b.strip().split('\n')[0][:60] if b.strip() else '(empty)' print(f'Блок {i+1}: {len(b.strip())} симв | первая строка: {first_line!r}') print() print('=== parse_certificate items ===') d = parse_certificate(path) print(f'Страна: {d.country}, AWB: {d.awb}, invoices: {d.master_invoices}') for i, it in enumerate(d.items): print(f'Item {i+1}: flower={it.flower} farm={it.farm!r} cert={it.cert_number!r} inv={it.invoice_nr!r} boxes={it.boxes} stems={it.stems}')