46 lines
2.3 KiB
Markdown
46 lines
2.3 KiB
Markdown
# v3.0.0 — универсальная архитектура (2026-07-12)
|
|
|
|
Переход на Markdown-пайплайн + универсальное LLM-обнаружение.
|
|
|
|
## Что изменилось
|
|
|
|
### 1. `generators/fallback.py` — новый
|
|
Character-class preserving замена для неизвестных типов сущностей.
|
|
Цифры→цифры, буквы→буквы, спецсимволы→без изменений.
|
|
|
|
### 2. `scanner.py` — универсальный LLM-промпт
|
|
- Убран жёсткий список типов (person, company, address, passport)
|
|
- LLM САМА придумывает тип (snake_case) — person_name, contract_number, employee_id...
|
|
- Если тип не совпадает с известными — fallback-генератор
|
|
- Промпт на английском (LLM точнее)
|
|
|
|
### 3. `extractor.py` — Markdown-пайплайн
|
|
- `docx_to_markdown()`: DOCX → MD (Heading → #, Bold → **, таблицы → |...|)
|
|
- `pdf_to_markdown()`: PDF → MD (текст + таблицы, без форматирования)
|
|
- `extract_text()` возвращает только str (без docx-объектов)
|
|
- Удалён `convert_pdfs_to_docx()` (PDF → MD напрямую)
|
|
|
|
### 4. `replacer.py` — упрощён
|
|
- Удалён `replace_in_text()` (заменён на `apply_replacements()` + `.encode()`)
|
|
- Оставлен `replace_in_docx()` для будущего DOCX-выхода
|
|
|
|
### 5. `obfuscator.py` — новый пайплайн
|
|
- Pass 1: extract MD → scan_regex + scan_llm_ner
|
|
- Pass 2: apply_replacements к MD → .md файлы
|
|
- Нет docx-объектов, нет convert_pdfs_to_docx
|
|
|
|
## Коммиты
|
|
|
|
- `579f9c8` — generators: fallback.py
|
|
- `2ceeb05` — scanner.py: универсальный промпт
|
|
- `af2f2a9` — extractor.py: MD + obfuscator.py: новый пайплайн
|
|
- `f5427b0` — replacer.py: удалён replace_in_text
|
|
- `2a2cc14` — v3.0.0
|
|
|
|
## Плюсы
|
|
|
|
- LLM точнее (нет XML-шума, только Markdown)
|
|
- Новые типы сущностей — без правки кода
|
|
- Код проще: -120 строк, -1 функция, -1 модуль (convert_pdfs_to_docx)
|
|
- Единый внутренний формат (Markdown)
|