Все пять примеров прогнаны через работающее распознавание как есть, 25 августа 2026 года. Ничего не меняли — это замер текущего состояния.
| Документ | Стр. | Блоков | Склеек | Левая и правая половины бланка | Подписи столбцов таблицы | Клетки таблицы |
|---|---|---|---|---|---|---|
| Пример 1 | 2 | 33 | 14 | 3 | 9 | 2 |
| Пример 2 (снят под углом) | 2 | 43 | 13 | 5 | 8 | 0 |
| Пример 3 | 1 | 9 | 3 | 2 | 0 | 1 |
| Пример 4 | 1 | 8 | 3 | 1 | 1 | 1 |
| Пример 5 | 2 | 19 | 10 | 5 | 4 | 1 |
| Итого | 8 | 112 | 43 | 16 | 22 | 5 |
Склейка — это когда в одном блоке оказался текст из двух и более клеток бланка. Проверяли так: берём ту же картинку страницы, которую читает распознавание, и те же линейки бланка, которые видит оно само. Если линейка проходит внутри рамки блока и закрывает его по высоте — по обе стороны линейки были соседние клетки, а в результат они попали вместе.
В шапке документа слева стоит продавец, справа покупатель, между ними линейка. Обе половины попадают в один блок и даже в одну строку. Пример 3, дословно из выдачи:
Продавец: 000 `ХоподОК: (2) Покупатель ИП Андреев Алексой Владимирович (6)
«(2)» и «(6)» — номера разных клеток бланка. Такие же блоки на всю ширину листа есть в Примерах 1, 4 и 5.
Шапка товарной таблицы многострочная. Её строки не попадают в сетку таблицы и уходят в свободный текст, где подписи соседних столбцов сливаются в одну строку. Пример 5, один блок пересекает десять границ столбцов:
№ Наименование товара Код вида Единица Количество Цена Стоимость Налого- | Сумма налога, Стоимость
Клетка получилась шире настоящей и вобрала соседнюю.
| Грузополучатель и его адрес: ООО «ИНТЕР СТРОЙ», 199406, Санкт-Петербург, Беринга yn, дом № !
25% | 4066.57 ЕЯ 400,00 Е. |
Первая строка — Пример 1: подпись поля и значение в одной клетке. Вторая — Пример 2: налоговая ставка, сумма налога и стоимость с налогом в одной клетке.
Товарная таблица занимает почти всю ширину листа — шестнадцать столбцов и больше. Сколько нашлось на самом деле:
| Документ | Ширина найденной таблицы | Столбцов | Клеток | Из них пустых |
|---|---|---|---|---|
| Пример 1 | 89 % листа | 19 | 247 | 80 |
| Пример 2, стр. 1 | 73 % листа | 14 | 70 | 18 |
| Пример 2, стр. 2 | 78 % листа | 11 | 44 | 13 |
| Пример 3 | 55 % листа | 3 | 36 | 4 |
| Пример 4 | 89 % листа | 16 | 64 | 16 |
| Пример 5 | 96 % листа | 16 | 288 | 27 |
Хуже всех Пример 3: таблица нашлась только в левой половине листа — три столбца из шестнадцати. Всё, что правее (количество, цена, суммы, страна происхождения), в таблицу не попало и лежит одним текстовым блоком на месте этих столбцов.
Пример 2 снят фотоаппаратом под углом. Что происходит по шагам.
На исходном снимке. На первой странице нашлось 27 вертикальных линеек. Крайняя левая завалена на +6,93°, крайняя правая — на −5,78°: линейки расходятся веером, разброс между краями листа почти 13°.
Подготовка снимка отрабатывает. Сервис пишет: «вертикали расходились веером на 12,9° — разведены в параллельные» и «выпрямлен прогиб страницы около 31 px». После правки на той же странице 18 линеек, крайняя левая 0,81°, крайняя правая 0,15° — лист выпрямлен, это видно и глазами.
Но выпрямление не бесплатное. Три следствия, все проверены по выдаче:
| Первая строка товара: должно быть | Вышло |
|---|---|
| цена 9 375,00 | 0.975. 0 | IN EIGN NS | | |
| стоимость без налога 37 500,00 | 37250000 |
| ставка 20 % | | | |
| сумма налога 7 500,00 | = > Ри |
| стоимость с налогом 45 000,00 | пусто |
Слева — значения из эталонного разбора этого документа. Из 70 клеток этой таблицы 18 пустые.
У всех трёх типов склеек она одна: границы клеток берутся только из длинных прямых линеек. Где линейка короткая, порванная или её нет вовсе — многострочная шапка таблицы, разделитель «продавец / покупатель» — соседние клетки сливаются. На перекошенном листе линеек не хватает даже там, где на бумаге они есть.
Эта записка ничего не меняет в распознавании — это замер «как есть».
Полный текст с методикой и всеми цифрами лежит в проекте: docs/shag1-yacheyki.md.