38 lines
2.6 KiB
Markdown
38 lines
2.6 KiB
Markdown
# 2026-08-20 — В1+В2 из ревью Sonnet (v0.0.54)
|
||
|
||
## В2 — фикс кракозябр имён zip (extractor.py `_decode_name`)
|
||
Добавлена попытка decode("utf-8") ПЕРЕД decode("cp866"), с валидацией диапазона:
|
||
- результат UTF-8 принимается, только если все символы — ASCII или кириллица (U+0400–U+04FF)
|
||
(отсекает случайную коллизию CP866→UTF-8, напр. «Т»+«г» = U+04A3);
|
||
- при ошибке или выходе из диапазона — фоллбэк decode("cp866") (реальные 1С).
|
||
|
||
Проверено:
|
||
- CP866-зип (zip_subfolders_cp866.zip) → имена корректны (1_Металлургия.pdf…)
|
||
- UTF-8 с флагом (zip_subfolders_utf8.zip) → корректны
|
||
- test_zip 28/28 OK
|
||
|
||
## В1 — фильтр перед extract_tables() (extractor.py `pdf_to_markdown`)
|
||
Добавлен: `if page.lines or page.curves or page.rects:` перед `extract_tables()`.
|
||
Задумывалось как ускорение сканов (extract_tables на страницах без линий впустую).
|
||
|
||
### ⚠️ ФАКТ замера (опровергает гипотезу Sonnet)
|
||
На Spartan10Manual.pdf (14.8 МБ, 619 стр):
|
||
- extract_text суммарно 64.4с (104мс/стр) — УЗКОЕ МЕСТО
|
||
- extract_tables суммарно 0.2с (0мс/стр) — ничтожно
|
||
- на 272 страницах без линий extract_tables суммарно 0.0с — почти мгновенно
|
||
|
||
ВЫВОД: фильтр В1 НЕ даёт ускорения (extract_tables и так дешёвый). Реальное узкое
|
||
место — extract_text (pdfminer). Фильтр оставлен как безопасная защита (таблицы
|
||
не теряет: на 0144-03-2023_отчет об оценке.pdf 94=94 таблицы, потеряно страниц 0),
|
||
но эффект ускорения ≈ 0.
|
||
|
||
### Реальный путь ускорения (отложено)
|
||
Узкое место — extract_text (104мс/стр × 619 стр = 64с). Ускорение только через:
|
||
- распараллеливание extract_text по страницам/файлам (ProcessPool) — отложено,
|
||
требует замера рисков (fork/память, CPU=2);
|
||
- или смену извлечения текста без потери таблиц (риск: таблицы критичны).
|
||
|
||
## Тесты
|
||
Все 106 тестов OK (test_zip 28, test_extractor 15, test_builder 20, test_replacer 10,
|
||
test_scanner 20, test_upload 13). VERSION 0.0.54.
|