Nougat OCR: возможности, установка, ограничения и работа с научными PDF

Nougat OCR — не обычная программа для сканирования и не настольный PDF-редактор. Под этим названием обычно имеют в виду проект Nougat: Neural Optical Understanding for Academic Documents от Meta AI Research и его Python-пакет nougat-ocr. Модель получает страницы научного PDF как изображения и генерирует структурированный текст с формулами и таблицами в разметке, близкой к Mathpix Markdown. Это полезно для исследовательских пайплайнов, но накладывает ограничения: продукт ориентирован прежде всего на научные публикации, лучше работает с английским текстом, не заменяет универсальный OCR и не предлагает привычного графического редактора PDF.

ПараметрАктуальная характеристика
Официальное названиеNougat: Neural Optical Understanding for Academic Documents; имя пакета — nougat-ocr
РазработчикMeta Platforms, Inc. и исследовательские авторы проекта
НазначениеПреобразование научных PDF в структурированный MMD/Markdown с математическими выражениями и таблицами
Основной интерфейсКомандная строка; дополнительно локальный HTTP API
Актуальный пакет PyPI0.1.17 от 4 октября 2023 года
Модели0.1.0-small по умолчанию и 0.1.0-base
ЛицензияКод MIT; веса моделей CC BY-NC 4.0
РегистрацияДля локального запуска не требуется
Ключевое ограничениеЛучший результат ожидается на англоязычных научных документах, близких к данным arXiv и PMC

Скачать Nougat OCR

Бесплатно
В реестре российского ПО
Чистая установка

Новейшая версия для Виндовс, macOS и Линукс. Удобный редактор PDF под российские реалии.

⬇ Скачать PDF Commander бесплатно

⬇ Скачать Nougat OCR

Безопасный путь получения Nougat состоит из двух официальных каналов. Стабильный опубликованный пакет называется nougat-ocr и размещён в Python Package Index; текущая публикация PyPI — версия 0.1.17 от 4 октября 2023 года. Второй путь — официальный репозиторий facebookresearch/nougat, откуда пакет можно установить непосредственно из исходников. Важно использовать именно имя nougat-ocr: слово Nougat встречается и у других Python-пакетов и проектов, поэтому сокращённая команда с чужим именем может поставить не то программное обеспечение.

У проекта нет отдельного установщика EXE, DMG или мобильного приложения. Публикуемый wheel имеет платформенную метку py3-none-any, однако фактическая совместимость зависит от PyTorch и бинарных зависимостей, используемых для рендеринга PDF. Поэтому «универсальный wheel» не означает одинаково беспроблемный запуск на любой ОС.

При первом реальном распознавании, если checkpoint ещё не найден локально, Nougat создаёт каталог модели в кэше PyTorch и загружает пять файлов checkpoint с официального раздела GitHub Releases. По умолчанию выбирается модель 0.1.0-small; базовую модель можно указать отдельно. Это означает, что первоначальная установка пакета и первый запуск — разные этапы: сам wheel невелик, а рабочая модель загружается дополнительно.

Что такое Nougat OCR

Официальное имя Nougat расшифровывается как Neural Optical Understanding for Academic Documents. Проект представлен авторами Lukas Blecher, Guillem Cucurull, Thomas Scialom и Robert Stojnic как визуальная модель для OCR научных документов. Архитектурно она относится к подходу, близкому к Donut: визуальный Transformer-кодировщик получает изображение страницы, а авторегрессионный текстовый декодировщик генерирует последовательность разметки. В отличие от классического OCR, который в первую очередь пытается вернуть символы и координаты строк, Nougat ориентирован на восстановление содержимого научной страницы как связного структурированного представления.

Это принципиально отличает Nougat от программ вроде PDF-ридеров. Он не предназначен для комфортного чтения PDF, аннотирования, подписания, перестановки страниц или редактирования исходного файла. Задача модели — извлечь содержание документа в машинно обрабатываемый текст, включая формулы и табличные конструкции, там, где простое копирование из PDF часто ломает семантику.

Текущий статус неоднозначен, но его можно описать точно. PyPI-релиз 0.1.17 не менялся с 2023 года. В официальном репозитории при этом был коммит в main 21 февраля 2025 года, а в 2026 году продолжали появляться pull request, включая предложения по совместимости pypdfium2 и CI. Формального объявления о прекращении проекта нет. Следовательно, Nougat корректнее считать доступным исследовательским open-source инструментом с редкими обновлениями, а не активно развиваемым потребительским приложением с регулярным циклом релизов.

Хронология развития и поддержки

ПериодСобытиеПрактический смысл
Август 2023Опубликована работа Nougat и открыты модели 0.1.0-small и 0.1.0-baseСформировалась исходная архитектура и формат рабочего процесса PDF → MMD
Сентябрь 2023В код добавлена поддержка устройства MPSApple Silicon может использовать аппаратное ускорение через PyTorch MPS
Октябрь 2023Выпущен nougat-ocr 0.1.17 на PyPIЭто по-прежнему последняя опубликованная версия пакета
Февраль 2025В main появился обслуживающий коммит по зависимостямИсходники новее опубликованного wheel, хотя полноценного нового релиза не было
2025–2026Пользователи фиксируют проблемы из-за дрейфа pypdfium2 и других зависимостей; предлагаются исправленияДля новой установки особенно важны изоляция окружения и фиксация проверенного набора версий

Основные функции Nougat OCR

Преобразование научного PDF в MMD

Основная операция запускается над одним или несколькими PDF. Nougat создаёт для каждого обработанного документа файл с расширением .mmd. Разметка описывается разработчиками как лёгкий формат, в основном совместимый с Mathpix Markdown; для таблиц используются LaTeX-подобные конструкции. Практически это означает, что результат удобнее обычного TXT для последующей работы с научным контентом: математические выражения не обязаны превращаться в набор случайных символов, а логическая структура сохраняется лучше, чем при простом извлечении текстового слоя.

Распознавание формул и таблиц

Ключевая специализация Nougat — страницы, где обычному OCR трудно сохранить математическую семантику. Модель обучена генерировать структурированный текст по пикселям страницы, поэтому формулы рассматриваются не как отдельная надстройка к распознанным буквам, а как часть последовательности разметки. Аналогично таблица может быть представлена структурой, а не плоским набором строк. Однако это генеративная модель: результат нужно проверять, особенно если таблица сложная, документ существенно отличается от научных статей обучающего корпуса или страница содержит необычную верстку.

Пакетная обработка

CLI принимает отдельный PDF, несколько PDF, каталог либо текстовый список путей. При обработке каталога Nougat рекурсивно собирает файлы с расширением .pdf. Если результат для документа уже находится в выходной папке, повторный расчёт можно пропустить; параметр recompute заставляет пересчитать документ заново. Такой режим удобен для локального корпуса статей: пакетный запуск не требует вручную открывать каждый файл.

Выбор страниц

Для одиночного PDF параметр pages позволяет задать отдельные номера и диапазоны, например страницы 1–4 и 7. Это полезно при диагностике: вместо повторного запуска на книге или диссертации можно отдельно проверить проблемный фрагмент. Ограничение существенное — выбор страниц предназначен для одного входного PDF, а не для произвольного набора документов в одном вызове.

Две официальные модели

В исходном CLI предусмотрены теги 0.1.0-small и 0.1.0-base, причём small используется по умолчанию. Base выбирается отдельным параметром. Это не «редакции» с разной лицензией и не тарифные планы: это checkpoints разного размера и вычислительной нагрузки. При оценке результатов важно фиксировать выбранный тег, иначе сравнение запусков может быть некорректным.

Постобработка Markdown и контроль отказов

По умолчанию включена постобработка, приводящая вывод к более совместимому Markdown. Её можно отключить. Отдельно действует эвристика выявления неудачного вывода и повторов: при подозрительном результате страница может быть помечена как пропущенная. Опция no-skipping отключает эту эвристику. Разработчики прямо рекомендуют её как диагностический шаг, если появляются многочисленные MISSING_PAGE на подходящих документах.

Локальный HTTP API

Дополнительный набор зависимостей api устанавливает FastAPI, Uvicorn и поддержку multipart. Команда nougat_api поднимает сервис на порту 8503; документация показывает запрос к 127.0.0.1 и endpoint /predict/. API принимает PDF, может ограничить диапазон start/stop и возвращает строку с Markdown. В текущем коде CORS разрешён для localhost и 127.0.0.1. Такой режим удобен для интеграции с собственным приложением, но сам по себе не превращает Nougat в защищённый многопользовательский сервер.

Подготовка датасетов, обучение и оценка

Репозиторий включает инструменты для исследовательского сценария: подготовку датасета из PDF и HTML, создание индексов JSONL, обучение и оценку модели. Для подготовки набора предусмотрены отдельные зависимости, а также внешние инструменты LaTeXML и pdffigures2. Это уже не функция обычного пользователя, а инфраструктура для разработчиков и исследователей, которые хотят дообучать модель или воспроизводить эксперименты.

Интерфейс и удобство использования

Главный интерфейс Nougat — командная строка. В типичном сценарии пользователь задаёт путь к PDF и выходному каталогу, после чего видит журнальные сообщения и индикатор прогресса. Настройки оформлены как параметры CLI: размер батча, checkpoint, тег модели, выходной каталог, принудительный пересчёт, точность float32, постобработка Markdown, отключение эвристики пропуска и выбор страниц. Это прозрачно для разработчика, но заметно сложнее для человека, привыкшего к кнопкам «Открыть» и «Распознать».

У Nougat нет встроенного визуального редактора зон, инспектора распознанных блоков или режима параллельного просмотра «страница слева — исправляемый текст справа». Поэтому удобство зависит от среды вокруг продукта: MMD обычно открывают в текстовом редакторе, Markdown/LaTeX-инструменте или передают в собственный pipeline. Проверка результата — отдельная операция.

Локальный API уменьшает зависимость пользовательского интерфейса от Python: после запуска сервиса другое приложение может отправлять PDF по HTTP. Но API не содержит аутентификации и в исходном виде рассчитан на локальное использование. Если публиковать его в сеть, защиту, ограничения размера, журналирование, TLS и контроль доступа должен добавлять владелец инфраструктуры.

Поддерживаемые форматы и совместимость

Вход

Основной пользовательский вход — PDF. CLI явно описывает позиционный аргумент как PDF(s), а логика пакетной обработки ищет .pdf. Модель в библиотечном сценарии фактически работает с изображением страницы, однако официальный CLI не позиционируется как универсальная команда для прямого импорта PNG или JPEG. Если требуется распознавать одиночные изображения, логичнее использовать модель через Transformers или собственный код, а не приписывать это штатному PDF-интерфейсу.

Выход

Штатный файловый результат — .mmd. При выводе в консоль тот же текст можно перенаправить в другой процесс. В API результат возвращается как строка Markdown и одновременно кэшируется на диске. Форматы DOCX, XLSX, searchable PDF, EPUB или обычный редактируемый PDF Nougat напрямую не экспортирует. Для них нужен последующий конвертер или другой OCR-инструмент.

Языки

Официальный FAQ предупреждает, что модель обучалась на научных статьях из arXiv и PMC, лучше всего работает с английскими материалами, а некоторые другие языки на латинице могут сработать. Китайский, русский и японский разработчики прямо относят к неподдерживаемым сценариям. Поэтому использовать Nougat как основной OCR для русскоязычного архива не следует: его специализация — не многоязычность, а структура научного документа.

Интеграция через Transformers

Nougat включён в Hugging Face Transformers как мультимодальная модель. Современная документация Transformers показывает обработчик NougatProcessor и прямую загрузку facebook/nougat-base для преобразования изображения страницы в текст. Это отдельный путь интеграции: он удобен разработчикам, которым не нужен исторический CLI целиком. При этом официальный пакет nougat-ocr жёстче привязан к старому диапазону Transformers, поэтому смешивать две схемы установки в одном окружении без проверки версий не стоит.

Платформы

Паспорт обратимости операций

ОперацияМеняется исходный PDFЧто можно восстановитьГлавный риск
CLI-распознаваниеНетИсходный PDF остаётся отдельным файлом; MMD можно удалить и пересоздатьОшибки OCR переходят в производные данные, если их не проверить
recomputeНетМожно сохранить старую MMD-копию и сравнить с новойПри записи в тот же выходной путь прежний результат будет заменён
Выбор другой моделиНетРезультаты small и base можно хранить параллельноНельзя считать разницу между ними автоматическим доказательством правильности
Локальный APIНетAPI хранит копию PDF и постраничные MMD в своей рабочей структуреНа диске остаются дополнительные копии документов
Экспорт MMD дальшеНетИсходный MMD остаётся контрольной точкойСледующий конвертер может потерять формулы, таблицы или служебные маркеры

Практическая схема работы должна быть неразрушающей: исходный PDF хранится отдельно, вывод Nougat — отдельно, а любые преобразования MMD в HTML, DOCX или другие форматы выполняются уже над копией результата. Это позволяет повторить распознавание с другой моделью или версией зависимостей и сравнить изменения.

Производительность и стабильность

Nougat — нейросетевая генеративная модель, поэтому скорость и память зависят от устройства сильнее, чем у простого PDF-ридера. В коде автоматически проверяется CUDA; при наличии GPU размер батча рассчитывается от объёма VRAM. Для Apple Silicon предусмотрен MPS и эвристический batch size 4. Если аппаратного ускорения нет, batch size становится 1, а программа сама выводит предупреждение, что конвертация на CPU очень медленная.

Точных официальных норм «страниц в минуту» или минимального объёма VRAM разработчики не публикуют. Поэтому нельзя обещать определённую скорость на видеокарте или процессоре. Для длинных документов сначала обработайте несколько репрезентативных страниц и лишь затем весь корпус.

В стабильности главный современный риск связан не столько с самой моделью, сколько с дрейфом зависимостей. В 2025 году в официальном issue tracker описывались ошибки совместимости с новыми версиями pypdfium2 и сбои API. В 2026 году оставались открыты pull request, предлагающие ограничить версию pypdfium2 и адаптировать код к изменившемуся API. Текущий setup.py при этом не фиксирует верхнюю границу pypdfium2. Из этого следует практический вывод: новая установка из последнего PyPI не гарантирует воспроизводимость среды 2023 года.

Ещё один известный класс проблем — MISSING_PAGE и ложные срабатывания эвристики повторов. В README прямо указано, что на некоторых устройствах эвристика отказа работает неправильно; разработчики предлагают проверить режим no-skipping. Но этот параметр не «лечит OCR»: он лишь запрещает автоматическому фильтру отбрасывать подозрительные страницы. После такого запуска результат нужно особенно внимательно сравнить с оригиналом.

Лицензирование и версии

Кодовая база Nougat распространяется по лицензии MIT. Это разрешительная лицензия для исходного кода. Веса моделей лицензированы отдельно — Creative Commons Attribution-NonCommercial 4.0. Именно это разделение критично: свободное использование и модификация кода по MIT не превращают веса модели в актив с неограниченным коммерческим применением.

CC BY-NC 4.0 разрешает использование лицензированного материала в некоммерческих целях при соблюдении условий атрибуции. Если Nougat планируется встроить в коммерческий сервис, внутреннюю платную систему или продукт для клиентов, лицензионную допустимость конкретного сценария нужно оценивать отдельно. В статье нельзя подменять такую проверку утверждением «open source значит можно всё».

Платы за скачивание пакета и локальный запуск нет, регистрации нет, пробного периода нет. Это не freemium: отсутствуют бесплатный и платный тарифы самого Nougat. Расходы возникают на инфраструктуру — рабочую станцию, GPU, хранение, инженерное сопровождение и поддержку совместимого окружения.

Версии тоже нужно различать. 0.1.17 — версия Python-пакета на PyPI. 0.1.0-small и 0.1.0-base — теги модельных checkpoint. Они не обязаны развиваться синхронно. При документировании пайплайна стоит фиксировать обе сущности: версию пакета или commit исходников и конкретный тег модели.

Системные требования

Python и зависимости

Метаданные PyPI для 0.1.17 указывают Python 3.7 или новее и классификаторы Python 3.7–3.10. В актуальном README репозитория одновременно присутствует значок Python 3.9+. Это не идеально согласованные требования. Для консервативной установки старого пакета наиболее предсказуемой отправной точкой является отдельное окружение Python 3.10: оно входит в классификаторы PyPI и соответствует эпохе публикации. Это практический выбор совместимости, а не новый официальный минимум.

Текущий setup.py ограничивает Transformers диапазоном от 4.25.1 до 4.38.2 и перечисляет timm 0.5.4, orjson, OpenCV headless, datasets с vision, Lightning, NLTK, RapidFuzz, SentencePiece, sconf, Albumentations, pypdf и pypdfium2. Для API добавляются FastAPI, Uvicorn и python-multipart. Для подготовки датасетов предусмотрен отдельный набор библиотек.

GPU, MPS и CPU

CUDA поддерживается через PyTorch. На Windows README отдельно рекомендует перед установкой Nougat поставить корректную сборку PyTorch, если нужен GPU. Apple Silicon может использовать MPS. CPU допустим, но код проекта сам предупреждает о очень медленной конвертации. Официального требования к конкретной видеокарте, CUDA-версии, объёму VRAM или оперативной памяти нет.

Дисковое пространство и сеть

Нужны место для Python-окружения, зависимостей, checkpoint и результатов. Точный минимальный объём разработчики не задают. Первый запуск модели требует HTTPS-доступа к GitHub Releases, если checkpoint не задан вручную. После сохранения всех файлов модели стандартный CLI может обрабатывать локальные PDF без облачной отправки содержимого.

Операционная система

Карта критических зависимостей

ЗависимостьКогда нужнаЧто произойдёт при проблемеКак снизить риск
Python-окружениеВсегдаКонфликт пакетов или невозможность импортаОтдельный venv/conda и зафиксированные версии
PyTorchИнференс моделиНет GPU-ускорения или модель не запускаетсяПодбирать сборку под ОС и CUDA; на Windows ставить её до Nougat
pypdfium2Растеризация PDFОшибки загрузки и рендеринга страницХранить проверенную версию окружения, не обновлять зависимость вслепую
GitHub ReleasesПервичная загрузка checkpointМодель не будет автоматически полученаЗаранее загрузить checkpoint и задать локальный путь
Файловая системаВывод CLI и кэш APIПотеря результата или лишние копии конфиденциальных PDFРазделить исходники, результаты и временное хранилище; настроить права доступа
Дополнительный API-стекТолько nougat_apiHTTP endpoint не стартует или падает на обработкеНе ставить api extras, если интеграция по HTTP не нужна

Преимущества и недостатки Nougat OCR

Плюсы и минусы

• Специализация на научных документах. Цель модели — извлекать содержимое страниц, где особенно важны формулы и таблицы.

• Локальная обработка. После загрузки checkpoint стандартный CLI не требует отправлять каждый PDF в облачный OCR-сервис.

• Структурированный выход. MMD полезнее простого TXT для дальнейшей обработки формул, таблиц и научного текста.

• Автоматизация. Есть CLI, пакетная обработка, выбор страниц и локальный API.

• Открытый код. Код доступен по MIT, его можно изучать и адаптировать.

• Интеграция с Transformers. Модель можно использовать отдельно от исторического CLI в современном ML-коде.

Минусы

• Узкий языковой профиль. Русский, китайский и японский официально не относятся к рабочему сценарию; лучше всего поддерживается английский научный текст.

• Нет настольного GUI. Исправление OCR и визуальная сверка не встроены в продукт.

• Старый PyPI-релиз. Последняя опубликованная версия пакета датирована 2023 годом.

• Дрейф зависимостей. Современные версии pypdfium2 и других библиотек могут ломать установку или выполнение.

• Высокая вычислительная нагрузка. CPU поддерживается, но сам проект предупреждает о медленной работе без GPU.

• Не универсальный PDF-инструмент. Нет редактирования, подписания, аннотирования, создания searchable PDF и офисного экспорта.

• Ограничение лицензии весов. CC BY-NC требует отдельной оценки для коммерческого применения.

Сравнение с аналогами

ИнструментОсновная задачаФормулы и структураЛокальностьТипичный результат
Nougat OCRНаучные PDF → структурированная разметкаОдна из главных целейЛокальная модельMMD/Markdown
MathpixOCR математики и документов через коммерческий сервис/APIСильный акцент на формулах, таблицах и научных форматахОсновные официальные API — облачныеMarkdown, LaTeX, MathML, DOCX, HTML и другие форматы в зависимости от endpoint
OCRmyPDFДобавление OCR-слоя в сканированный PDFОриентирован не на восстановление LaTeX-семантики, а на searchable PDFЛокальная обработкаPDF с текстовым слоем
ABBYY FineReader PDFУниверсальный OCR, конвертация и работа с PDFСохраняет структуру документа, но продукт шире научного MarkdownНастольное приложениеРедактируемые офисные форматы и PDF
Sumatra PDFБыстрый просмотр документовНе выполняет OCR и не восстанавливает формулыЛокальный просмотрОткрытие и чтение исходного файла

Если задача — получить разметку статьи с формулами и затем обработать её программно, Nougat занимает отдельную нишу. Mathpix даёт более сервисно-ориентированный путь и поддерживает много выходных форматов, но использует коммерческую модель оплаты. OCRmyPDF лучше подходит, когда важно сохранить PDF как PDF и добавить поиск по скану, а не преобразовать статью в MMD.

Для офисного OCR и ручной проверки удобнее смотреть в сторону ABBYY FineReader: это иной класс продукта с графическим интерфейсом, редактированием и экспортом. Если нужен полноценный PDF-редактор, а OCR — лишь одна из функций, релевантнее Adobe Acrobat Pro или PDF-XChange Editor. Для знакомства с классическим OCR без нейросетевого восстановления научной разметки на сайте также есть обзор OCR CuneiForm.

С Sumatra PDF прямое сравнение ограничено: это не конкуренты в одной функции. Sumatra PDF нужен для быстрого чтения PDF и других документов; Nougat — для извлечения структурированного научного содержания. Практичная связка выглядит так: исходник просматривают в ридере, нужный PDF или диапазон страниц отправляют в Nougat, а MMD проверяют отдельно.

Инструкция по установке

Подготовка изолированного окружения

1. Установите Python в отдельную рабочую среду. Для консервативной совместимости пакета 0.1.17 разумно начать с Python 3.10.

2. Создайте виртуальное окружение venv или conda и активируйте его. Не устанавливайте Nougat в системный Python, если там уже работает другой ML-стек.

3. Если нужен CUDA-GPU на Windows, сначала установите подходящую для вашей системы сборку PyTorch по официальной инструкции PyTorch. README Nougat отдельно предупреждает об этом порядке.

4. После этого установите пакет командой pip install nougat-ocr. Для HTTP API используется вариант pip install «nougat-ocr[api]».

5. Проверьте, что вызывается правильный инструмент: команда nougat —help должна показать параметры PDF, batchsize, checkpoint, model, out, recompute, full-precision, markdown, no-skipping и pages.

Первый запуск

1. Возьмите короткий англоязычный научный PDF, близкий к типу документов arXiv или PMC. Не начинайте проверку с русского скана или рекламной брошюры.

2. Создайте пустую папку для результата.

3. Запустите nougat путь_к_файлу.pdf -o выходная_папка.

4. При отсутствии локального checkpoint программа автоматически скачает файлы модели 0.1.0-small из официальных GitHub Releases.

5. После завершения откройте созданный .mmd и сравните текст, формулы, таблицы и порядок блоков с исходным PDF.

Установка из официального репозитория

Вместо PyPI README допускает установку напрямую из GitHub. Этот путь имеет смысл, если нужна версия main с изменениями после 0.1.17. Но main нельзя автоматически считать более стабильным релизом: там могут быть изменения, не прошедшие отдельный цикл публикации. В производственной среде лучше фиксировать конкретный commit.

Удаление

Python-пакет удаляется обычной командой pip uninstall nougat-ocr внутри того же окружения. Если виртуальное окружение создавалось только для Nougat, безопаснее удалить весь каталог окружения после сохранения нужных результатов. Checkpoint хранится отдельно в кэше PyTorch, поэтому удаление пакета не обязательно освобождает место модели; перед очисткой проверьте путь checkpoint. Исходные PDF CLI не модифицирует.

Практические кейсы

Извлечение формул из англоязычной статьи

Цель. Получить редактируемую структурированную разметку статьи для последующей индексации или ручной подготовки заметок.

1. Подготовка: выберите PDF с машинной или качественной печатной версткой и несколькими математическими выражениями.

2. Шаги: запустите распознавание стандартной моделью small в отдельную выходную папку.

3. Проверка: сопоставьте минимум одну простую и одну многострочную формулу, ссылки на формулы и соседний текст.

4. Ограничение: даже правдоподобная LaTeX-запись может содержать ошибку символа, индекса или оператора; математический смысл нужно проверять по оригиналу.

Диагностика MISSING_PAGE на нескольких страницах

Цель. Отличить ложное срабатывание эвристики от документа, который действительно слишком далёк от обучающего домена.

1. Подготовка: выпишите номера пропущенных страниц и убедитесь, что это англоязычный научный материал, а не обложка или иллюстративная вставка.

2. Шаги: повторите обработку только этих страниц с параметром no-skipping.

3. Проверка: сравните полученный текст со страницами, обращая внимание на повторы и обрывы генерации.

4. Ограничение: no-skipping отключает фильтр, а не улучшает способность модели распознавать нетипичную страницу.

Пакетная обработка локального корпуса

Цель. Превратить набор научных PDF в MMD для локального поиска или RAG-пайплайна.

1. Подготовка: отделите исходные PDF от выходной директории и сохраните список версий Python, nougat-ocr, PyTorch и модели.

2. Шаги: сначала обработайте небольшую репрезентативную выборку, затем передайте CLI весь каталог.

3. Проверка: посчитайте, сколько PDF получили MMD, и отдельно найдите в выводе маркеры MISSING_PAGE.

4. Ограничение: массовое наличие файлов .mmd не означает, что все страницы распознаны корректно; контроль качества остаётся обязательным.

Навигатор по сбоям

СимптомПервая проверкаБезопасное действиеКонтроль результата
Команда nougat не найденаАктивировано ли нужное виртуальное окружениеПроверить pip и путь исполняемого файла, не ставить случайный пакет nougatnougat —help показывает OCR-параметры проекта Meta
Модель считает только на CPUВидит ли PyTorch CUDA или MPSИсправить установку PyTorch до изменения NougatПри запуске нет предупреждения No GPU found
Ошибка pypdfium2Версии Python и pypdfium2, текст tracebackВоспроизвести в чистом окружении и зафиксировать совместимый набор зависимостейТестовый PDF полностью растеризуется и создаёт MMD
Много MISSING_PAGEЯзык и тип документаНа подходящем научном PDF повторить проблемные страницы с no-skippingНет обрыва, повторов и пропавших формул
API возвращает ошибкуРаботает ли тот же PDF через CLIСначала локализовать проблему между моделью и API-слоемCLI и API дают сопоставимый текст на одном диапазоне страниц

Часто задаваемые вопросы

Что произойдёт, если MMD для этого PDF уже существует?

При заданной выходной папке CLI проверяет одноимённый .mmd и по умолчанию пропускает уже рассчитанный документ. Для принудительного повторного распознавания предназначен параметр recompute. Если важна история изменений, старый MMD лучше заранее сохранить под другим именем.

Можно ли вывести результат без создания выходной папки?

Да. Если параметр out не задан, CLI предупреждает об отсутствии выходного каталога и печатает результат в консоль. Это удобно для перенаправления текста в другой процесс, но для длинных документов отдельный файл обычно проще проверять и архивировать.

Поддерживается ли собственный checkpoint?

Да. CLI принимает путь через параметр checkpoint. Если путь не задан или не содержит модели, встроенная логика ищет стандартное расположение и при необходимости загружает официальный checkpoint. Для воспроизводимого pipeline путь и модель лучше фиксировать явно.

Можно ли выбрать страницы сразу в нескольких PDF?

Штатный параметр pages применяется только когда входной PDF один. Для пакетной выборочной обработки нескольких документов удобнее запускать отдельные команды или написать обёртку, которая формирует вызов для каждого файла.

Есть ли риск конфликта одинаковых имён файлов?

Выходной путь CLI строится из имени PDF без расширения. Если в разных исходных каталогах есть документы с одинаковым basename и они направлены в один output, возможен конфликт результатов. Для корпуса с повторяющимися именами лучше заранее нормализовать структуру или разводить выходные каталоги.

Где локальный API хранит загруженные документы?

Текущий app.py создаёт каталог ./pdfs и подпапку на основе MD5 содержимого. Там сохраняются doc.pdf, doc.mmd, постраничные MMD и миниатюра. Это следует учитывать при обработке конфиденциальных материалов и при настройке автоматической очистки.

Можно ли использовать Nougat только как библиотечную модель, без исторического CLI?

Да. Nougat присутствует в Hugging Face Transformers, где изображение страницы можно подать через NougatProcessor и модель семейства VisionEncoderDecoder. Такой вариант удобен разработчикам, но его зависимости и API нужно вести отдельно от окружения старого пакета nougat-ocr.

Почему имя пакета важно проверять особенно внимательно?

Официальный пакет называется nougat-ocr, тогда как слово nougat используется и в других проектах Python. Перед установкой и диагностикой нужно проверять происхождение пакета, его entry point и официальный репозиторий, иначе можно разбирать ошибку совершенно другого программного обеспечения.

Вывод

Nougat OCR подходит разработчикам, исследователям и техническим командам, которым нужно локально преобразовывать преимущественно англоязычные научные PDF в структурированную разметку с формулами и таблицами. Его сильная сторона — не классический «OCR любого скана», а восстановление научного содержания в формате, удобном для анализа, индексации и последующих ML-процессов.

Продукт хуже подходит офисному пользователю, которому нужен графический интерфейс, русский язык, ручная коррекция зон, экспорт в Word или searchable PDF. Он также требует осторожности в коммерческих сценариях из-за отдельной некоммерческой лицензии весов и в новых окружениях из-за старого PyPI-релиза и дрейфа зависимостей.

Выбор альтернативы зависит от конечного формата. Для локального searchable PDF рациональнее OCRmyPDF; для универсального настольного OCR — ABBYY FineReader; для облачного распознавания математики с API и большим выбором экспорта — Mathpix. Sumatra PDF остаётся уместным как быстрый просмотрщик исходного документа, но не заменяет Nougat в распознавании. Если цель — машинно читаемая научная разметка и команда готова поддерживать Python/ML-среду, Nougat разумно внедрять как контролируемый компонент pipeline, а не как «установил и забыл» приложение.


Ваш адрес email не будет опубликован. Обязательные поля помечены *