I-1: лист с 1–2 кодами после листа формы — продолжение (min_codes_continuation в словаре). M-10: тип формы маркера продолжения запрещает присоединение к документу иного типа. I-2: одиночный месяц не задаёт границы при дате на число/квартале (not_single_month). I-3: название строки из ближайшей текстовой ячейки левее кодов, пустое имя без confidence. M-5: units_thousands и okud_code в словаре, без type: ignore в detect.py. M-8: строка нумерации и нули не считаются строкой без кода с суммами. M-11: предупреждение о дробных значениях — одно на документ. T13.5: _upper_header_row возвращает верхнюю строку при склейке хотя бы одной колонки. M-6/M-7/T15.1/T15.2: остатки statement_markers, описание fractional_share_percent, README, тест воркера. Refs #14 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
96 lines
4.5 KiB
YAML
96 lines
4.5 KiB
YAML
# Словарь форм ББ/ОФР (05-domain-rules.md §12): заголовки форм и ОКУД, маркер продолжения, подписи колонок, метки шапки.
|
||
# Правила записи — как в osv_headers.yaml: паттерн ищется в НОРМАЛИЗОВАННОМ тексте (нижний регистр, «е» вместо «ё»,
|
||
# дефисы/тире/переносы -> пробел), без учёта регистра; новый синоним = строка в YAML.
|
||
|
||
# Заголовок формы -> тип документа. Титул «Бухгалтерская отчетность» (НПЗ) типом не является и здесь не перечислен.
|
||
form_titles:
|
||
BALANCE:
|
||
- 'бухгалтерский\s+баланс'
|
||
INCOME:
|
||
- 'отчет\s+о\s+финансовых\s+результатах'
|
||
- 'отчет\s+о\s+прибылях\s+и\s+убытках'
|
||
DISCLOSURE:
|
||
- 'пояснени\w*\s+к\s+бухгалтерскому\s+балансу'
|
||
- '^расшифровк'
|
||
- 'отчет\s+об\s+изменениях\s+капитала'
|
||
- 'отчет\s+о\s+движении\s+денежных\s+средств'
|
||
- 'отчет\s+о\s+целевом\s+использовании'
|
||
|
||
# Код ОКУД -> тип (ячейка «Форма по ОКУД 0710001» или сам код). Прочие формы 0710xxx — расшифровки (design D-3, решение №2)
|
||
okud:
|
||
BALANCE:
|
||
- '\b0710001\b'
|
||
INCOME:
|
||
- '\b0710002\b'
|
||
DISCLOSURE:
|
||
- '\b07100(0(3|4|5|6|7|8|9)|(1|2|3|4|5|6|7|8|9)\d)\b'
|
||
|
||
# Сам код ОКУД формы внутри ячейки («Форма по ОКУД 0710001» -> «0710001»)
|
||
okud_code: '0710\d{3}'
|
||
|
||
# Единицы измерения в тысячах: «тыс. руб.», «в тыс. рублей» (для предупреждения о дробных значениях)
|
||
units_thousands: 'тыс'
|
||
|
||
# Маркер страницы-продолжения в 1С-выгрузке: «Форма 0710001 с.2»
|
||
continuation:
|
||
- '\bформа\s+0710\d{3}\s+с\.?\s*\d+'
|
||
|
||
# Подписи колонок заголовка таблицы: ячейка целиком
|
||
code_caption:
|
||
- '^код(ы)?$'
|
||
explanations_caption:
|
||
- '^пояснени'
|
||
# Строка нумерации колонок под шапкой («1 | 2 | 3 | 4 | 5»): каждая непустая ячейка — одно-двузначное число
|
||
column_numbering: '^\d{1,2}$'
|
||
|
||
# Метки шапки документа (значение — правее в той же строке либо в следующей строке)
|
||
labels:
|
||
organization:
|
||
- '^организация\b'
|
||
inn:
|
||
- '^инн\b'
|
||
- 'идентификационный\s+номер\s+налогоплательщика'
|
||
okpo:
|
||
- 'по\s+окпо'
|
||
okopf:
|
||
- 'по\s+окопф\b(?!\s*/)'
|
||
okfs:
|
||
- 'по\s+окфс'
|
||
okopf_okfs:
|
||
- 'по\s+окопф\s*/\s*окфс'
|
||
okei:
|
||
- 'по\s+океи'
|
||
units:
|
||
- 'единица\s+измерения'
|
||
address:
|
||
- 'местонахождение\s*\(адрес\)'
|
||
- 'адрес\s+в\s+пределах\s+места\s+нахождения'
|
||
- '^адрес\b'
|
||
date:
|
||
- '^(отчетная\s+)?дата\b'
|
||
|
||
# Строки блока аудитора: ИНН ниже этой метки — ИНН аудитора, не организации
|
||
auditor:
|
||
- 'аудитор'
|
||
|
||
# Признак, что строка содержит название организации (для имени над меткой «Организация», НПЗ)
|
||
legal_form:
|
||
- '\b(ооо|ао|пао|зао|оао|нао|ип|гуп|муп|фгуп)\b'
|
||
- '"'
|
||
- '«'
|
||
|
||
# Коды строк форм: диапазоны четырёхзначных кодов (пятизначные — по первым четырём цифрам), доля кодов в колонке,
|
||
# минимум кодов, чтобы колонка считалась колонкой кодов
|
||
line_codes:
|
||
ranges:
|
||
BALANCE: [1100, 1799]
|
||
INCOME: [2100, 2999]
|
||
DISCLOSURE: [5000, 5999]
|
||
min_share: 0.6
|
||
min_codes: 3
|
||
# лист, идущий после листа формы: хватает одного кода (лист-продолжение с единственной строкой, напр. 2400 у НПЗ)
|
||
min_codes_continuation: 1
|
||
|
||
# Порог для предупреждения о дробных значениях при единицах в тыс. руб. (процент; 1..100)
|
||
fractional_share_percent: 10
|