Перейти к содержанию
modelium.
Начать с задачи
←

PaddleOCR-VL локально: как разобрать скан и проверить таблицу

Для разбора страницы используйте полный pipeline PaddleOCR-VL 1.6, а не только VLM через Transformers: он выделяет области документа, распознаёт элементы и собирает результат. На Linux начните с одного несекретного скана и сохраните вывод; сверяйте цифры и строки таблицы с оригиналом. Поддержка конкретного железа, скорость и качество русской первички требуют проверки на собственных данных.

Сверено 2 октября 2026 года по документации PaddleOCR на Git commit dab3fe3 и карточке весов на HF revision c5630ab. Ни скорость, ни качество русских сканов Modelium не измерял. Запрос «paddleocr vl» имеет качественный сигнал Google Suggest ru/RU, но частотность в России неизвестна.

Что выдаёт PaddleOCR-VL и почему нужна полная цепочка?

PaddleOCR-VL 1.6 — модель распознавания элементов документа, а официальный pipeline сначала находит и упорядочивает области страницы, затем распознаёт каждую область и собирает их в результат. Таблица, формула, текст и порядок чтения проходят через эту цепочку, поэтому запуск только VLM через Transformers или vLLM — не эквивалент разбора всей страницы s1. В коде pipeline отдельно задаются версия и модель распознавания: при сравнении двух запусков фиксируйте конфигурацию обоих этапов s7.

Публичная модель на HF — PaddlePaddle/PaddleOCR-VL-1.6, ревизия c5630abae1d940eafe0697512a0325494b02ab42 содержит файл весов и конфигурацию s6. В конфигурации есть bfloat16, но ни из dtype, ни из размера файла нельзя вывести минимальную RAM/VRAM для полного pipeline s5s1. Автор сообщает 96,33% в OmniDocBench v1.6; это авторская оценка на своём наборе, а не обещание качества ваших русских счетов или УПД s3.

Что приготовить до первого локального разбора?

Этот путь рассчитан на Linux x64 CPU или поддерживаемый NVIDIA GPU, с отдельной средой Python 3.9–3.13. Документация ручной установки требует PaddlePaddle не ниже 3.2.1 и группу paddleocr[doc-parser]; не ставьте одновременно CPU- и GPU-пакеты PaddlePaddle. Для Apple Silicon, AMD/Intel и NVIDIA Blackwell в документации предусмотрены другие инструкции — команды ниже для них не обещают совместимости s1s2. Подберите подходящий wheel для своей ОС и драйвера по официальной инструкции до установки: пример с CUDA 12.6 нельзя механически переносить на любой GPU s1.

Возьмите свой тестовый скан scan.png без закрытых данных: хорошо видимые строки, цифры, ячейки таблицы и несколько заранее известных контрольных значений. Исходный файл и ручной эталон храните отдельно от результата. Первый запуск по документации скачивает компоненты из сети; «работает локально» не равно «уже подготовлено к офлайну». Для изолированного контура потребуется отдельно перенести зависимости/модели и проверить сетевые обращения s1.

Как пройти путь на Linux без облачного OCR API?

  1. Создайте и активируйте отдельное окружение: python3.11 -m venv .venv-paddleocr, затем source .venv-paddleocr/bin/activate. Команды ниже — документированный путь установки, не проверенный запуск Modelium s1.
  2. Для x64 CPU выполните python -m pip install paddlepaddle==3.2.1 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/; для совместимой NVIDIA/CUDA 12.6 вместо него — python -m pip install paddlepaddle-gpu==3.2.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/. Это два альтернативных пути, не последовательные команды s1.
  3. Установите пакет разбора: python -m pip install -U "paddleocr[doc-parser]>=3.6.0". Карточка модели приводит эту группу и версию; базовый paddleocr без опции не покрывает весь сценарий разбора документа s3s2.
  4. Для CPU на своём файле выполните paddleocr doc_parser -i ./scan.png --pipeline_version v1.6 --device cpu --save_path ./output. Для поддерживаемой NVIDIA уберите --device cpu. Параметр pipeline_version принимает v1.6, а save_path сохраняет результаты под ./output; это ожидаемое поведение документации, не результат запуска на нашем сервере s1s3.
  5. Откройте сохранённые файлы и сопоставьте текст и таблицу с изображением. CLI печатает структурный результат и при --save_path записывает файлы; не принимайте любой созданный файл за успешное распознавание всех полей s1.

Для интеграции вместо CLI у API есть PaddleOCRVL(pipeline_version="v1.6"), predict("./scan.png") и методы результата save_to_json(save_path="output") и save_to_markdown(save_path="output") s3. JSON содержит блоки block_label, block_bbox, block_content и порядок block_order: сохраняйте их, если важно проверить, откуда взялась строка s1. Для многостраничного PDF результат по умолчанию разбивается по страницам; функция restructure_pages может объединять таблицы через страницы, но её результат тоже требует ручной проверки s1.

Как понять, что таблица распознана пригодно?

Сделайте эталон для одной страницы: число строк и столбцов, итоговые суммы, единицы измерения, артикулы, разделители и две-три ячейки на границе таблицы. Сверьте не только наличие текста в Markdown, но и соответствие каждой строки исходному изображению: сдвиг одной строки может испортить последующую загрузку в учётную систему. Сохраните найденные расхождения по типам — пропущенная область, неверный порядок чтения, распознанная цифра, склеенная ячейка. Это методика проверки, а не данные о точности модели.

Если таблица вообще не выделена, первым делом проверьте этап анализа областей и не отключён ли use_layout_detection: документация показывает, что выключение этого параметра меняет цепочку s1. Для повернутого или искривлённого скана предусмотрены use_doc_orientation_classify и use_doc_unwarping; по умолчанию они отключены, поэтому включайте и сравнивайте результат на том же исходнике, а не объявляйте улучшение без измерения s1. Если распознано только одно обрезанное поле, проверьте, не перешли ли вы на пример Transformers: автор отдельно ограничивает его element-level распознаванием, а для страницы рекомендует полный pipeline s3s1.

Когда не использовать результат напрямую?

Не переносите распознанные реквизиты или суммы в 1С без сверки с оригиналом и человеком: модель извлекает элементы, а сопоставление с учётной схемой — следующий этап. Разбор задачи документов для 1С помогает определить, какие поля и ошибки проверять; Docling — альтернативный путь для структурных PDF, а сравнение OCR-подходов полезно после одинакового теста на своём наборе.

Текст LICENSE у закреплённых весов — Apache 2.0 s4. Это не автоматическое разрешение для каждого дополнительного компонента полного процесса и не юридическое заключение; проверяйте выбранные веса, зависимости и условия обработки документов отдельно. Изолированность сети также требует теста: порядок проверки офлайн-контура не заменяется словом «локально».

Следующий шаг: сохраните один обезличенный scan.png, выполните локальную команду на своём устройстве и вручную отметьте каждую ошибку таблицы/цифр по исходнику. Если качество не подходит, сравните OCR-подходы на том же тестовом скане. Ни скорость, ни минимальная память, ни точность русского текста на вашем железе здесь не заявлены.

Источники

  1. PaddleOCR — PaddleOCR-VL pipeline usage, закреплённый Git commit — revision dab3fe35379033fdcb2d0e9572fac0b36c9a9ebf. Получено 02.10.2026.
  2. PaddleOCR — Installation, dependency group doc-parser — revision dab3fe35379033fdcb2d0e9572fac0b36c9a9ebf. Получено 02.10.2026.
  3. PaddleOCR-VL-1.6 — карточка автора с командами и авторскими оценками — revision c5630abae1d940eafe0697512a0325494b02ab42. Получено 02.10.2026.
  4. PaddleOCR-VL-1.6 — LICENSE на ревизии модели — revision c5630abae1d940eafe0697512a0325494b02ab42. Получено 02.10.2026.
  5. PaddleOCR-VL-1.6 — конфигурация весов — revision c5630abae1d940eafe0697512a0325494b02ab42. Получено 02.10.2026.
  6. Hugging Face — машинный инвентарь ревизии PaddleOCR-VL-1.6 — revision c5630abae1d940eafe0697512a0325494b02ab42. Получено 02.10.2026.
  7. PaddleOCR — реализация PaddleOCRVL, закреплённый commit — revision dab3fe35379033fdcb2d0e9572fac0b36c9a9ebf. Получено 02.10.2026.