🧠NAS как ИИ-сервер
📄
Фаза 6 · OCRГодится

Документы и OCR

Сканы счетов, квитанции ЖКХ, письма, рецепты. Сначала текст надо прочитать, а потом разобрать в JSON вида «сумма, дата, лицевой счёт». Сравнили классический OCR, специальные OCR-нейросети и универсальные модели, которые «видят».

Берём HunyuanOCR для текста (таблицы целиком, 11 с на страницу), Qwen3.5-4B со зрением для документ → JSON
Сухие цифры и методика →

Документы мы сгенерировали сами: 30 страниц с точно известным содержимым. Каждую сделали в двух вариантах — «чистом» и «скане»: серая бумага, поворот, размытие, шум, сильное сжатие JPEG. Почти как бумажка, которую сфотографировали на телефон в коридоре.

0.2%ошибок у HunyuanOCR на сканах
11 сна страницу с таблицами
0.4 су PP-OCRv5 на CPU, 2% ошибок
15%ошибок у Tesseract — того, что в Paperless

Посмотри, кто как читает

Квитанция ЖКХ — самое вредное, что у нас было: таблица из пяти столбцов с дробными числами. Нажми на картинку, чтобы увеличить, и переключай движки справа.

скан квитанции
эта страница: 30.9 с

Единый платёжный документ

Лицевой счёт: 4764371531

Расчётный период: декабрь 2026 г.

Плательщик: Соколов Дмитрий Андреевич

Услуга Ед. изм. Объём Тариф, руб. Начислено, руб.
Холодное водоснабжение м³ 1,945 18,06 35,13
Отопление Гкал 5,335 2 780,31 14 832,95
Горячее водоснабжение м³ 8,553 243,57 2 083,25
Электроэнергия кВт·ч 66 6,43 424,38
Содержание жилого помещения м² 32,1 31,20 1 001,52
Вывоз ТКО чел. 1 145,60 145,60
Водоотведение м³ 8,96 38,45 344,51

Итого к оплате: 18 867,34 руб.

Оплатить до 25 числа следующего месяца.

HunyuanOCR отдал таблицу целиком в Markdown, без единой ошибки. PP-OCRv5 прочитал все числа, но таблицу выдал просто строками, а «м³» превратил в «M3$». Tesseract, который стоит в Paperless-ngx и OCRmyPDF, таблицу не осилил вовсе: «ели [м [ббым [Tapnd. py.».

Точность против скорости

Ниже и левее — лучше. 30 страниц-«сканов»: счета, квитанции ЖКХ, заявки, письма, рецепты, объявления.

Документ → JSON

Что нам на самом деле нужно от квитанции — не текст, а «лицевой счёт 4764371531, период декабрь 2026, к оплате 18 867,34». Проверили два пути:

  1. Одна модель смотрит на картинку и сразу выдаёт JSON.
  2. Сначала OCR, потом текст разбирает LLM (Qwen3.5-4B, лучший быстрый извлекатель из фазы про LLM).
Два пути: VLM смотрит на картинку и сразу выдаёт JSON, или сначала OCR, а потом текст разбирает Qwen3.5-4B. «Потолок» — тот же Qwen3.5-4B на идеальном тексте без OCR.

Оба пути дают почти одно и то же. Qwen3.5-4B со зрением напрямую с картинки выдаёт 98.1% верных полей за 24 секунды. HunyuanOCR → Qwen3.5-4B — 98.5% за 27 секунд, и в придачу получаешь чистый текст страницы. Это почти потолок: на идеальном тексте без OCR тот же Qwen3.5-4B выдаёт 99%.

Качество OCR передаётся дальше один в один

Плохой OCR в начале — плохой JSON в конце. После PP-OCRv5 квитанции ЖКХ разбираются только на 83%: таблица без столбцов, и LLM путает, где тариф, а где объём. После Tesseract — на 16%.

Для Paperless-ngx

Штатный Tesseract плохо читает русские сканы с таблицами. Если хочется нормального поиска по документам, текст лучше получать HunyuanOCR или PP-OCRv5 и отдавать в Paperless через свой предобработчик или API.

Большие модели здесь не досчитали

Qwen3.6-35B и Gemma 4 26B с картинками на этой сборке llama.cpp капризничают: через несколько страниц начинают отвечать пустотой или мусором, а Gemma ещё и не влезает в память на большом контексте. Как это обойти, мы выяснили на вопросах по фото. Здесь повторять не стали: HunyuanOCR и Qwen3.5-4B и так почти у потолка, большая модель выводов не изменит.

Ограничения