Нормализатор OCR: при конфликте label и единодушных кодов строк тип документа — по кодам (#30) #31
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/30-type-by-codes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Закрывает #30.
Что было
ИС Сканирование вернула ОФР ООО «Нижегородские нивы» (job
f37d677c-…) сlabel.form_name = "Бухгалтерский баланс"при 23 строках с кодами 2110…2910. По правилу спеки «label и коды разошлись → тип по label» документ ушёл какBALANCEс предупреждением иneeds_check; аналитику пришлось бы менять тип вручную.Что стало
1xxxили все2xxx) и противоречат сопоставленномуlabel→ тип по кодам, предупреждениетип по label (<label>) не совпал с кодами: взят <тип>, статусneeds_check(критерий D-6 «тип совпал с label» не менялся).label, предупреждениетип по кодам (<тип>) не совпал с label (<label>).labelне сопоставлен → коды по большинству (без изменений).header.form_nameостаётся текстомlabelкак распознан (первичка не мутируется).Код:
rows.table_type_by_unanimous_codes,document._resolve_type. Спекаopenspec/specs/image-recognition-gateway/spec.md(правилоdocument_type, два новых сценария), README (таблица предупреждений), CLAUDE.md сервиса.Проверка
make check-full: ruff/mypy чисто, 1020 unit + 11 integration passed, docker-build ок. Golden-эталоны fixtures не затронуты (вaep_*label и коды согласны).Rulings I made
needs_check).openspec/specs/правится прямо в PR, без OpenSpec change.header.form_nameне подменяется на тип по кодам — это распознанный текст ИС.🤖 Generated with Claude Code