🧠NAS как ИИ-сервер

Это исходный отчёт фазы как есть — со всеми таблицами и методикой. Живая версия: 📄 Документы и OCR.

Фаза 6: документы и OCR

Прогон: 20–22 октября 2026
Хост: UGREEN DXP4800 Pro, i3-1315U, 32 GB, iGPU Intel RPL-U (Xe-LP, 64 EU)
Что меряли: насколько хорошо локальные модели читают русские документы (сканы счетов, квитанций ЖКХ, писем, рецептов, объявлений) и превращают их в JSON. Сравнивались классический OCR, специализированные OCR-модели и универсальные VLM.

Коротко

Как мерили

Распознавание текста

30 документов, «чисто» — цифровая отрисовка, «скан» — поворот до 1.5°, размытие, серая бумага, шум, JPEG 60. CER — по символам в порядке чтения (ниже лучше), F1 — по словам без учёта порядка (выше лучше); разметка Markdown/HTML перед сравнением убирается. «Ячейки» — доля ячеек 10 таблиц (4 счёта, 6 квитанций ЖКХ), найденных в таблице ответа на своей строке; у классического OCR структуры таблиц нет. VLM общего назначения читали только сканы. «Стр., с» — медиана на страницу (скан).

Движок Тип Где CER чисто / скан, % F1 слов чисто / скан, % Ячейки таблиц, % Стр., с RAM, GiB
Tesseract 5 (rus+eng) классический OCR CPU 8.2 / 15.3 91.7 / 83.9 0.0 0.3 —
PP-OCRv5 ESLAV (через Immich ML) классический OCR CPU 1.5 / 2.1 95.7 / 95.0 0.0 0.4 0.5
PaddleOCR-VL 1.6 (0.9B) OCR-модель iGPU 60.0 / 60.5 39.9 / 39.8 0.0 47.2 5.2
GLM-OCR (0.9B) OCR-модель iGPU 1.2 / 1.3 95.6 / 95.3 0.0 10.3 5.2
HunyuanOCR (1B) OCR-модель iGPU 0.1 / 0.2 99.9 / 99.9 100.0 10.9 5.3
dots.ocr (1.7B) OCR-модель iGPU — / 0.2 — / 99.8 100.0 87.0 6.1
DeepSeek-OCR (3B MoE) OCR-модель iGPU 3.7 / 11.5 95.9 / 90.7 80.0 18.6 7.9
Qwen3-VL-4B VLM iGPU — / 0.2 — / 99.7 99.3 17.9 8.8
Qwen3-VL-8B VLM iGPU — / 0.1 — / 100.0 100.0 30.6 11.1
Qwen3.5-4B + mmproj VLM iGPU — / 0.2 — / 99.7 100.0 19.6 7.4

Документ → JSON

Те же 30 документов (сканы), схемы и эталоны из фазы 5 плюс квитанции ЖКХ (лицевой счёт, период, плательщик, услуги с объёмом, тарифом и суммой, итог). «Сразу из картинки» — VLM получает изображение и JSON Schema (response_format, [0-9] вместо \d). «OCR → LLM» — текст движка OCR отдаётся Qwen3.5-4B с тем же промптом; «без OCR» — Qwen3.5-4B получает исходный текст документа, это потолок для конвейера. «Время» — медиана на документ: только сама модель извлечения (для OCR → LLM без времени OCR).

Путь Валидно, % Поля, % Документ без ошибок, % Выдумано вместо null Квитанции ЖКХ, % полей Время, с
без OCR (исходный текст) → Qwen3.5-4B 100 99.0 87 0 из 11 100.0 16.0
Qwen3-VL-4B, сразу из картинки 100 92.9 53 1 из 11 89.7 20.4
Qwen3-VL-8B, сразу из картинки 100 95.6 67 1 из 11 93.4 34.0
Qwen3.5-4B + mmproj, сразу из картинки 100 98.1 77 0 из 11 100.0 23.9
Tesseract 5 (rus+eng) → Qwen3.5-4B 100 55.1 43 0 из 11 16.5 15.9
PP-OCRv5 ESLAV (через Immich ML) → Qwen3.5-4B 100 91.5 60 0 из 11 83.1 15.9
PaddleOCR-VL 1.6 (0.9B) → Qwen3.5-4B 100 30.6 33 0 из 11 4.3 12.2
GLM-OCR (0.9B) → Qwen3.5-4B 100 96.1 60 0 из 11 98.1 16.3
HunyuanOCR (1B) → Qwen3.5-4B 100 98.5 80 0 из 11 100.0 16.0
dots.ocr (1.7B) → Qwen3.5-4B 100 98.5 80 0 из 11 100.0 16.0
DeepSeek-OCR (3B MoE) → Qwen3.5-4B 100 78.2 70 0 из 11 67.1 15.1

Выводы и рекомендации

Что ставить

Задача Рекомендация Почему
Текстовый слой для архива документов (поиск по сканам) HunyuanOCR на iGPU, или PP-OCRv5 ESLAV на CPU, если важна скорость 0.1–0.2% CER и таблицы в Markdown за ~11 с; или 1.5–2% за 0.4 с
Разбор документов в JSON (счета, квитанции, заявки) Qwen3.5-4B + mmproj, сразу с картинки, json_schema с [0-9] одна модель на всё: 98% полей, 24 с на документ, та же модель, что для голосового ассистента
То же, но с сохранением текста HunyuanOCR → Qwen3.5-4B 98.5% полей и чистый текст страницы, ~27 с
Не брать Tesseract, PaddleOCR-VL (без своего конвейера разметки), DeepSeek-OCR на сканах ошибки и развал таблиц

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

Что видно в цифрах

Ограничения

Заметки для фреймворка