OCR-парсер: индексы столбцов по заголовку таблицы (#6) #7
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/6-ocr-header-columns"
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?
Closes #6
Что сделано
api/src/core/PDFWorker/utils.py: индексы столбцов больше не захардкожены (0 — наименование, 1 — код, 2+ — значения).Заголовок найден
ColumnLayout:code_idx— ячейка «Код»;label_idx— ячейка с «наименование», иначе ближайшая непустая слева от кода;value_idxs— столбцы правее кода, в заголовке которых есть год или начало «на»/«за». Столбцы с пустым/мусорным заголовком (полоса скана) игнорируются.Заголовок не первый (встречается в дальнейших строках)
ordinal = min(row_index разобранных строк) - 1(сервис сортирует поordinal, фронтенд вставляет секцию «АКТИВ» после строки с кодом «Код»).Заголовка нет
codes_mapping);is_recognized=False.logger.warning, остальной файл обрабатывается.Общее
fin_stat_serviceи фронтенда сохранён.is_recognized=False, столбцы не съезжают._classify_rowи_resolve_table_typeработают по раскладке.Проверка
Автотестов нет (по решению человека, см. R-1). Проверено одноразовым скриптом (вне репозитория) на данных из реального ответа OCR — 23/23:
Уже сохранённые в БД значения остаются с сырыми column_index — миграции нет; UI сортирует по column_index, поэтому отображение не ломается.
Rulings I made
logger.warning, остальной файл обрабатывается. Если пропущены все таблицы —db_metaпуст иPDFTempPollerпомечает job ошибкой, как и раньше.len(cells) < 3сValueErrorна весь файл — она охраняла жёсткие позиции; теперь строка без ячейки кода просто пропускается.codes_mapping, а не по любому 4-значному числу — чтобы годы в титульных строках не принимались за коды.Наблюдения
.boundedотсутствует в.gitignoreрепозитория — исключён локально через.git/info/exclude(вместе с.codegraph/).Deferred
label == "Баланс"в_classify_rowне срабатывает — OCR отдаётБАЛАНС/БАЛАНС, row_kindBALANCEне присваивается никогда._TABLE_TYPE_MAPне используется, хотя тип таблицы доступен напрямую изtable.label.form_name.🤖 Generated with Claude Code
Pull request closed