fix(normalize): confidence-aware guard переобобщения → честные 73,7%

Прежний guard снимал эмбеддинг-матч, если услуга собрала в клинике больше
8 разных названий. Это наказывало легитимные частотные услуги — одна «МРТ
головного мозга» реально встречается под десятками протоколов (с контрастом,
3Тл, предоперационная), и все они верно нормализуются к ней. Процент падал
до 69%.

Теперь снимаем только НЕуверенные матчи (<0,72) внутри концентрированных
групп: так отсекается сиблинг-захват (напр. «Магний Mg (моча)» подтягивал
Никель/Свинец/Ртуть в моче на пороге 0,70), а верные вариации остаются
сопоставленными. Признак ошибки — низкая уверенность, а не число названий.

Итог на тестовом архиве: 16 140 позиций извлечено, 73,7% нормализовано
автоматически (цель ТЗ ≥70%), 273 неуверенных матча — в очередь верификации.
Цифры выровнены в README, ARCHITECTURE, питч-деках, PPTX, quality_report.

Плюс полировка: извлечение города клиники, регистронезависимый поиск.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-27 19:42:21 +05:00
parent 1a4cc039b2
commit dbe36d3323
10 changed files with 120 additions and 28 deletions
Binary file not shown.
+3 -3
View File
@@ -73,8 +73,8 @@
<section>
<h2>Охват вырос за день</h2>
<div class="kpi">
<div class="card"><span class="num">15 086</span><span class="lbl">позиций извлечено (день 1: 8 871)</span></div>
<div class="card"><span class="num">76,1%</span><span class="lbl">нормализовано авто (цель ≥70%)</span></div>
<div class="card"><span class="num">16 140</span><span class="lbl">позиций извлечено (день 1: 8 871)</span></div>
<div class="card"><span class="num">73,7%</span><span class="lbl">нормализовано авто (цель ≥70%)</span></div>
<div class="card"><span class="num">10</span><span class="lbl">документов обработано</span></div>
<div class="card"><span class="num">live</span><span class="lbl">всё на домене, обновлено</span></div>
</div>
@@ -121,7 +121,7 @@
<tr><td>Клиника 3 — PDF, битый текстовый слой</td><td class="pct">151</td><td class="pct up">788</td><td>Gemini Vision поверх битого текста</td></tr>
<tr><td>Клиника 4 — PDF, мультитариф</td><td class="pct">137</td><td class="pct up">437</td><td>Gemini Vision</td></tr>
</table>
<p class="lead" style="margin-top:.7rem">Vision включается автоматически, когда нативный разбор пуст или подозрительно беден — большие документы не жжём зря. Итог: <b>8 871 → 15 086</b> позиций за два дня.</p>
<p class="lead" style="margin-top:.7rem">Vision включается автоматически, когда нативный разбор пуст или подозрительно беден — большие документы не жжём зря. Итог: <b>8 871 → 16 140</b> позиций за два дня.</p>
</section>
<!-- 7 -->
+2 -2
View File
@@ -102,8 +102,8 @@
<section>
<h2>Что уже работает</h2>
<div class="kpi">
<div class="card"><span class="num">15 086</span><span class="lbl">позиции извлечено</span></div>
<div class="card"><span class="num">76,1%</span><span class="lbl">нормализовано авто (цель ≥70%)</span></div>
<div class="card"><span class="num">16 140</span><span class="lbl">позиции извлечено</span></div>
<div class="card"><span class="num">73,7%</span><span class="lbl">нормализовано авто (цель ≥70%)</span></div>
<div class="card"><span class="num">8 / 10</span><span class="lbl">клиник / прайсов</span></div>
<div class="card"><span class="num">live</span><span class="lbl">развёрнуто на домене</span></div>
</div>