Воспроизводимый локальный замер · P50-C05

Текстовые накладные: проверка сумм до сравнения парсеров

Два парсера читают полные документы с точкой и запятой в цене; ошибочная дробь обнаруживается контрольным итогом.

Задача и принятое решение

Быстрый разбор бесполезен, если 12,50 превращается в 12. Исходная работа была про PDF, но без настоящего PDF-движка я ограничил результат текстовым слоем и сохранил все документы.

Baseline использует parseFloat напрямую. Revised нормализует десятичную запятую и сверяет сумму строк с явно заданным итогом. Ошибка не маскируется округлением или заявлением о скорости.

PDF и OCR не вызываются. Замер относится к разбору приложенных текстовых накладных.

Проверить решение

Измените исходные строки или параметры и пересчитайте результат. Данные остаются в этой странице.

4Документов
3Принято
ДокументСуммаИтогРазницаПриемка
N185850Принято
N285850Принято
N350500Принято
N43031-1Расхождение

Исходный набор

Авторский набор. В timings.json записан фактически выполненный локальный замер кода; тариф модели и сеть в него не входят.

Изменить входные строки
Посмотреть исходные строки
IDТекст
N1Накладная N1 A;2;12.50 B;3;20.00 ИТОГО;85.00
N2Накладная N2 A;2;12,50 B;3;20,00 ИТОГО;85,00
N3Накладная N3 C;4;7,25 D;2;10,50 ИТОГО;50,00
N4Накладная N4 E;3;10.00 ИТОГО;31.00

Что получилось

Оба парсера выполнены на четырех полных документах. Прямой parseFloat прошел один, нормализация запятой — три; четвертый остался отклонен из-за ошибочного итога в самом документе. Время сравнивается рядом с этим различием правильности.

Выполненная проверка

ПроверкаРезультат
Исправленный парсер принимает три документа, N4 оставляет расхождение 1Пройдена
Baseline теряет дробь и принимает только N1Пройдена
Исправление источника N4 на итог 30 закрывает конкретное расхождениеПройдена

Формат строк явно задан: код; количество; цена. Произвольные таблицы, сканы и PDF требуют другого адаптера.

Скачать материалы и повторить проверку

source.json · source.csv · result.json · result.csv · engine.js · verify.cjs · checks.json · style.css · benchmark.cjs · timings.json

Локальная проверка: node verify.cjs. Нужен Node.js; сетевые обращения не выполняются.