From 95862078577e34712f36e3eb716973ca80d097e6 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Tue, 6 Oct 2026 21:58:34 +0400 Subject: [PATCH] =?UTF-8?q?test(golden):=20=D1=84=D0=B8=D0=BD=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=B0=D1=8F=20=D0=B2=D0=BE=D0=BB=D0=BD=D0=B0=20?= =?UTF-8?q?=E2=80=94=20line=5Fname,=20=D0=BB=D0=B8=D1=81=D1=82=202400=20?= =?UTF-8?q?=D0=9D=D0=9F=D0=97,=20=D0=BF=D1=80=D0=B5=D0=B4=D1=83=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20(arm-tabular?= =?UTF-8?q?-parser#14)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Синтетика st07 (лист-продолжение с одной строкой 2400), снимки форм: названия строк, 2400 у НПЗ, предупреждение о дробных одно на документ, строки с суммами без нулей и нумерации. Снимки ОСВ не менялись. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3 --- .../2025-Q3/1_Форма1_бух_09.json | 1 - .../2025-Q3/1_Форма2_бух_09.json | 4 +- ...·а Январь - Сентябрь 2025 г. (НОВОРОССИЙСКИЙ ПРОКАТНЫЙ ЗАВОД).json | 76 +++-- .../st07_single_code_continuation.json | 267 ++++++++++++++++++ .../templates/ОФР_после 01.01.2025.json | 2 +- .../unagrande-co/2024-FY/Б.Б Лист 1.json | 1 - .../unagrande-co/2024-FY/Б.Б. Лист 2.json | 4 +- .../unagrande-co/2024-FY/ОФР. Лист 1.json | 10 +- .../unagrande-group/2024-FY/ББ. Лист 1 .json | 1 - .../2024-FY/ББ. Лист 2 (2).json | 4 +- .../2025-Q3/ББ. Лист 1 3кв.25.json | 1 - .../2025-Q3/ББ. Лист 2 3кв.25.json | 4 +- .../2025-Q3/ОФР. Лист 1 3кв.25.json | 11 +- statements-xlsx/synthetic/README.md | 3 +- .../st07_single_code_continuation.xlsx | Bin 0 -> 6157 bytes 15 files changed, 339 insertions(+), 50 deletions(-) create mode 100644 golden/expected_statement_parse/synthetic/st07_single_code_continuation.json create mode 100644 statements-xlsx/synthetic/st07_single_code_continuation.xlsx diff --git a/golden/expected_statement_parse/mezheninovskaya/2025-Q3/1_Форма1_бух_09.json b/golden/expected_statement_parse/mezheninovskaya/2025-Q3/1_Форма1_бух_09.json index 9f9ccfb..9032168 100644 --- a/golden/expected_statement_parse/mezheninovskaya/2025-Q3/1_Форма1_бух_09.json +++ b/golden/expected_statement_parse/mezheninovskaya/2025-Q3/1_Форма1_бух_09.json @@ -7,7 +7,6 @@ "metrics": { "rows": 37, "warnings": [ - "sheet=TDSheet строк без кода с суммами пропущено: 1", "sheet=TDSheet значений с дробной частью при единице тыс. руб.: 17 из 105" ] }, diff --git a/golden/expected_statement_parse/mezheninovskaya/2025-Q3/1_Форма2_бух_09.json b/golden/expected_statement_parse/mezheninovskaya/2025-Q3/1_Форма2_бух_09.json index f6a0b33..01f3d3f 100644 --- a/golden/expected_statement_parse/mezheninovskaya/2025-Q3/1_Форма2_бух_09.json +++ b/golden/expected_statement_parse/mezheninovskaya/2025-Q3/1_Форма2_бух_09.json @@ -6,9 +6,7 @@ "status": "done", "metrics": { "rows": 23, - "warnings": [ - "sheet=TDSheet строк без кода с суммами пропущено: 1" - ] + "warnings": [] }, "documents": [ { diff --git a/golden/expected_statement_parse/npz/2025-Q3/Бухгалтерская отчетность за Январь - Сентябрь 2025 г. (НОВОРОССИЙСКИЙ ПРОКАТНЫЙ ЗАВОД).json b/golden/expected_statement_parse/npz/2025-Q3/Бухгалтерская отчетность за Январь - Сентябрь 2025 г. (НОВОРОССИЙСКИЙ ПРОКАТНЫЙ ЗАВОД).json index bad35de..fc6f124 100644 --- a/golden/expected_statement_parse/npz/2025-Q3/Бухгалтерская отчетность за Январь - Сентябрь 2025 г. (НОВОРОССИЙСКИЙ ПРОКАТНЫЙ ЗАВОД).json +++ b/golden/expected_statement_parse/npz/2025-Q3/Бухгалтерская отчетность за Январь - Сентябрь 2025 г. (НОВОРОССИЙСКИЙ ПРОКАТНЫЙ ЗАВОД).json @@ -5,18 +5,11 @@ }, "status": "needs_check", "metrics": { - "rows": 174, + "rows": 175, "warnings": [ - "sheet=Отчет о финансовых результата_2 skipped: нет признаков ОСВ или формы", "sheet=Бухгалтерский баланс. Лист 1 строк без кода с суммами пропущено: 1", - "sheet=Бухгалтерский баланс. Лист 1 значений с дробной частью при единице тыс. руб.: 22 из 54", - "sheet=Бухгалтерский баланс. Лист 2 значений с дробной частью при единице тыс. руб.: 36 из 129", "sheet=Бухгалтерский баланс. Лист 3 строк без кода с суммами пропущено: 1", - "sheet=Бухгалтерский баланс. Лист 3 значений с дробной частью при единице тыс. руб.: 20 из 54", - "sheet=Бухгалтерский баланс. Лист 4 значений с дробной частью при единице тыс. руб.: 22 из 111", - "sheet=Бухгалтерский баланс. Лист 5 значений с дробной частью при единице тыс. руб.: 27 из 48", - "sheet=Отчет о финансовых результата строк без кода с суммами пропущено: 2", - "sheet=Отчет о финансовых результата значений с дробной частью при единице тыс. руб.: 28 из 68", + "sheet=Бухгалтерский баланс. Лист 1 значений с дробной частью при единице тыс. руб.: 127 из 396", "sheet=Бухгалтерский баланс. Лист 1 соотношение «1600 = 1700» нарушено (колонка 0): 17411081553.82 ≠ 17411081555.76", "sheet=Бухгалтерский баланс. Лист 1 мягкое соотношение «1150 = 11501 + 11502 + 11503 + 11504 + 11505 + 11509» нарушено (колонка 0): 10741981390.00 ≠ 8223509632.08", "sheet=Бухгалтерский баланс. Лист 1 мягкое соотношение «1230 = 12301 + 12302 + 12303 + 12304 + 12305 + 12306 + 12307 + 12308 + 12309» нарушено (колонка 0): 4435145361.60 ≠ 4330982154.64", @@ -32,15 +25,18 @@ "sheet=Бухгалтерский баланс. Лист 1 мягкое соотношение «1230 = 12301 + 12302 + 12303 + 12304 + 12305 + 12306 + 12307 + 12308 + 12309» нарушено (колонка 2): 4421092726.00 ≠ 4287107964.69", "sheet=Бухгалтерский баланс. Лист 1 мягкое соотношение «1410 = 14101 + 14102 + 14103 + 14104 + 14105» нарушено (колонка 2): 4103939756.00 ≠ 4111248501.57", "sheet=Бухгалтерский баланс. Лист 1 мягкое соотношение «1510 = 15101 + 15102 + 15103 + 15104 + 15105 + 15106 + 15107 + 15108 + 15109» нарушено (колонка 2): 2491069038.00 ≠ 2483760292.60", + "sheet=Отчет о финансовых результата значений с дробной частью при единице тыс. руб.: 28 из 86", "sheet=Отчет о финансовых результата соотношение «2100 = 2110 - 2120» нарушено (колонка 0): -71141000.00 ≠ -71140867.82", "sheet=Отчет о финансовых результата соотношение «2200 = 2100 - 2210 - 2220» нарушено (колонка 0): -740350000.00 ≠ -740350182.50", "sheet=Отчет о финансовых результата соотношение «2300 = 2200 + 2310 + 2320 - 2330 + 2340 - 2350» нарушено (колонка 0): -2707350000.00 ≠ -2707350001.85", - "sheet=Отчет о финансовых результата мягкое соотношение «2500 = 2400 + 2510 + 2520 + 2530» нарушено (колонка 0): -2235788000.00 ≠ 0.00", + "sheet=Отчет о финансовых результата мягкое соотношение «2400 = 2300 - 2410 + 2420» нарушено (колонка 0): -2235788000.00 ≠ -3178911817.12", + "sheet=Отчет о финансовых результата мягкое соотношение «2400 = 2300 + 2410 + 2460» нарушено (колонка 0): -2235788000.00 ≠ -2235788182.88", "sheet=Отчет о финансовых результата соотношение «2100 = 2110 - 2120» нарушено (колонка 1): 1976818000.00 ≠ 1976817590.17", "sheet=Отчет о финансовых результата соотношение «2200 = 2100 - 2210 - 2220» нарушено (колонка 1): 1138368000.00 ≠ 1138367802.73", "sheet=Отчет о финансовых результата соотношение «2300 = 2200 + 2310 + 2320 - 2330 + 2340 - 2350» нарушено (колонка 1): 327724000.00 ≠ 327723647.61", - "sheet=Отчет о финансовых результата мягкое соотношение «2410 = 2411 + 2412» нарушено (колонка 1): -85933029.44 ≠ 16781834.97", - "sheet=Отчет о финансовых результата мягкое соотношение «2500 = 2400 + 2510 + 2520 + 2530» нарушено (колонка 1): 240044000.00 ≠ 0.00" + "sheet=Отчет о финансовых результата мягкое соотношение «2400 = 2300 - 2410 + 2420» нарушено (колонка 1): 240044000.00 ≠ 241790970.56", + "sheet=Отчет о финансовых результата мягкое соотношение «2400 = 2300 + 2410 + 2460» нарушено (колонка 1): 240044000.00 ≠ 240044114.56", + "sheet=Отчет о финансовых результата мягкое соотношение «2410 = 2411 + 2412» нарушено (колонка 1): -85933029.44 ≠ 16781834.97" ] }, "documents": [ @@ -3613,7 +3609,7 @@ }, { "document_type": "INCOME", - "locator": "sheet:Отчет о финансовых результата,Отчет о финансовых результата_3", + "locator": "sheet:Отчет о финансовых результата,Отчет о финансовых результата_2,Отчет о финансовых результата_3", "header": { "form_name": "Отчет о финансовых результатах", "organization_name": "ООО \"НОВОРОССИЙСКИЙ ПРОКАТНЫЙ ЗАВОД\"", @@ -4322,6 +4318,26 @@ } ] }, + { + "line_code": "2400", + "line_code_confidence": 100.0, + "line_name": "Чистая прибыль (убыток)", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "amount": "-2235788000.00", + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "amount": "240044000.00", + "confidence": 100.0, + "is_recognized": true + } + ] + }, { "line_code": "2510", "line_code_confidence": 100.0, @@ -4345,7 +4361,7 @@ { "line_code": "25101", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Результат от переоценки основных средств, не включаемый в чистую прибыль (убыток) периода", "line_name_confidence": 100.0, "values": [ { @@ -4365,7 +4381,7 @@ { "line_code": "25102", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Результат от переоценки нематериальных активов, не включаемый в чистую прибыль (убыток) периода", "line_name_confidence": 100.0, "values": [ { @@ -4425,7 +4441,7 @@ { "line_code": "2500", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Совокупный финансовый результат", "line_name_confidence": 100.0, "values": [ { @@ -4525,21 +4541,33 @@ "soft_relations_failed": [ { "column_index": 0, - "relation": "2500 = 2400 + 2510 + 2520 + 2530", + "relation": "2400 = 2300 - 2410 + 2420", "expected": "-2235788000.00", - "actual": "0.00" + "actual": "-3178911817.12" + }, + { + "column_index": 0, + "relation": "2400 = 2300 + 2410 + 2460", + "expected": "-2235788000.00", + "actual": "-2235788182.88" + }, + { + "column_index": 1, + "relation": "2400 = 2300 - 2410 + 2420", + "expected": "240044000.00", + "actual": "241790970.56" + }, + { + "column_index": 1, + "relation": "2400 = 2300 + 2410 + 2460", + "expected": "240044000.00", + "actual": "240044114.56" }, { "column_index": 1, "relation": "2410 = 2411 + 2412", "expected": "-85933029.44", "actual": "16781834.97" - }, - { - "column_index": 1, - "relation": "2500 = 2400 + 2510 + 2520 + 2530", - "expected": "240044000.00", - "actual": "0.00" } ], "duplicate_line_codes": [] diff --git a/golden/expected_statement_parse/synthetic/st07_single_code_continuation.json b/golden/expected_statement_parse/synthetic/st07_single_code_continuation.json new file mode 100644 index 0000000..a6d849a --- /dev/null +++ b/golden/expected_statement_parse/synthetic/st07_single_code_continuation.json @@ -0,0 +1,267 @@ +{ + "schema_version": "1.2", + "service": { + "name": "tabular-parser" + }, + "status": "done", + "metrics": { + "rows": 10, + "warnings": [ + "sheet=ОФР мягкое соотношение «2410 = 2411 + 2412» нарушено (колонка 0): -40.00 ≠ 0", + "sheet=ОФР мягкое соотношение «2410 = 2411 + 2412» нарушено (колонка 1): -40.00 ≠ 0" + ] + }, + "documents": [ + { + "document_type": "INCOME", + "locator": "sheet:ОФР,ОФР_2", + "header": { + "form_name": "Отчет о финансовых результатах", + "organization_name": "ООО \"Тестовая организация\"", + "organization_name_confidence": 100.0, + "inn": "7700000000", + "inn_confidence": 100.0, + "report_date_text": "за 2024 г.", + "report_date": "2024-12-31", + "units": "тыс. руб.", + "okud": "0710002", + "okpo": null, + "okopf": null, + "okfs": null, + "address": null + }, + "columns": [ + { + "column_index": 0, + "label": "За 2024 г.", + "period_date": "2024-12-31" + }, + { + "column_index": 1, + "label": "За 2023 г.", + "period_date": "2023-12-31" + } + ], + "lines": [ + { + "line_code": "2110", + "line_code_confidence": 100.0, + "line_name": "Выручка", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "amount": "1000.00", + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "amount": "900.00", + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2120", + "line_code_confidence": 100.0, + "line_name": "Себестоимость продаж", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "amount": "-600.00", + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "amount": "-500.00", + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2100", + "line_code_confidence": 100.0, + "line_name": "Валовая прибыль (убыток)", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "amount": "400.00", + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "amount": "400.00", + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2210", + "line_code_confidence": 100.0, + "line_name": "Коммерческие расходы", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "amount": "-50.00", + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "amount": "-40.00", + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2220", + "line_code_confidence": 100.0, + "line_name": "Управленческие расходы", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "amount": "-50.00", + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "amount": "-60.00", + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2200", + "line_code_confidence": 100.0, + "line_name": "Прибыль (убыток) от продаж", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "amount": "300.00", + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "amount": "300.00", + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2330", + "line_code_confidence": 100.0, + "line_name": "Проценты к уплате", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "amount": "-100.00", + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "amount": "-100.00", + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2300", + "line_code_confidence": 100.0, + "line_name": "Прибыль (убыток) до налогообложения", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "amount": "200.00", + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "amount": "200.00", + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2410", + "line_code_confidence": 100.0, + "line_name": "Налог на прибыль", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "amount": "-40.00", + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "amount": "-40.00", + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2400", + "line_code_confidence": 100.0, + "line_name": "Чистая прибыль (убыток)", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "amount": "160.00", + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "amount": "160.00", + "confidence": 100.0, + "is_recognized": true + } + ] + } + ], + "checks": { + "relations_failed": [], + "soft_relations_failed": [ + { + "column_index": 0, + "relation": "2410 = 2411 + 2412", + "expected": "-40.00", + "actual": "0" + }, + { + "column_index": 1, + "relation": "2410 = 2411 + 2412", + "expected": "-40.00", + "actual": "0" + } + ], + "duplicate_line_codes": [] + } + } + ] +} diff --git a/golden/expected_statement_parse/templates/ОФР_после 01.01.2025.json b/golden/expected_statement_parse/templates/ОФР_после 01.01.2025.json index aa0693a..ce21e9b 100644 --- a/golden/expected_statement_parse/templates/ОФР_после 01.01.2025.json +++ b/golden/expected_statement_parse/templates/ОФР_после 01.01.2025.json @@ -109,7 +109,7 @@ { "line_code": "2300", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Прибыль (убыток) от продолжающейся деятельности до налогообложения", "line_name_confidence": 100.0, "values": [] }, diff --git a/golden/expected_statement_parse/unagrande-co/2024-FY/Б.Б Лист 1.json b/golden/expected_statement_parse/unagrande-co/2024-FY/Б.Б Лист 1.json index 0cea843..fb1b8f3 100644 --- a/golden/expected_statement_parse/unagrande-co/2024-FY/Б.Б Лист 1.json +++ b/golden/expected_statement_parse/unagrande-co/2024-FY/Б.Б Лист 1.json @@ -7,7 +7,6 @@ "metrics": { "rows": 43, "warnings": [ - "sheet=Лист_1 строк без кода с суммами пропущено: 9", "sheet=Лист_1 значений с дробной частью при единице тыс. руб.: 58 из 129", "sheet=Лист_1 соотношение «1600 = 1700» нарушено (колонка 0): 4307468147.89 ≠ 0", "sheet=Лист_1 мягкое соотношение «1150 = 11501 + 11502 + 11503 + 11504 + 11505 + 11506 + 11507 + 11508 + 11509» нарушено (колонка 0): 2039077663.16 ≠ 552544080.81", diff --git a/golden/expected_statement_parse/unagrande-co/2024-FY/Б.Б. Лист 2.json b/golden/expected_statement_parse/unagrande-co/2024-FY/Б.Б. Лист 2.json index fc210d9..8b78d14 100644 --- a/golden/expected_statement_parse/unagrande-co/2024-FY/Б.Б. Лист 2.json +++ b/golden/expected_statement_parse/unagrande-co/2024-FY/Б.Б. Лист 2.json @@ -455,7 +455,7 @@ { "line_code": "15401", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Оценочные обязательства по вознаграждениям работников", "line_name_confidence": 100.0, "values": [ { @@ -481,7 +481,7 @@ { "line_code": "15402", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Резервы предстоящих расходов прочие", "line_name_confidence": 100.0, "values": [ { diff --git a/golden/expected_statement_parse/unagrande-co/2024-FY/ОФР. Лист 1.json b/golden/expected_statement_parse/unagrande-co/2024-FY/ОФР. Лист 1.json index 2ba3dac..45b3dc0 100644 --- a/golden/expected_statement_parse/unagrande-co/2024-FY/ОФР. Лист 1.json +++ b/golden/expected_statement_parse/unagrande-co/2024-FY/ОФР. Лист 1.json @@ -155,7 +155,7 @@ { "line_code": "2200", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Прибыль (убыток) от продаж", "line_name_confidence": 100.0, "values": [ { @@ -275,7 +275,7 @@ { "line_code": "2300", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Прибыль (убыток) до налогообложения", "line_name_confidence": 100.0, "values": [ { @@ -315,7 +315,7 @@ { "line_code": "2411", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "текущий налог на прибыль", "line_name_confidence": 100.0, "values": [ { @@ -335,7 +335,7 @@ { "line_code": "2412", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "отложенный налог на прибыль", "line_name_confidence": 100.0, "values": [ { @@ -375,7 +375,7 @@ { "line_code": "2400", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Чистая прибыль (убыток)", "line_name_confidence": 100.0, "values": [ { diff --git a/golden/expected_statement_parse/unagrande-group/2024-FY/ББ. Лист 1 .json b/golden/expected_statement_parse/unagrande-group/2024-FY/ББ. Лист 1 .json index a20a6ce..37942ef 100644 --- a/golden/expected_statement_parse/unagrande-group/2024-FY/ББ. Лист 1 .json +++ b/golden/expected_statement_parse/unagrande-group/2024-FY/ББ. Лист 1 .json @@ -7,7 +7,6 @@ "metrics": { "rows": 44, "warnings": [ - "sheet=Лист_1 строк без кода с суммами пропущено: 9", "sheet=Лист_1 значений с дробной частью при единице тыс. руб.: 27 из 132", "sheet=Лист_1 соотношение «1600 = 1700» нарушено (колонка 0): 395796148.43 ≠ 0", "sheet=Лист_1 мягкое соотношение «1150 = 11501 + 11502 + 11503 + 11504 + 11505 + 11506 + 11507 + 11508 + 11509» нарушено (колонка 0): 90000.00 ≠ 0.00", diff --git a/golden/expected_statement_parse/unagrande-group/2024-FY/ББ. Лист 2 (2).json b/golden/expected_statement_parse/unagrande-group/2024-FY/ББ. Лист 2 (2).json index 2522cc1..28b678c 100644 --- a/golden/expected_statement_parse/unagrande-group/2024-FY/ББ. Лист 2 (2).json +++ b/golden/expected_statement_parse/unagrande-group/2024-FY/ББ. Лист 2 (2).json @@ -457,7 +457,7 @@ { "line_code": "15401", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Оценочные обязательства по вознаграждениям работников", "line_name_confidence": 100.0, "values": [ { @@ -483,7 +483,7 @@ { "line_code": "15402", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Резервы предстоящих расходов прочие", "line_name_confidence": 100.0, "values": [ { diff --git a/golden/expected_statement_parse/unagrande-group/2025-Q3/ББ. Лист 1 3кв.25.json b/golden/expected_statement_parse/unagrande-group/2025-Q3/ББ. Лист 1 3кв.25.json index e6b40f9..7eac53f 100644 --- a/golden/expected_statement_parse/unagrande-group/2025-Q3/ББ. Лист 1 3кв.25.json +++ b/golden/expected_statement_parse/unagrande-group/2025-Q3/ББ. Лист 1 3кв.25.json @@ -7,7 +7,6 @@ "metrics": { "rows": 43, "warnings": [ - "sheet=Лист_1 строк без кода с суммами пропущено: 9", "sheet=Лист_1 значений с дробной частью при единице тыс. руб.: 25 из 129", "sheet=Лист_1 соотношение «1600 = 1700» нарушено (колонка 0): 361054099.72 ≠ 0", "sheet=Лист_1 мягкое соотношение «1150 = 11501 + 11502 + 11503 + 11504 + 11505 + 11506 + 11507 + 11508 + 11509» нарушено (колонка 0): 90000.00 ≠ 0.00", diff --git a/golden/expected_statement_parse/unagrande-group/2025-Q3/ББ. Лист 2 3кв.25.json b/golden/expected_statement_parse/unagrande-group/2025-Q3/ББ. Лист 2 3кв.25.json index 5d12b71..2a0034e 100644 --- a/golden/expected_statement_parse/unagrande-group/2025-Q3/ББ. Лист 2 3кв.25.json +++ b/golden/expected_statement_parse/unagrande-group/2025-Q3/ББ. Лист 2 3кв.25.json @@ -457,7 +457,7 @@ { "line_code": "15401", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Оценочные обязательства по вознаграждениям работников", "line_name_confidence": 100.0, "values": [ { @@ -483,7 +483,7 @@ { "line_code": "15402", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Резервы предстоящих расходов прочие", "line_name_confidence": 100.0, "values": [ { diff --git a/golden/expected_statement_parse/unagrande-group/2025-Q3/ОФР. Лист 1 3кв.25.json b/golden/expected_statement_parse/unagrande-group/2025-Q3/ОФР. Лист 1 3кв.25.json index 06d6b61..23a4b3d 100644 --- a/golden/expected_statement_parse/unagrande-group/2025-Q3/ОФР. Лист 1 3кв.25.json +++ b/golden/expected_statement_parse/unagrande-group/2025-Q3/ОФР. Лист 1 3кв.25.json @@ -7,7 +7,6 @@ "metrics": { "rows": 17, "warnings": [ - "sheet=Лист_1 строк без кода с суммами пропущено: 1", "sheet=Лист_1 значений с дробной частью при единице тыс. руб.: 16 из 34", "sheet=Лист_1 соотношение «2100 = 2110 - 2120» нарушено (колонка 0): 392259000.00 ≠ 392258982.50", "sheet=Лист_1 соотношение «2200 = 2100 - 2210 - 2220» нарушено (колонка 0): -1365000.00 ≠ -1364601.56", @@ -157,7 +156,7 @@ { "line_code": "2200", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Прибыль (убыток) от продаж", "line_name_confidence": 100.0, "values": [ { @@ -277,7 +276,7 @@ { "line_code": "2300", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Прибыль (убыток) до налогообложения", "line_name_confidence": 100.0, "values": [ { @@ -317,7 +316,7 @@ { "line_code": "2411", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "текущий налог на прибыль", "line_name_confidence": 100.0, "values": [ { @@ -337,7 +336,7 @@ { "line_code": "2412", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "отложенный налог на прибыль", "line_name_confidence": 100.0, "values": [ { @@ -377,7 +376,7 @@ { "line_code": "2400", "line_code_confidence": 100.0, - "line_name": "", + "line_name": "Чистая прибыль (убыток)", "line_name_confidence": 100.0, "values": [ { diff --git a/statements-xlsx/synthetic/README.md b/statements-xlsx/synthetic/README.md index 0c42376..69b1c54 100644 --- a/statements-xlsx/synthetic/README.md +++ b/statements-xlsx/synthetic/README.md @@ -1,6 +1,6 @@ # Синтетические формы (Срез 2b, Task 13) -Файлы st01…st06 — сценарии спецификации `statement-parsing` на синтетических данных (ББ и ОФР, XLSX). +Файлы st01…st07 — сценарии спецификации `statement-parsing` на синтетических данных (ББ и ОФР, XLSX). Генератор: `tabular-parser/api/tests/synthetic/generate_statements.py`. | Файл | Что проверяет | @@ -11,3 +11,4 @@ | st04_mixed_book.xlsx | Книга с листом ОСВ и листом баланса; проверка типов документов | | st05_continuation_only.xlsx | Одинокая страница 2 формы; needs_check, warning о continuation | | st06_header_variants.xlsx | Варианты, которых нет в реальных файлах: старое название ОФР, расшифровки/ОДДС/ОИК/целевое использование, форма только с ОКУД 0710xxx, название организации в «», «Адрес», колонка «Пояснения», числовая дата (покрытие словарей) | +| st07_single_code_continuation.xlsx | ОФР без 2400 на первом листе и лист-продолжение с единственной кодовой строкой 2400 (O-9): присоединяется, ОФР done | diff --git a/statements-xlsx/synthetic/st07_single_code_continuation.xlsx b/statements-xlsx/synthetic/st07_single_code_continuation.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e8268c1a491199e0b05750931590a819e599a119 GIT binary patch literal 6157 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 literal 0 HcmV?d00001