Никита-version сейчас интегрируется в production pipeline.

Контекст

Текущий pre-redesign recognition (single recognize_gpt prompt) имеет ограничения:

  • Multi-date / multi-page mixed content — данные смешиваются или теряются
  • Bounding-box validation сложно прикрутить к плоскому output
  • Path-dependence: один промпт делает classification + extraction + medical-context — изменение в одном месте ломает другое

Идея

Промежуточное представление документа как набор fact’ов с position / source / context метаданными. Извлечение fact’ов на одном этапе → агрегация и интерпретация на следующем.

Преимущества:

  • Multi-date естественно: каждый fact несёт дату → агрегация по дате становится прямой операцией
  • Bounding-box: каждый fact несёт координаты → visual review реализуем
  • Modular: можно изменять fact-extraction отдельно от aggregation/interpretation

История

  • Ильдар развивал идею “хранить через текст” как промежуточный variant между OCR и интерпретацией. Васина “SQL-метафора” (Apr 1 daily, [Н6]) — отправная точка для размышления.
  • Прототип Ильдара (BG-1059) на ветке feat/universal-bbox-editor (Mar 29 — Apr 1, 5 коммитов, +3931 строк). Включает: universal fact-based extraction, fact-adapter в Annotate UI, model selection для fact-extraction strategy, bbox strategy + fix display fact’ов. Реализация в apps/benchmark + packages/ocr-core. Сессии разработки: c28bb497 (Apr 9-10).
  • Версия Никиты на ветке feat/image-recognize-to-fhir (active Apr 22-23, 13+ коммитов, ~8125 / -8767 строк изменений). Включает:
    • feat(recognize): unified image-based pipeline with CoT prompt — главный entry point
    • feat(fhir-context): multimodal narrative → FHIR with visual crosscheck + in-project narrative → FHIR conversion в TypeScript
    • Multi-date documents support (per-param test_date, одна DocumentReference на дату)
    • Date-attribution rules + cross-page dedup
    • Two-phase save (preliminary POST → enrich PUT)
    • HEIC converter
  • Apr 21 (session 1d3c504b): ревью Никитиного кода + ребейз ветки Ильдара на staging → feat/fact-extraction-rebase. Конфликтов с fact-extraction кодом не было.
  • Сейчас интегрируется Никитина версия в production pipeline (Артур больше не lead на этой задаче). Adjacent: feat/recognize-models-from-config (Артём, Apr 24) — connected refactor.

Что нужно для production

  • Cutover criteria: что должна fact-based version показать чтобы заменить single-prompt
  • Backward compatibility / migration: что делать с уже-распознанными тестами
  • Bounding-box integration с UI (см. bounding-box-validation — Ильдар’s interface)
  • Multi-date / multi-page test cases — confirmed работают

Open items в Никитиной integration (Apr 22-23 thread, #ai-engineering)

  • PDF→image conversion обязателен — pure PDF не работает в Никитиной pipeline. Все PDFs конвертятся в изображения (Apr 21).
  • narrative-to-fhir portage в packages/analysis-core/src/services/narrative-to-fhir/ — Никита портировал из fhir-services. Save-after-recognize-then-edit pattern (preliminary POST → enrich PUT).
  • Model allocation — full audit + direction в gemini-flash-vs-pro-allocation (active). Кратко: везде Gemini, Flash для extraction (5 prompts), Pro для reasoning (3 prompts), helper-prompts на DEFAULT_MODEL переключаются.
  • parameter_type enum в prompt — Никита обещал заменить старый enum (QUANTITATIVE/QUALITATIVE/…) на FHIR value[x]. Согласовано Apr 21, к Apr 23 Артём взял на себя fix.
  • Перенос промптов в Langfuse — сейчас в файлах для удобства, потом переедут в LF.
  • TypeScript confidence — Никита: “есть сомнения по тайпскрипту”. Apr 21-23 ребейз + тестирование Артёма выявили silent failures (json пустой при ошибках) — поправил на explicit-error.
  • Cross-page deduplication & date-attribution — реализовано в multi-date документах (одна DocumentReference на дату).

Note: Apr 24 Ильдар Slack-thread про “facts → dual rendering” — это другая тема (generation, не recognition). См. health-facts-as-generation-substrate.

Связано

Источники

Источники: 1 2 3 4 5.

Сноски

  1. 2026-04-01 transcript “Портирование LOINC” — Васина SQL-метафора ([Н6]) + multi-date обсуждение ([О4]), accessed 2026-05-17, https://github.com/Realai-plus/meeting-digests/blob/main/data/digest/2026/04/2026-04-01T11%3A07%3A08.000Z_портирование_loinc_01KN4BKJSP8PSGBSN23VFZ25M0.md.

  2. Сессия ildar/c28bb497, 2026-04-09 — `** (Apr 9-10 2026.

  3. Сессия ildar/1d3c504b, 2026-04-21 — `** (Apr 21 2026.

  4. Slack threads (#ai-engineering):

  5. Mar 29 PR #190 (feat/image-recognize-to-fhir): mentioned BG-1059 “Fact-based document extraction: new prompt anyOf schema”, accessed 2026-05-17, https://github.com/Realai-plus/bloodgpt-for-business/pull/190.