claim-ocr: бандлы извлечения полей страховых документов

Это репозиторий бандлов claim-ocr версий v1, v2 и v3 из учебного проекта «После удара» (капстоун курса «AI - Attractor», трек B). Автор: Akana92. Код и стенд проекта лежат в репозитории https://github.com/Akana92/after-impact.

Что это такое

claim-ocr не содержит дообученных весов. Бандл описывает, как извлекать поля из страховых документов с помощью готовой модели Qwen3-VL, которая запускается через Ollama: в него входят спецификация, семь файлов промпта, пять JSON-схем ответа и параметры вызова. Документы: полис, отчёт оценщика, акт о заливе, документ на квартиру, а также фото повреждений. Параметры вызова фиксированы: температура 0, зерно 42, структурный вывод через принудительный инструмент или json_schema.

Состав каждой версии:

  • bundle.yaml: спецификация бандла;
  • prompt/: каталог промпта claim-extract (семь файлов);
  • schemas/: пять схем claim-ocr-schema@2;
  • run_passport.json: версия, bundle_sha256, базовые модели;
  • gate.json: результат гейта качества стенда;
  • metrics.json: сводка оценки (метрики и счётчики по категориям, без текстов кейсов).

bundle_sha256 считается как sha256 от отсортированных строк «sha256 файла и относительный путь» по файлам bundle.yaml, prompt/ и schemas/. Файлы сведений (run_passport.json, gate.json, metrics.json) в него не входят.

Версия Промпт Длинная сторона документа, px bundle_sha256
v1 claim-extract@v12 1024 f9fb381a1ed15d800b972a0303f9a615cfcf6393bbd84f714636f05228a8db88
v2 claim-extract@v13 1024 e8cc964619bdd651902eaeb7afabd94bac5aae680fb372440c61cdf4e0e66763
v3 claim-extract@v13 768 1a0fbdb86be087be337f9e48999dcb123c8eef8c57088c8344edc2fc549ff60d

v1 отличается от v2 только промптом (claim-extract@v12 вместо @v13), v3 повторяет v2, но уменьшает документ до 768 px по длинной стороне. Теги ревизий v1, v2, v3 указывают на состояние репозитория, в котором версия появилась впервые.

Базовые модели и лицензия

Бандл использует модели Qwen3-VL-8B-Instruct (зрение, локально через Ollama qwen3-vl:8b-instruct) и Qwen3Guard-Gen-4B (страж входа и выхода). Веса в репозиторий не включены, они остаются в публичных репозиториях Qwen. Обе модели распространяются под лицензией Apache-2.0 (поле license в карточках Qwen/Qwen3-VL-8B-Instruct и Qwen/Qwen3Guard-Gen-4B на Hugging Face), поэтому бандл, состоящий из промптов, схем и спецификации, выложен под той же лицензией Apache-2.0. Облачный запасной вариант в спецификации (gpt-4o-mini) в репозиторий не входит и подчиняется условиям его поставщика.

Как использовать

Бандлы рассчитаны на проект https://github.com/Akana92/after-impact. Скачайте нужную версию и соберите стенд проекта по инструкции из его README. Спецификация загружается сервисом worker без перезапуска, а промоут и откат версий выполняются в реестре MLflow стенда. Отдельно от проекта бандл полезен как набор готовых промптов и схем: схемы ответа лежат в schemas/, промпты в prompt/.

Метрики гейта

Прогон выполнен на стенде проекта по записанным ответам модели (кассеты), на 58 вымышленных кейсах золотого набора. Пороги заданы в eval/thresholds.yaml проекта; для метрик акта о заливе и документа на квартиру кейсов меньше десяти, поэтому порог ужесточён до 1.00 и допустимая регрессия не применяется. Задержки (e2e_p95_s, ttft_p95_s) на кассетах не измеряются.

Гейт красный у всех трёх версий, и это показано честно: пороги не менялись.

Метрика Порог v1 v2 v3
schema_valid_rate >= 1.00 1.00 1.00 1.00
recall_policy_id >= 0.95 1.00 1.00 1.00
recall_amount >= 0.90 1.00 1.00 1.00
voice_amount_accuracy >= 0.90 1.00 1.00 1.00
redteam_blocked >= 10 из 10 10.00 10.00 10.00
payout_leak <= 0 0.00 0.00 0.00
injection_flag_recall >= 1.00 0.67 КРАСНЫЙ 0.83 КРАСНЫЙ 0.67 КРАСНЫЙ
recall_act_date >= 1.00 1.00 1.00 1.00
recall_act_address >= 1.00 0.80 КРАСНЫЙ 0.80 КРАСНЫЙ 0.80 КРАСНЫЙ
recall_act_source >= 1.00 0.20 КРАСНЫЙ 1.00 1.00
recall_ownership_address >= 1.00 1.00 1.00 1.00
golden_cases_min >= 20 58.00 58.00 58.00
multimodal_cases_min >= 5 58.00 58.00 58.00
e2e_p95_s <= 20.00 не измерялось не измерялось не измерялось
ttft_p95_s <= 3.00 не измерялось не измерялось не измерялось

Причины красных строк у v2 записаны в проекте. Адрес в акте о заливе (recall_act_address 0.80) расходится в одном кейсе из пяти: модель читает «Мангылик» вместо «Мангилик». Флаг посторонней надписи в документе (injection_flag_recall 0.83) не срабатывает на кейсе с надписью шрифтом 6 pt, повёрнутой внутри печати. У v1 и v3 флаг пропускается чаще (0.67), а у v1 дополнительно красный источник залива (recall_act_source 0.20), который v2 и v3 исправляют новым промптом. Версия v3 хуже v2 по своим метрикам из-за уменьшения документа.

Ограничения

  • Оценка идёт по кассетам и на малом наборе: акт о заливе содержит 6 кейсов, документ на квартиру 3. Выводы о качестве на реальных документах из неё делать нельзя.
  • Задержки и стоимость на этом прогоне не измерены.
  • Язык документов: русский.
  • Бандл не принимает решений о выплате: он только извлекает поля. Решение остаётся за юристом проекта.
  • Красный гейт v2 принят осознанно; повышение длинной стороны документа до 1280 px и отдельный кадр печати отложены на время после защиты.

Данные

Все документы, фото и дела проекта вымышленные, это демонстрационные данные. Персональных данных и данных реальных клиентов в репозитории нет: сводка metrics.json содержит только числа и счётчики.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for AkanaYB/after-impact-claim-ocr

Finetuned
(679)
this model