PaddleOCR-VL локально: как разобрать скан и проверить таблицу
На странице · 5 разделов
Для разбора страницы используйте полный pipeline PaddleOCR-VL 1.6, а не только VLM через Transformers: он выделяет области документа, распознаёт элементы и собирает результат. На Linux начните с одного несекретного скана и сохраните вывод; сверяйте цифры и строки таблицы с оригиналом. Поддержка конкретного железа, скорость и качество русской первички требуют проверки на собственных данных.
Сверено 2 октября 2026 года по документации PaddleOCR на Git commit
dab3fe3и карточке весов на HF revisionc5630ab. Ни скорость, ни качество русских сканов 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?
- Создайте и активируйте отдельное окружение:
python3.11 -m venv .venv-paddleocr, затемsource .venv-paddleocr/bin/activate. Команды ниже — документированный путь установки, не проверенный запуск Modelium s1. - Для 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. - Установите пакет разбора:
python -m pip install -U "paddleocr[doc-parser]>=3.6.0". Карточка модели приводит эту группу и версию; базовыйpaddleocrбез опции не покрывает весь сценарий разбора документа s3s2. - Для 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. - Откройте сохранённые файлы и сопоставьте текст и таблицу с изображением. 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-подходы на том же тестовом скане. Ни скорость, ни минимальная память, ни точность русского текста на вашем железе здесь не заявлены.
Источники
- PaddleOCR — PaddleOCR-VL pipeline usage, закреплённый Git commit — revision dab3fe35379033fdcb2d0e9572fac0b36c9a9ebf. Получено 02.10.2026.
- PaddleOCR — Installation, dependency group doc-parser — revision dab3fe35379033fdcb2d0e9572fac0b36c9a9ebf. Получено 02.10.2026.
- PaddleOCR-VL-1.6 — карточка автора с командами и авторскими оценками — revision c5630abae1d940eafe0697512a0325494b02ab42. Получено 02.10.2026.
- PaddleOCR-VL-1.6 — LICENSE на ревизии модели — revision c5630abae1d940eafe0697512a0325494b02ab42. Получено 02.10.2026.
- PaddleOCR-VL-1.6 — конфигурация весов — revision c5630abae1d940eafe0697512a0325494b02ab42. Получено 02.10.2026.
- Hugging Face — машинный инвентарь ревизии PaddleOCR-VL-1.6 — revision c5630abae1d940eafe0697512a0325494b02ab42. Получено 02.10.2026.
- PaddleOCR — реализация PaddleOCRVL, закреплённый commit — revision dab3fe35379033fdcb2d0e9572fac0b36c9a9ebf. Получено 02.10.2026.