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 |
| Актуальный пакет PyPI | 0.1.17 от 4 октября 2023 года |
| Модели | 0.1.0-small по умолчанию и 0.1.0-base |
| Лицензия | Код MIT; веса моделей CC BY-NC 4.0 |
| Регистрация | Для локального запуска не требуется |
| Ключевое ограничение | Лучший результат ожидается на англоязычных научных документах, близких к данным arXiv и PMC |
Скачать Nougat OCR
Новейшая версия для Виндовс, macOS и Линукс. Удобный редактор PDF под российские реалии.
Безопасный путь получения 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 | В код добавлена поддержка устройства MPS | Apple 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_api | HTTP 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 |
| Mathpix | OCR математики и документов через коммерческий сервис/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 и путь исполняемого файла, не ставить случайный пакет nougat | nougat —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, а не как «установил и забыл» приложение.