feat(etl): нормализация на Gemini-эмбеддингах (API), Vision подключён
- эмбеддинги переведены с локального torch на Gemini API (лёгкий контейнер) GeminiEmbedder: gemini-embedding-001, 768d, RETRIEVAL query/document - фильтр настоящих названий: коды/числа не уходят в сопоставление - порог косинуса 0.70 → ~73% автонормализации (цель ТЗ ≥70%), остальное в unmatched - Vision (gemini-2.5-flash, новый SDK) подключён в диспетчер для скан/нулевых PDF; проверено: Клиника 5 — 34 чистые позиции со страницы - зависимости: убран torch/sentence-transformers, добавлен google-genai+numpy Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -25,6 +25,7 @@ from etl.extractors.common import ( # noqa: E402
|
||||
classify_price_tier,
|
||||
clean,
|
||||
find_header_row,
|
||||
is_real_name,
|
||||
looks_like_code,
|
||||
parse_price,
|
||||
)
|
||||
@@ -157,8 +158,8 @@ def extract_rows_from_grid(grid: Grid) -> list[RawRow]:
|
||||
continue
|
||||
|
||||
name = r[name_col] if name_col < len(r) else ""
|
||||
if not name or not prices:
|
||||
continue # без названия или без цены это не позиция прайса
|
||||
if not prices or not is_real_name(name):
|
||||
continue # не позиция: нет цены либо в «названии» код/число, а не услуга
|
||||
|
||||
rows.append(
|
||||
RawRow(
|
||||
|
||||
Reference in New Issue
Block a user