From a800db63ebc9f1e890866800ab06575bcf275d4d Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Wed, 7 Oct 2026 00:47:23 +0400 Subject: [PATCH 1/2] =?UTF-8?q?feat(ocr):=20=D1=8D=D1=82=D0=B0=D0=BB=D0=BE?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BD=D0=BE=D1=80=D0=BC=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=D0=B0=20scan-gateway=20expected=5Fnorm?= =?UTF-8?q?alize/=20(=D0=A1=D1=80=D0=B5=D0=B7=203a,=20#12)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Эталоны для наборов aep_3 (+ aep_3_ofr), aep_5, aep_6, aep_8_form4 и README с форматом. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2 --- ocr/expected_normalize/README.md | 6 + ocr/expected_normalize/aep_3.json | 1050 +++++++++++++++++ ocr/expected_normalize/aep_5.json | 12 + ocr/expected_normalize/aep_6.json | 1392 +++++++++++++++++++++++ ocr/expected_normalize/aep_8_form4.json | 12 + 5 files changed, 2472 insertions(+) create mode 100644 ocr/expected_normalize/README.md create mode 100644 ocr/expected_normalize/aep_3.json create mode 100644 ocr/expected_normalize/aep_5.json create mode 100644 ocr/expected_normalize/aep_6.json create mode 100644 ocr/expected_normalize/aep_8_form4.json diff --git a/ocr/expected_normalize/README.md b/ocr/expected_normalize/README.md new file mode 100644 index 0000000..09e4cf1 --- /dev/null +++ b/ocr/expected_normalize/README.md @@ -0,0 +1,6 @@ +# Эталоны нормализатора scan-gateway (Срез 3a) + +`.json` — результат `OcrNormalizer` для набора `ocr/.json` + `ocr/_*.json` в формате +`{status, warnings, metrics, error, documents}` (документы — `statementDocument` контракта v1.2, `exclude_none`). +Обновление: `make golden-update` в scan-gateway; изменения смотреть через `git diff` и объяснять в PR. +Эталоны фиксируют поведение на реальных сканах, включая известные ограничения (решение №12 спеки: `(7744536}` → без минуса). diff --git a/ocr/expected_normalize/aep_3.json b/ocr/expected_normalize/aep_3.json new file mode 100644 index 0000000..bc38369 --- /dev/null +++ b/ocr/expected_normalize/aep_3.json @@ -0,0 +1,1050 @@ +{ + "documents": [ + { + "columns": [ + { + "column_index": 0, + "label": "" + }, + { + "column_index": 1, + "label": "" + }, + { + "column_index": 2, + "label": "" + } + ], + "document_type": "BALANCE", + "header": { + "form_name": "Бухгалтерский баланс", + "inn": "3121200351", + "inn_confidence": 61.538464, + "organization_name": "><> ***** : во #У # ***ни > > 463 ■ из : <.... 20 1111Ы111 и \" - * * • 3' >> и 1 #:' ЗАК РЫТОВ АКЦИОНЕРНОЕ ОБЩЕСТВО Р'!А?Л:ЕЖ?С?Е|Е?В?С? ■ ... : ! : : - : - * : : ‘ : .... В : Россолькоставальнымажной • » ; о... ?.......- А.... .л глина ' ****** •. . **************************************** декамоддр». кообись пуждрматически пониках бирезовите 51828996ъ сум***********•******************************************* ЕВЦПУЮ * 245 61 - ,, {КИИ} И.ОЛ ОЧНОКО НСЕРВНЫЙ КОМВИНАТ\" ; ...предли 11»-1<1|1ч« 1114-4 •<««•< нам... бес * ******************************************************************* «ОР.РОЯ эластивентелиза зе раетьмы молоска.пача**************************************** 1Ш-Х I I 1 1 I ! I I I I 1 1 1 1 1 1 1 и 1 1 1 :€ и I I • ; 1 1 1 ; ; I I I х I. Л | | 4 1 = ’ 1- -1 » , ; (наименование органи ИИНН1 .", + "organization_name_confidence": 37.294117, + "report_date": "2024-12-31", + "report_date_text": "2|0|2|4|", + "units": "тыс. руб. год по ОКЕИ 13184" + }, + "lines": [ + { + "line_code": "1120", + "line_code_confidence": 50.0, + "line_name": "Результаты исследований и разработок", + "line_name_confidence": 50.0, + "values": [ + { + "column_index": 0, + "confidence": 0.0, + "is_recognized": false, + "string_value": ":" + }, + { + "column_index": 1, + "confidence": 0.0, + "is_recognized": false + }, + { + "column_index": 2, + "confidence": 0.0, + "is_recognized": false, + "string_value": ":" + } + ] + }, + { + "line_code": "1150", + "line_code_confidence": 25.0, + "line_name": "Основные средства", + "line_name_confidence": 25.0, + "values": [ + { + "amount": "2875532", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "2696440", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "2717959", + "column_index": 2, + "confidence": 42.857143, + "is_recognized": false + } + ] + }, + { + "line_code": "1160", + "line_code_confidence": 50.0, + "line_name": "Инвестиционная недвижимость", + "line_name_confidence": 50.0, + "values": [ + { + "column_index": 0, + "confidence": 14.285715, + "is_recognized": false, + "string_value": "' : ’ :" + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 0.0, + "is_recognized": false, + "string_value": "+" + } + ] + }, + { + "line_code": "1170", + "line_code_confidence": 100.0, + "line_name": "Финансовые вложения", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 0.0, + "is_recognized": false, + "string_value": ":" + }, + { + "amount": "200", + "column_index": 1, + "confidence": 80.0, + "is_recognized": false + }, + { + "amount": "200", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1180", + "line_code_confidence": 100.0, + "line_name": "Отложенные налоговые активы", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "1", + "column_index": 0, + "confidence": 0.0, + "is_recognized": false + }, + { + "amount": "28957", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "18121", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1210", + "line_code_confidence": 100.0, + "line_name": "Запасы", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "1108817", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "801643", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "720113", + "column_index": 2, + "confidence": 66.66667, + "is_recognized": false + } + ] + }, + { + "line_code": "1240", + "line_code_confidence": 50.0, + "line_name": "Финансовые вложения (за исключением денежных эквивалентов)", + "line_name_confidence": 50.0, + "values": [ + { + "amount": "183600", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "192077", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "987440", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1250", + "line_code_confidence": 100.0, + "line_name": "Денежные средства и денежные эквиваленты", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "4447", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "538696", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "239614", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1260", + "line_code_confidence": 100.0, + "line_name": "Прочие оборотные активы", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "30524", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "10989", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "8753", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1200", + "line_code_confidence": 100.0, + "line_name": "Итого по разделу II", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "2618567", + "column_index": 0, + "confidence": 71.42857, + "is_recognized": false + }, + { + "amount": "2684969", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "3179205", + "column_index": 2, + "confidence": 57.14286, + "is_recognized": false + } + ] + }, + { + "line_code": "1320", + "line_code_confidence": 50.0, + "line_name": "Собственные акции, выкупленные у акционеров", + "line_name_confidence": 50.0, + "values": [ + { + "column_index": 0, + "confidence": 66.66667, + "is_recognized": false, + "string_value": "I" + }, + { + "column_index": 1, + "confidence": 57.14286, + "is_recognized": false, + "string_value": "(-) + {" + }, + { + "column_index": 2, + "confidence": 66.66667, + "is_recognized": false, + "string_value": "(-)" + } + ] + }, + { + "line_code": "1340", + "line_code_confidence": 50.0, + "line_name": "Переоценка внеоборотных активов", + "line_name_confidence": 50.0, + "values": [ + { + "amount": "146927", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "122477", + "column_index": 1, + "confidence": 70.0, + "is_recognized": false + }, + { + "amount": "121946", + "column_index": 2, + "confidence": 68.75, + "is_recognized": false + } + ] + }, + { + "line_code": "1350", + "line_code_confidence": 100.0, + "line_name": "Добавочный капитал (без переоценки)", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "24", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "24", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "24", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1360", + "line_code_confidence": 50.0, + "line_name": "Резервный капитал", + "line_name_confidence": 50.0, + "values": [ + { + "amount": "2416", + "column_index": 0, + "confidence": 25.0, + "is_recognized": false + }, + { + "amount": "2416", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "2416", + "column_index": 2, + "confidence": 25.0, + "is_recognized": false + } + ] + }, + { + "line_code": "1370", + "line_code_confidence": 50.0, + "line_name": "Нераспределенная прибыль (непокрытый убыток)", + "line_name_confidence": 50.0, + "values": [ + { + "amount": "3248875", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "2856983", + "column_index": 1, + "confidence": 73.333336, + "is_recognized": false + }, + { + "amount": "2288967", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1300", + "line_code_confidence": 50.0, + "line_name": "Итого по разделу III", + "line_name_confidence": 50.0, + "values": [ + { + "amount": "3446569", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "3030227", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "2401680", + "column_index": 2, + "confidence": 71.42857, + "is_recognized": false + } + ] + }, + { + "line_code": "1310", + "line_code_confidence": 100.0, + "line_name": "Уставный капитал", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "1", + "column_index": 0, + "confidence": 33.333336, + "is_recognized": false + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1410", + "line_code_confidence": 100.0, + "line_name": "Заемные средства", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "628256", + "column_index": 0, + "confidence": 87.5, + "is_recognized": false + }, + { + "amount": "1561454", + "column_index": 1, + "confidence": 42.857143, + "is_recognized": false + }, + { + "amount": "1938454", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "420", + "line_code_confidence": 99.0, + "line_name": "Отложенные налоговые обязательства", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "43094", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "30700", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1430", + "line_code_confidence": 50.0, + "line_name": "Оценочные обязательства", + "line_name_confidence": 50.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true, + "string_value": "." + }, + { + "column_index": 1, + "confidence": 20.0, + "is_recognized": false, + "string_value": "! : г ’ ." + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1450", + "line_code_confidence": 50.0, + "line_name": "Прочие обязательства", + "line_name_confidence": 50.0, + "values": [ + { + "column_index": 0, + "confidence": 33.333336, + "is_recognized": false, + "string_value": "# -" + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1400", + "line_code_confidence": 50.0, + "line_name": "Итого по разделу IV", + "line_name_confidence": 50.0, + "values": [ + { + "amount": "67135", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "1592154", + "column_index": 1, + "confidence": 71.42857, + "is_recognized": false + }, + { + "amount": "1953529", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1510", + "line_code_confidence": 100.0, + "line_name": "Заемные средства", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "570663", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "198822", + "column_index": 1, + "confidence": 66.66667, + "is_recognized": false + }, + { + "amount": "641960", + "column_index": 2, + "confidence": 66.66667, + "is_recognized": false + } + ] + }, + { + "line_code": "1520", + "line_code_confidence": 100.0, + "line_name": "Кредиторская задолженность", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "817769", + "column_index": 0, + "confidence": 66.66667, + "is_recognized": false + }, + { + "amount": "536304", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "828554", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1530", + "line_code_confidence": 50.0, + "line_name": "Доходы будущих периодов", + "line_name_confidence": 50.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1540", + "line_code_confidence": 50.0, + "line_name": "Оценочные обязательства", + "line_name_confidence": 50.0, + "values": [ + { + "amount": "47001", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 0.0, + "is_recognized": false, + "string_value": "<" + }, + { + "amount": "42192", + "column_index": 2, + "confidence": 40.0, + "is_recognized": false + } + ] + }, + { + "line_code": "1550", + "line_code_confidence": 50.0, + "line_name": "Прочие обязательства", + "line_name_confidence": 50.0, + "values": [ + { + "amount": "31", + "column_index": 0, + "confidence": 0.0, + "is_recognized": false + }, + { + "amount": "31", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "29", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1700", + "line_code_confidence": 100.0, + "line_name": "БАЛАНС", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "1", + "column_index": 0, + "confidence": 0.0, + "is_recognized": false + }, + { + "amount": "5399730", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "5920582", + "column_index": 2, + "confidence": 85.71429, + "is_recognized": false + } + ] + } + ], + "locator": "file:3f1c2b7a-0000-4000-8000-000000000001.json;table:0" + }, + { + "columns": [ + { + "column_index": 0, + "label": "" + }, + { + "column_index": 1, + "label": "" + } + ], + "document_type": "INCOME", + "header": { + "form_name": "Отчет о финансовых результатах", + "inn": "3121200351", + "inn_confidence": 61.538464, + "organization_name": "><> ***** : во #У # ***ни > > 463 ■ из : <.... 20 1111Ы111 и \" - * * • 3' >> и 1 #:' ЗАК РЫТОВ АКЦИОНЕРНОЕ ОБЩЕСТВО Р'!А?Л:ЕЖ?С?Е|Е?В?С? ■ ... : ! : : - : - * : : ‘ : .... В : Россолькоставальнымажной • » ; о... ?.......- А.... .л глина ' ****** •. . **************************************** декамоддр». кообись пуждрматически пониках бирезовите 51828996ъ сум***********•******************************************* ЕВЦПУЮ * 245 61 - ,, {КИИ} И.ОЛ ОЧНОКО НСЕРВНЫЙ КОМВИНАТ\" ; ...предли 11»-1<1|1ч« 1114-4 •<««•< нам... бес * ******************************************************************* «ОР.РОЯ эластивентелиза зе раетьмы молоска.пача**************************************** 1Ш-Х I I 1 1 I ! I I I I 1 1 1 1 1 1 1 и 1 1 1 :€ и I I • ; 1 1 1 ; ; I I I х I. Л | | 4 1 = ’ 1- -1 » , ; (наименование органи ИИНН1 .", + "organization_name_confidence": 37.294117, + "report_date": "2024-12-31", + "report_date_text": "2|0|2|4|", + "units": "тыс. руб. год по ОКЕИ 13184" + }, + "lines": [ + { + "line_code": "2120", + "line_code_confidence": 100.0, + "line_name": "Себестоимость продаж", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "7744536", + "column_index": 0, + "confidence": 88.88889, + "is_recognized": false + }, + { + "amount": "-6032409", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2210", + "line_code_confidence": 100.0, + "line_name": "Коммерческие расходы", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "-693052", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "-546441", + "column_index": 1, + "confidence": 62.5, + "is_recognized": false + } + ] + }, + { + "line_code": "2220", + "line_code_confidence": 100.0, + "line_name": "Управленческие расходы", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "-278598", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "-872980", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2200", + "line_code_confidence": 100.0, + "line_name": "Прибыль (убыток) от продаж", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "532514", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "644908", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2320", + "line_code_confidence": 100.0, + "line_name": "Проценты к получению", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "9825", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "34466", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2330", + "line_code_confidence": 100.0, + "line_name": "Проценты к уплате", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "38378", + "column_index": 0, + "confidence": 71.42857, + "is_recognized": false + }, + { + "amount": "-47771", + "column_index": 1, + "confidence": 85.71429, + "is_recognized": false + } + ] + }, + { + "line_code": "2340", + "line_code_confidence": 100.0, + "line_name": "Прочие доходы", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "22266", + "column_index": 0, + "confidence": 80.0, + "is_recognized": false + }, + { + "amount": "420962", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2350", + "line_code_confidence": 100.0, + "line_name": "Прочие расходы", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "-241654", + "column_index": 0, + "confidence": 75.0, + "is_recognized": false + }, + { + "amount": "-339029", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2300", + "line_code_confidence": 100.0, + "line_name": "Прибыль (убыток) до налогообложения", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "500028", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "713536", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2410", + "line_code_confidence": 50.0, + "line_name": "Налог на прибыль", + "line_name_confidence": 50.0, + "values": [ + { + "amount": "-108450", + "column_index": 0, + "confidence": 87.5, + "is_recognized": false + }, + { + "amount": "-148179", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2460", + "line_code_confidence": 100.0, + "line_name": "Прочее", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 23.529411, + "is_recognized": false, + "string_value": "в ом нашкаманы. -" + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2900", + "line_code_confidence": 100.0, + "line_name": "Базовая прибыль (убыток) на акцию", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 57.14286, + "is_recognized": false, + "string_value": "..... ." + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2930", + "line_code_confidence": 99.0, + "line_name": "Разводненная прибыль (убыток) на акцию", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 28.57143, + "is_recognized": false, + "string_value": ", - : :" + }, + { + "column_index": 1, + "confidence": 0.0, + "is_recognized": false, + "string_value": "*" + } + ] + } + ], + "locator": "file:3f1c2b7a-0000-4000-8000-000000000001.json;table:1" + } + ], + "error": null, + "metrics": { + "rows": 41 + }, + "status": "needs_check", + "warnings": [ + "3f1c2b7a-0000-4000-8000-000000000001.json: ИНН не распознан", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: шапка синтезирована: колонки без дат", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1320 повторяется: оставлена первая строка", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1350 повторяется: оставлена первая строка", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1360 повторяется: оставлена первая строка", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1370 повторяется: оставлена первая строка", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:1: шапка синтезирована: колонки без дат", + "3f1c2b7a-0000-4000-8000-000000000001_ofr.json: INVALID_DOCUMENT: Не удалось определить тип документа." + ] +} diff --git a/ocr/expected_normalize/aep_5.json b/ocr/expected_normalize/aep_5.json new file mode 100644 index 0000000..e10fce1 --- /dev/null +++ b/ocr/expected_normalize/aep_5.json @@ -0,0 +1,12 @@ +{ + "documents": [], + "error": { + "code": "INVALID_DOCUMENT", + "message": "Не удалось определить тип документа." + }, + "metrics": null, + "status": "error", + "warnings": [ + "3f1c2b7a-0000-4000-8000-000000000001.json: INVALID_DOCUMENT: Не удалось определить тип документа." + ] +} diff --git a/ocr/expected_normalize/aep_6.json b/ocr/expected_normalize/aep_6.json new file mode 100644 index 0000000..e5902d1 --- /dev/null +++ b/ocr/expected_normalize/aep_6.json @@ -0,0 +1,1392 @@ +{ + "documents": [ + { + "columns": [ + { + "column_index": 0, + "label": "На 30 июня 2025 г", + "period_date": "2025-06-30" + }, + { + "column_index": 1, + "label": "На 31 декабря 2024 г.", + "period_date": "2024-12-31" + }, + { + "column_index": 2, + "label": "На 31 декабря 2023 г.", + "period_date": "2023-12-31" + } + ], + "document_type": "BALANCE", + "header": { + "form_name": "Бухгалтерский баланс", + "organization_name": "Общество с ограниченной ответственностью : Специализированный Застройщик \"Дорстроймонтаж\"", + "organization_name_confidence": 100.0, + "report_date_text": "Общество с ограниченной ответственностью", + "units": "тыс. руб." + }, + "lines": [ + { + "line_code": "1105", + "line_code_confidence": 99.0, + "line_name": "АКТИВ I. Внеоборотные активы Гудвил", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1110", + "line_code_confidence": 99.0, + "line_name": "Нематериальные активы", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1140", + "line_code_confidence": 99.0, + "line_name": "Материальные поисковые активы", + "line_name_confidence": 75.86207, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1150", + "line_code_confidence": 99.0, + "line_name": "Основные средства", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1160", + "line_code_confidence": 99.0, + "line_name": "Инвестиционная недвижимость", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1170", + "line_code_confidence": 99.0, + "line_name": "Финансовые вложения", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "22000", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "55000", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1180", + "line_code_confidence": 99.0, + "line_name": "Отложенные налоговые активы", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1190", + "line_code_confidence": 99.0, + "line_name": "Прочие внеоборотные активы", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1100", + "line_code_confidence": 99.0, + "line_name": "Итого по разделу I", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "22000", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "55000", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1210", + "line_code_confidence": 99.0, + "line_name": "II. Оборотные активы Запасы", + "line_name_confidence": 96.296295, + "values": [ + { + "amount": "219995", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "93864", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "109276", + "column_index": 2, + "confidence": 71.42857, + "is_recognized": false + } + ] + }, + { + "line_code": "1215", + "line_code_confidence": 99.0, + "line_name": "Долгосрочные активы к продаже", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1220", + "line_code_confidence": 50.0, + "line_name": "Налог на добавленную стоимость по приобретенным ценностям", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1230", + "line_code_confidence": 99.0, + "line_name": "Дебиторская задолженность", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "47314", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "28366", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "80512", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1240", + "line_code_confidence": 50.0, + "line_name": "Финансовые вложения (за исключением денежных эквивалентов)", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1250", + "line_code_confidence": 99.0, + "line_name": "Денежные средства и денежные эквиваленты", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "4400", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "2561", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "58", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1260", + "line_code_confidence": 99.0, + "line_name": "Прочие оборотные активы", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1200", + "line_code_confidence": 50.0, + "line_name": "Итого по разделу II", + "line_name_confidence": 89.47369, + "values": [ + { + "amount": "271709", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "124791", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "189847", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1600", + "line_code_confidence": 50.0, + "line_name": "БАЛАНС", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "293709", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "179791", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "189847", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1310", + "line_code_confidence": 99.0, + "line_name": "ПАССИВ III. Капитал Уставный капитал", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "10", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "10", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "10", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1320", + "line_code_confidence": 50.0, + "line_name": "Собственные акции, принадлежащие обществу, задолженность акционеров по оплате акций", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1340", + "line_code_confidence": 50.0, + "line_name": "Накопленная дооценка внеоборотных активов .", + "line_name_confidence": 97.674416, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1350", + "line_code_confidence": 50.0, + "line_name": "Добавочный капитал (без накопленной дооценки)", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1360", + "line_code_confidence": 50.0, + "line_name": "Резервный капитал", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1370", + "line_code_confidence": 50.0, + "line_name": "Нераспределенная прибыль (непокрытый убыток)", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "67655", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "60178", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "-223", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1300", + "line_code_confidence": 50.0, + "line_name": "Итого по разделу III", + "line_name_confidence": 90.0, + "values": [ + { + "amount": "67665", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "60188", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "-213", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1410", + "line_code_confidence": 99.0, + "line_name": "IV. Долгосрочные обязательства Заемные средства", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "144735", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "51832", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "100654", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1430", + "line_code_confidence": 99.0, + "line_name": "Оценочные обязательства", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1450", + "line_code_confidence": 50.0, + "line_name": "Прочие долгосрочные обязательства", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1400", + "line_code_confidence": 99.0, + "line_name": "Итого по разделу IV", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "144735", + "column_index": 0, + "confidence": 71.42857, + "is_recognized": false + }, + { + "amount": "51832", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "100654", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1510", + "line_code_confidence": 99.0, + "line_name": "V. Краткосрочные обязательства Заемные спедства чтмики тигу* ЧМ", + "line_name_confidence": 80.952385, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1520", + "line_code_confidence": 50.0, + "line_name": "Кредиторская задолженность", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "81310", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "67770", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "89406", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1530", + "line_code_confidence": 75.0, + "line_name": "Плуллы булупну попиплар « №", + "line_name_confidence": 44.444447, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1540", + "line_code_confidence": 50.0, + "line_name": "Оценочные обязательства", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1550", + "line_code_confidence": 50.0, + "line_name": "Прочие краткосрочные обязательства", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1500", + "line_code_confidence": 50.0, + "line_name": "Итого по разделу V", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "81310", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "67770", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "89406", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "1700", + "line_code_confidence": 99.0, + "line_name": "БАЛАНС", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "293709", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "179791", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "189847", + "column_index": 2, + "confidence": 100.0, + "is_recognized": true + } + ] + } + ], + "locator": "file:3f1c2b7a-0000-4000-8000-000000000001.json;table:0" + }, + { + "columns": [ + { + "column_index": 0, + "label": "За январь - июнь 2025 г.", + "period_date": "2025-06-30" + }, + { + "column_index": 1, + "label": "За январь - июнь 2024 г.", + "period_date": "2024-06-30" + } + ], + "document_type": "INCOME", + "header": { + "form_name": "Отчет о финансовых результатах", + "organization_name": "Общество с ограниченной ответственностью : Специализированный Застройщик \"Дорстроймонтаж\"", + "organization_name_confidence": 100.0, + "report_date_text": "Общество с ограниченной ответственностью", + "units": "тыс. руб." + }, + "lines": [ + { + "line_code": "2110", + "line_code_confidence": 99.0, + "line_name": "Выручка", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "13070", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2120", + "line_code_confidence": 99.0, + "line_name": "Себестоимость продаж", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "-8219", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2100", + "line_code_confidence": 99.0, + "line_name": "Валовая прибыль (убыток)", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "4851", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2210", + "line_code_confidence": 99.0, + "line_name": "Коммерческие расходы", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2220", + "line_code_confidence": 99.0, + "line_name": "Управленческие расходы", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "-225", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "-124", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2200", + "line_code_confidence": 99.0, + "line_name": "Прибыль (убыток) от продаж", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "4626", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "-124", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2310", + "line_code_confidence": 99.0, + "line_name": "Доходы от участия в других организациях", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2320", + "line_code_confidence": 99.0, + "line_name": "Проценты к получению", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "5169", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2330", + "line_code_confidence": 99.0, + "line_name": "Проценты к уплате", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2340", + "line_code_confidence": 99.0, + "line_name": "Прочие доходы", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2350", + "line_code_confidence": 99.0, + "line_name": "Прочие расходы", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "-1669", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "-4", + "column_index": 1, + "confidence": 75.0, + "is_recognized": false + } + ] + }, + { + "line_code": "2300", + "line_code_confidence": 99.0, + "line_name": "Прибыль (убыток) от продолжающейся деятельности до налогообложения", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "8126", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "-228", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2410", + "line_code_confidence": 99.0, + "line_name": "Налог на прибыль организаций", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2411", + "line_code_confidence": 99.0, + "line_name": "в том числе: текущий налог на прибыль организаций", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2412", + "line_code_confidence": 99.0, + "line_name": "отложенный налог на прибыль организаций", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2420", + "line_code_confidence": 99.0, + "line_name": "Прибыль (убыток) от прекращаемой деятельности (за вычетом относящегося к ней налога на прибыль организаций)", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2460", + "line_code_confidence": 99.0, + "line_name": "Прочее", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2400", + "line_code_confidence": 99.0, + "line_name": "Чистая прибыль (убыток)", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "7477", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "-228", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2510", + "line_code_confidence": 99.0, + "line_name": "Результат переоценки внеоборотных активов, не включаемый в чистую прибыль (убыток)", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2520", + "line_code_confidence": 99.0, + "line_name": "Результат прочих операций, не включаемый в чистую прибыль (убыток)", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2530", + "line_code_confidence": 99.0, + "line_name": "Налог на прибыль организаций, относящийся к позупьтатом пополнации виолбалятным - УТИВАР и роду. • и ! 441*1 персоцепкиI !4414 |Г1 прочих операций, не включаемых в чистую прибыль (убыток)", + "line_name_confidence": 80.213905, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2500", + "line_code_confidence": 99.0, + "line_name": "Совокупный финансовый результат", + "line_name_confidence": 100.0, + "values": [ + { + "amount": "7477", + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "amount": "-228", + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2900", + "line_code_confidence": 99.0, + "line_name": "Базовая прибыль (убыток) на акцию, руб. коп.", + "line_name_confidence": 100.0, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + }, + { + "line_code": "2910", + "line_code_confidence": 99.0, + "line_name": "Разводненная прибыль (убыток н гаквию, руб, коп.", + "line_name_confidence": 66.66667, + "values": [ + { + "column_index": 0, + "confidence": 100.0, + "is_recognized": true + }, + { + "column_index": 1, + "confidence": 100.0, + "is_recognized": true + } + ] + } + ], + "locator": "file:3f1c2b7a-0000-4000-8000-000000000001.json;table:1" + } + ], + "error": null, + "metrics": { + "rows": 60 + }, + "status": "needs_check", + "warnings": [ + "3f1c2b7a-0000-4000-8000-000000000001.json: ИНН не распознан", + "3f1c2b7a-0000-4000-8000-000000000001.json: дата отчёта не разобрана", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: редакция fsbu4 не заполнена", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1220 повторяется: оставлена первая строка", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1520 повторяется: оставлена первая строка", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:1: редакция fsbu4 не заполнена", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:1: код 2410 повторяется: оставлена первая строка" + ] +} diff --git a/ocr/expected_normalize/aep_8_form4.json b/ocr/expected_normalize/aep_8_form4.json new file mode 100644 index 0000000..e10fce1 --- /dev/null +++ b/ocr/expected_normalize/aep_8_form4.json @@ -0,0 +1,12 @@ +{ + "documents": [], + "error": { + "code": "INVALID_DOCUMENT", + "message": "Не удалось определить тип документа." + }, + "metrics": null, + "status": "error", + "warnings": [ + "3f1c2b7a-0000-4000-8000-000000000001.json: INVALID_DOCUMENT: Не удалось определить тип документа." + ] +} -- 2.47.2 From 5dcfaf8fdd71c7ce15808f1a2702e935b6e0b6ab Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Wed, 7 Oct 2026 03:35:25 +0400 Subject: [PATCH 2/2] =?UTF-8?q?feat(ocr):=20=D1=8D=D1=82=D0=B0=D0=BB=D0=BE?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BD=D0=BE=D1=80=D0=BC=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=D0=B0=20=E2=80=94=20=D0=BF=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D1=83=D0=BF=D1=80=D0=B5=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BE=20=D0=BF=D1=80=D0=BE=D0=BF=D1=83=D1=89=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B0?= =?UTF-8?q?=D1=85,=20=D1=84=D0=BE=D1=80=D0=BC=D1=83=D0=BB=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=98=D0=9D=D0=9D=20(=D0=A1=D1=80?= =?UTF-8?q?=D0=B5=D0=B7=203a,=20#12)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit aep_3 и aep_6: предупреждения «строк с нечисловым кодом пропущено: N» и «строк без кода с суммами пропущено: N» на таблицу; aep_3: «ИНН распознан неуверенно» вместо «ИНН не распознан» (ИНН извлечён, confidence < 100). Документы (строки, суммы, колонки) не изменились. В README — строка про ocr/expected_normalize/. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2 --- README.md | 2 ++ ocr/expected_normalize/aep_3.json | 6 +++++- ocr/expected_normalize/aep_6.json | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 70865dc..9bfa533 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ ocr/ пары «вход → выход» И ИС кладёт в каталог по одному json на каждый распознанный документ файла: aep_3.pdf → aep_3.json (баланс + ОФР, успех) и aep_3_ofr.json (ошибка INVALID_DOCUMENT); aep_6.pdf → aep_6.json (баланс + ОФР, успех); aep_5, aep_8 — ответы-ошибки + expected_normalize/ — эталоны нормализатора ответов ИС (status, warnings, documents по набору aep_N*.json), + как golden/expected_osv_parse для парсера ОСВ; описание — expected_normalize/README.md golden/ эталонная ручная консолидация и анализ (Excel), expected_osv_parse/ — снимки парсера disclosures/ формы расшифровок к отчётности directories/ выгрузка ЕЦП по ГК РБ (Срез 1), план счетов 1С заказчика chart-of-accounts-1c.xlsx (OQ-113) diff --git a/ocr/expected_normalize/aep_3.json b/ocr/expected_normalize/aep_3.json index bc38369..9ba0240 100644 --- a/ocr/expected_normalize/aep_3.json +++ b/ocr/expected_normalize/aep_3.json @@ -1038,13 +1038,17 @@ }, "status": "needs_check", "warnings": [ - "3f1c2b7a-0000-4000-8000-000000000001.json: ИНН не распознан", + "3f1c2b7a-0000-4000-8000-000000000001.json: ИНН распознан неуверенно", "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: шапка синтезирована: колонки без дат", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: строк с нечисловым кодом пропущено: 8", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: строк без кода с суммами пропущено: 2", "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1320 повторяется: оставлена первая строка", "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1350 повторяется: оставлена первая строка", "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1360 повторяется: оставлена первая строка", "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1370 повторяется: оставлена первая строка", "3f1c2b7a-0000-4000-8000-000000000001.json: table:1: шапка синтезирована: колонки без дат", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:1: строк с нечисловым кодом пропущено: 2", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:1: строк без кода с суммами пропущено: 2", "3f1c2b7a-0000-4000-8000-000000000001_ofr.json: INVALID_DOCUMENT: Не удалось определить тип документа." ] } diff --git a/ocr/expected_normalize/aep_6.json b/ocr/expected_normalize/aep_6.json index e5902d1..9934250 100644 --- a/ocr/expected_normalize/aep_6.json +++ b/ocr/expected_normalize/aep_6.json @@ -1383,9 +1383,13 @@ "warnings": [ "3f1c2b7a-0000-4000-8000-000000000001.json: ИНН не распознан", "3f1c2b7a-0000-4000-8000-000000000001.json: дата отчёта не разобрана", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: строк с нечисловым кодом пропущено: 2", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: строк без кода с суммами пропущено: 19", "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: редакция fsbu4 не заполнена", "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1220 повторяется: оставлена первая строка", "3f1c2b7a-0000-4000-8000-000000000001.json: table:0: код 1520 повторяется: оставлена первая строка", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:1: строк с нечисловым кодом пропущено: 1", + "3f1c2b7a-0000-4000-8000-000000000001.json: table:1: строк без кода с суммами пропущено: 2", "3f1c2b7a-0000-4000-8000-000000000001.json: table:1: редакция fsbu4 не заполнена", "3f1c2b7a-0000-4000-8000-000000000001.json: table:1: код 2410 повторяется: оставлена первая строка" ] -- 2.47.2