Files
drhider/History/code-fixes/2026-08-20-v1-v2-implemented.md
T

38 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-08-20 — В1+В2 из ревью Sonnet (v0.0.54)
## В2 — фикс кракозябр имён zip (extractor.py `_decode_name`)
Добавлена попытка decode("utf-8") ПЕРЕД decode("cp866"), с валидацией диапазона:
- результат UTF-8 принимается, только если все символы — ASCII или кириллица (U+0400U+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.