Pix2Text: распознавание текста, формул и структуры документов
Pix2Text — не PDF-ридер и не обычный графический OCR с кнопкой «Открыть файл». Это открытый Python-инструмент, который разбирает изображения и PDF на текст, математические формулы, таблицы и элементы макета, а затем собирает результат в текстовую форму, прежде всего Markdown с LaTeX. Его сильная сторона — научные и технические документы, где простой OCR теряет формулы или смешивает их с обычным текстом. Поэтому оценивать Pix2Text корректнее как программный конвейер распознавания и конвертации, а не как замену настольному просмотрщику PDF.
| Параметр | Актуальное состояние |
|---|---|
| Тип | Открытая Python-библиотека, CLI и локально разворачиваемый HTTP-сервис |
| Разработчик | breezedeus; официальный репозиторий Breezedeus/Pix2Text |
| Актуальная версия пакета | 1.1.7 на PyPI, опубликована 23 августа 2026 года |
| Лицензия ядра | MIT |
| Платформы | Windows, macOS и Linux через Python; пакетные метаданные перечисляют Python 3.8–3.11 |
| Основной ввод | PDF и изображения; в API также объекты Pillow Image |
| Основной вывод | Текст, LaTeX для формул, структурированные объекты Page/Document и Markdown для страниц/PDF |
| Языки OCR | Более 80 при установке многоязычной зависимости; английский и упрощённый китайский входят в базовый сценарий |
| Интернет | Нужен для установки и первоначальной загрузки моделей; после подготовки локальные модели могут работать без отправки документов в облако |
Скачать Pix2Text
Новейшая версия для Виндовс, macOS и Линукс. Удобный редактор PDF под российские реалии.
Безопасный путь получения Pix2Text — официальный пакет PyPI и официальный репозиторий breezedeus/Pix2Text. На дату проверки PyPI публикует версию 1.1.7 в виде исходного архива и универсального Python wheel. Само ядро не распространяется как обычный установщик Windows или DMG: штатная установка выполняется менеджером пакетов Python командой pip install pix2text. Это важное отличие от программ, которые пользователь скачивает как готовое настольное приложение.
Для распознавания языков кроме английского и упрощённого китайского документация предлагает вариант pip install pix2text[multilingual], который добавляет EasyOCR. Для интеграций с VLM/LLM предусмотрен extra pix2text[vlm], а метаданные пакета также содержат extra serve для зависимостей HTTP-сервиса. Если нужна только локальная обработка обычных PDF, формул и страниц, ставить VLM-зависимости нет необходимости.
На macOS существует отдельный проект Pix2Text-Mac с оболочкой в строке меню. Его нельзя считать «версией Pix2Text 1.1.7 для Mac» в том же смысле: это отдельный репозиторий и отдельное приложение, которое использует Pix2Text как зависимость. Аналогично P2T Online Service — отдельный веб-сервис. В этом обзоре под Pix2Text понимается основной Python-пакет и его штатные CLI/API-возможности.
Что такое Pix2Text
Pix2Text, сокращённо P2T, развивается как свободная альтернатива Mathpix для распознавания содержимого технических документов. Проект объединяет анализ макета, распознавание таблиц, OCR обычного текста, обнаружение математических формул и их преобразование в LaTeX. Результат можно получить как строку, набор структурных элементов или Markdown-представление страницы/документа.
Архитектурно это не один монолитный OCR-движок. Для разных задач используются отдельные компоненты: модель анализа макета, модель таблиц, текстовый OCR, Mathematical Formula Detection и Mathematical Formula Recognition. В актуальной документации для формул указаны MFD 1.5 и MFR 1.5; для английского и упрощённого китайского текстового OCR используется CnOCR, а для остальных поддерживаемых языков — EasyOCR. Такая композиция позволяет точнее разделять абзацы, формулы и таблицы, но одновременно увеличивает число зависимостей и моделей, которые нужно скачать и согласовать.
Проект активен. Версия 1.1 добавила полный путь PDF → Markdown и анализ сложной разметки; 1.1.2 интегрировала DocLayout-YOLO; 1.1.3 добавила VLM-интерфейсы для текстово-формульного и табличного распознавания; 1.1.4 перевела стандартные формульные модели на MFD/MFR 1.5; 1.1.5 изменила механизм загрузки моделей через Hugging Face с резервными зеркалами; 1.1.6 упростила конфигурационную инициализацию. В PyPI уже опубликована 1.1.7, хотя публичный RELEASE.md на момент проверки заканчивается описанием 1.1.6. Это означает рассинхронизацию журнала изменений с пакетом, а не прекращение разработки.
Основные функции Pix2Text
PDF и страницы со сложной разметкой
Метод recognize_pdf открывает PDF через PyMuPDF, обрабатывает все страницы либо выбранные номера и возвращает объект Document. Для сохранения документа в Markdown используется метод to_markdown. Это подходит и для сканированных PDF, в которых нет готового текстового слоя: Pix2Text работает с изображением страницы, анализирует зоны и распознаёт содержимое по типу.
Для отдельного скриншота или страницы предназначен recognize_page. На этом уровне распознаются заголовки, текстовые блоки, формулы, таблицы и рисунки. Пользователь может сохранить отладочные изображения с найденными областями, чтобы понять, где ошибка возникла раньше: на стадии разбиения макета, выделения формулы, OCR текста или таблицы. Такой режим особенно полезен разработчику интеграции, но не заменяет визуальный редактор OCR-зон.
Формулы и смешанный текст
Pix2Text различает сценарии formula, text и text_formula. Первый предназначен для чистой математической формулы, второй — для обычного текста, третий — для строки или фрагмента, где текст перемежается встроенными формулами. Для технических статей это критично: обычный OCR способен вернуть символы формулы как случайную последовательность, тогда как Pix2Text сначала обнаруживает математический фрагмент, а затем передаёт его специализированной модели MFR и возвращает LaTeX.
У страницы есть параметры, позволяющие отдельно указать, содержат ли заголовки или текст формулы. Порог объединения встроенных формул с текстовыми строками также настраивается. Эти параметры дают контроль над неоднозначными макетами, но требуют понимания структуры документа: неверная настройка способна ухудшить результат.
Таблицы и структура документа
Табличное распознавание включено по умолчанию в конфигурационном режиме. Для таблицы движок может сформировать текстовое/Markdown-представление и служебную структуру; при необходимости таблицу можно сохранить как изображение вместо попытки распознавать её содержимое. Последний вариант полезен, если таблица слишком сложная и важнее не исказить её, чем получить редактируемый текст.
Анализ макета также позволяет сохранять рисунки как отдельные элементы Markdown-результата. Pix2Text не превращает научную публикацию в исходный DOCX с точным восстановлением всех шрифтов и плавающих объектов: его целевой результат — семантически полезный Markdown с текстом, формулами и связанными изображениями.
CLI, Python API и HTTP
После установки появляется команда p2t. Подкоманда predict принимает файл изображения, PDF или каталог изображений, язык, тип входа, устройство вычислений, размер предварительного масштабирования, каталог Markdown-результата и каталог отладочных данных. Для автоматизации это удобнее, чем писать Python-скрипт для каждой задачи.
Подкоманда serve поднимает FastAPI-сервис. Документация прямо предупреждает, что этот HTTP-интерфейс принимает изображения и в текущем виде не поддерживает PDF как HTTP-ввод. Для PDF остаются Python API и CLI. Это важное ограничение: сам движок умеет PDF, но сетевой слой не равен по возможностям локальному API.
Интерфейс и удобство использования
У основного Pix2Text нет полноценного настольного интерфейса. Рабочие «зоны» — Python API, терминал и при необходимости HTTP endpoint. В CLI логика достаточно последовательна: пользователь выбирает тип содержимого, языки, входной путь и каталог результата. Но по удобству это инструмент для разработчика или технического пользователя, а не OCR-программа для оператора, который привык мышью менять зоны страницы и подтверждать сомнительные символы.
Порог входа выше среднего по сравнению с ABBYY FineReader: нужно иметь рабочую среду Python, понимать виртуальные окружения и устанавливаемые extras, а при проблемах — читать журнал зависимостей PyTorch, OpenCV, ONNX Runtime и OCR-компонентов. Компенсация за этот порог — программируемость. Настройки можно хранить рядом с кодом проекта, воспроизводить на сервере и применять к тысячам однотипных файлов без ручного интерфейса.
Онлайн-сервис P2T снижает порог входа, но это уже отдельный способ использования: официальный проект описывает бесплатный лимит 10 000 символов в день на аккаунт и ограничение веб-версии английским и упрощённым китайским. Официальная документация доступна на китайском и английском; отдельной русской настольной локализации у ядра нет, поскольку у него вообще нет штатного GUI. Для чувствительных документов локальная библиотека принципиально отличается: после загрузки моделей можно строить обработку без отправки исходника во внешний сервис. Если задействовать VLM через API стороннего поставщика, эта локальность перестаёт быть гарантированной — правила передачи и хранения определяются выбранным VLM-провайдером. В проверенной публичной документации P2T не заявлен срок хранения загрузок онлайн-сервиса, поэтому для конфиденциальных файлов безопаснее использовать локальные модели или отдельно оценивать политику выбранного внешнего сервиса.
Поддерживаемые форматы и совместимость
На уровне публичного API Pix2Text принимает путь к PDF, путь к изображению или объект Pillow Image. Универсальный метод recognize различает типы pdf, page, text_formula, formula и text. Документация не заявляет поддержку DOCX, XLSX, EPUB или DjVu как прямого входа. Такие документы перед обработкой нужно преобразовать в PDF или растровые страницы другим инструментом.
Для PDF основной выход — каталог Markdown, который создаётся из объекта Document. Для страницы аналогично можно получить Markdown через Page.to_markdown. Для более узких режимов возвращается текст, список или структурированный результат в зависимости от функции. Математические выражения представлены LaTeX; изображения и части макета сохраняются так, чтобы Markdown мог ссылаться на связанные ресурсы.
Если задача состоит не в OCR, а в открытии десятков форматов для чтения, Pix2Text не конкурирует с Okular или Sumatra PDF. Это конвертер распознанного содержания, а не универсальный просмотрщик. Для редактирования существующего PDF как визуального документа логичнее класс редакторов, например PDF-XChange Editor.
Пакет setup.py перечисляет Windows, macOS и Linux. Классификаторы PyPI явно называют Python 3.8, 3.9, 3.10 и 3.11, при этом поле requires_python не задаёт жёсткой границы. Поэтому Python 3.12 и новее нельзя автоматически считать неподдерживаемыми, но и обещать полную совместимость на основании метаданных нельзя. Для производственного развертывания разумно фиксировать версию Python и зависимостей в виртуальном окружении.
Производительность и стабильность
Производительность Pix2Text определяется не только самим пакетом, а цепочкой моделей. Анализ макета, OCR текста, поиск формул, распознавание LaTeX и таблиц выполняются отдельными компонентами. На CPU это означает несколько последовательных этапов инференса; GPU может ускорить часть вычислений, но требует корректной установки CUDA-совместимых зависимостей. По умолчанию устанавливается CPU-вариант ONNX Runtime; документация для GPU предлагает удалить onnxruntime и поставить onnxruntime-gpu.
Модели обычно скачиваются автоматически при первом использовании. Поэтому первая обработка может быть заметно дольше обычной и зависит от доступа к Hugging Face или зеркалам. Начиная с 1.1.5 механизм загрузки переведён на huggingface_hub.snapshot_download с последовательным fallback по зеркалам, что уменьшает зависимость от одного адреса, но не отменяет необходимость получить файлы моделей хотя бы один раз. Для изолированного контура их следует заранее скачать и разместить в ожидаемых каталогах.
Для больших PDF есть два практических ограничения. Во-первых, recognize_pdf проходит страницы поочерёдно, поэтому полный документ на сотни страниц означает длительный суммарный инференс; при необходимости API позволяет указать конкретные page_numbers. Во-вторых, в открытом issue июля 2026 года описан рост использования VRAM при длительной обработке 917-страничного PDF с ONNX Runtime CUDA. Это сообщение относится к Pix2Text 1.1.6 и конкретной среде, а не к универсально воспроизводимому дефекту 1.1.7, однако для пакетной GPU-обработки длинных документов стоит контролировать VRAM и тестировать собственный профиль страниц.
Отдельное текущее ограничение относится к HTTP-сервису: в исходном коде ветки с версией 1.1.7 resized_shape объявлен строкой, но получает целое значение 768 по умолчанию. Открытый issue показывает, что FastAPI из-за этого может вернуть 422, если поле не передано явно. Документированные примеры задают resized_shape и тем самым обходят проблему; клиентам сервиса разумно делать так же.
Лицензирование и версии
Код Pix2Text распространяется по MIT License. Базовый пакет можно устанавливать, изменять и встраивать в собственное ПО в рамках условий этой лицензии. Бесплатная версия не ограничена «семью днями» или числом локально обработанных страниц: модель распространения открытого пакета отличается от пробной лицензии коммерческого редактора.
При этом проект предлагает платные улучшенные модели MFD, MFR и CnOCR. В документации указано, что они имеют разные варианты лицензий: личные и корпоративные, а некоторые каналы продажи предназначены только для некоммерческого персонального использования. Публичная документация не даёт единой фиксированной цены, пригодной для указания в обзоре как универсальной: стоимость и конкретные права нужно сверять в карточке выбранной модели на момент покупки. Бесплатные базовые модели остаются отдельной веткой использования.
P2T Online Service также не равен платной модели. Официальное описание обещает бесплатные 10 000 символов в день на аккаунт и просит не использовать сервис для массовых API-вызовов из-за ограниченных ресурсов. Это лимит веб-сервиса, а не локальной MIT-библиотеки.
На дату обзора PyPI показывает 1.1.7, опубликованную 23 августа 2026 года. В исходном коде main также указан __version__ 1.1.7. При этом GitHub Releases и RELEASE.md всё ещё выделяют 1.1.6 от 7 февраля 2026 года как последнюю подробно описанную версию. Для воспроизводимой инфраструктуры поэтому лучше фиксировать точную версию пакета, а не устанавливать «последнюю» без lock-файла.
Системные требования
Python и операционные системы
Официальный setup.py перечисляет платформы Mac, Linux и Windows. Классификаторы пакета содержат Python 3.8, 3.9, 3.10 и 3.11. Жёсткое requires_python не задано, поэтому это не технический запрет на другие версии, но именно перечисленные версии являются наиболее надёжной отправной точкой для совместимой среды.
Зависимости
В актуальном setup.py среди обязательных компонентов указаны OpenCV, NumPy, Pillow, PyTorch, torchvision, transformers не ниже 4.37.0, PyMuPDF, CnOCR, CnSTD, optimum с ONNX Runtime, pyspellchecker и doclayout-yolo. Для multilingual добавляется EasyOCR. Для HTTP-сервиса package extras включают FastAPI, Uvicorn, python-multipart и Pydantic. Для VLM-интерфейса добавляется LiteLLM.
CPU и GPU
Отдельного минимального объёма RAM, VRAM или свободного диска официальный install-раздел не публикует, поэтому приводить вымышленные цифры некорректно. Базовая ONNX-установка ориентирована на CPU. Для ONNX на GPU документация требует заменить onnxruntime на onnxruntime-gpu; затем совместимость CUDA, драйвера и конкретной версии runtime должна соответствовать окружению пользователя.
Карта критических зависимостей
Python-среда. Pix2Text — библиотека, поэтому её работоспособность зависит от версии интерпретатора и бинарных колёс зависимостей. Без виртуального окружения обновление общего Python или PyTorch может затронуть другие проекты и сам Pix2Text.
Модели. Установка пакета не означает, что все веса уже находятся на диске. При первом запуске компоненты могут обращаться к Hugging Face; при ограниченном интернете модели нужно подготовить заранее. В документации указаны пользовательские каталоги .pix2text, .cnocr и .cnstd, а для Windows — соответствующие каталоги в AppData.
PyTorch/OpenCV/ONNX Runtime. Это наиболее чувствительный слой установки. Ошибка импорта или несовпадение GPU-провайдера часто связаны не с логикой Pix2Text, а с бинарной совместимостью этих пакетов. На сервере лучше фиксировать версии и собирать образ из проверенного lock-файла.
Сеть и внешние API. Для чисто локальных моделей сеть после загрузки весов не обязательна. Для VLM-конфигураций ситуация противоположная: изображение может передаваться внешнему API через LiteLLM. Это влияет и на доступность, и на стоимость, и на требования к конфиденциальности.
Преимущества и недостатки Pix2Text
Плюсы и минусы
Открытый код и MIT-лицензия ядра без лимита на число локально обработанных страниц.
Специализированное распознавание математических формул в LaTeX, чего нет у большинства обычных OCR-конвейеров.
Единый разбор текста, формул, таблиц и макета с последующей сборкой в Markdown.
Поддержка целого PDF и выбора отдельных страниц, включая сканированные PDF.
Более 80 языков текстового OCR при установке multilingual-зависимости.
Три способа интеграции: Python API, CLI и локальный HTTP-сервис для изображений.
Можно работать локально без обязательной отправки документов в облако, если используются локальные модели.
Отладочные результаты помогают локализовать ошибку распознавания по этапам конвейера.
Минусы
Нет штатного кроссплатформенного графического интерфейса в основном пакете.
Установка тяжелее обычного Python-пакета из-за PyTorch, OpenCV, ONNX и нескольких OCR-моделей.
Первый запуск зависит от загрузки весов; полностью офлайн-среду нужно готовить заранее.
HTTP-сервис функционально уже Python API: официально принимает изображения, но не PDF.
Платные pro-модели имеют отдельные условия лицензирования, которые нельзя вывести из MIT-лицензии ядра.
Для больших GPU-задач требуется нагрузочное тестирование: в issue проекта зафиксирован сценарий роста VRAM на длинном PDF.
Markdown — не эквивалент точного восстановления исходного DOCX/PDF-макета; визуальные детали могут потребовать ручной проверки.
Сравнение с аналогами
| Инструмент | Основная задача | Формулы | Локальность | Кому подходит | |
|---|---|---|---|---|---|
| Pix2Text | OCR и PDF/изображение → Markdown | Да, LaTeX через MFD/MFR | Распознаёт целиком или по страницам | Да, с локальными моделями | Разработчикам, исследователям, техническим архивам |
| Mathpix | OCR формул, текста, таблиц, документов | Да | Да, облачные API и приложения | В основном сервисная модель | Тем, кому важен готовый UX и коммерческий API |
| ABBYY FineReader PDF | OCR, конвертация и визуальная работа с PDF | Не является специализированным LaTeX-конвейером | Да, с редактором и OCR | Настольная обработка доступна | Офисным пользователям и ручной верификации OCR |
| OCRmyPDF | Добавление поискового OCR-слоя в сканированный PDF | Нет специализированного LaTeX OCR | Да, PDF → поисковый PDF/PDF-A | Да | Архивам, которым нужен именно текстовый слой PDF |
| Sumatra PDF | Просмотр PDF, электронных книг, комиксов и изображений | Не распознаёт формулы | Прежде всего чтение | Да | Тем, кому нужен быстрый просмотр документов |
Mathpix остаётся ближайшим концептуальным ориентиром: официальный проект Pix2Text прямо позиционирует себя как свободную альтернативу. У Mathpix готовая экосистема приложений и облачных API, но она использует коммерческую тарификацию. Pix2Text выигрывает там, где важны открытый код, локальный запуск и возможность встроить OCR в собственный Python-процесс.
ABBYY FineReader лучше подходит для сотрудника, который вручную открывает скан, правит зоны, проверяет распознанный текст и сохраняет офисный формат. Pix2Text сильнее именно как автоматизируемый инструмент для формул и Markdown. OCRmyPDF решает другую задачу: сохраняет PDF как PDF и добавляет в него поисковый текстовый слой. Если цель — архивировать сканы, это часто более прямой выбор; если нужно извлечь научное содержание в Markdown/LaTeX, Pix2Text ближе к задаче.
С Sumatra PDF сравнение возможно только по роли в цепочке. Sumatra PDF — лёгкий Windows-просмотрщик; он нужен до и после OCR, чтобы быстро открыть исходный или полученный документ, но не является заменой распознавания. Pix2Text, наоборот, не предназначен для комфортного чтения. В типичном рабочем процессе просмотрщик и OCR-инструмент дополняют друг друга.
Паспорт обратимости операций
Исходный файл. Pix2Text читает PDF или изображение и создаёт результат отдельно, поэтому распознавание само по себе не требует перезаписывать оригинал. Безопасный сценарий — держать исходник неизменным, а Markdown и связанные изображения писать в новый каталог.
Markdown. Результат переносим между редакторами и системами контроля версий, но это уже интерпретация исходной страницы. Если модель неверно распознала символ, формулу или границу таблицы, открыть Markdown в другом приложении не восстановит потерянную информацию. Поэтому оригинал остаётся главным источником для повторного OCR.
Модели и конфигурация. Пороговые значения, список языков, выбранный backend и версия модели влияют на вывод. Чтобы результат был воспроизводим, рядом с данными стоит сохранять версию Pix2Text и конфигурацию запуска. Простого «отменить последнее действие» как в GUI-редакторе нет; откат — это повторный запуск по исходнику с прежними параметрами.
Хронология развития и поддержки
| Период | Изменение | Практический смысл |
|---|---|---|
| Февраль 2024 | Pix2Text 1.0 с новой моделью распознавания формул | Укрепление проекта как специализированного math OCR |
| Апрель 2024 | 1.1: layout, таблицы и PDF → Markdown | Переход от фрагментов к целым документам |
| Ноябрь 2024 | 1.1.2: DocLayout-YOLO | Обновление анализа структуры страницы |
| Апрель–июль 2025 | 1.1.3–1.1.4: VLM-интерфейсы и MFD/MFR 1.5 | Выбор между локальными специализированными моделями и внешними VLM |
| Февраль 2026 | 1.1.5–1.1.6: новый загрузчик моделей и прямая config-инициализация | Проще автоматизировать развёртывание и конфигурацию |
| Август 2026 | PyPI 1.1.7 | Актуальный пакет новее последней подробно описанной записи RELEASE.md |
История показывает устойчивое развитие вокруг одной специализации — извлечения структурированного содержания из визуальных документов. При обновлении между минорными версиями стоит учитывать не только Python-код, но и модельные каталоги: документация хранит их по ветке версии, например 1.1 для 1.1.x. Это помогает отделять модели разных поколений.
Инструкция по установке
Базовая локальная установка
1. Установите совместимую среду Python и создайте отдельное виртуальное окружение для Pix2Text. Это не строгое требование проекта, но безопасный способ изолировать PyTorch, OpenCV и ONNX Runtime.
2. Обновите pip внутри окружения и выполните pip install pix2text.
3. Если нужен русский, немецкий, французский или другой язык за пределами базовой пары English/Simplified Chinese, установите pip install pix2text[multilingual].
4. Для VLM-интерфейса отдельно используйте pip install pix2text[vlm]. Не добавляйте этот extra, если внешний API не нужен.
5. Проверьте, что команда p2t —help или p2t predict —help запускается. Это подтверждает установку CLI, но не гарантирует, что все модели уже загружены.
6. Первый реальный запуск выполняйте на небольшом тестовом изображении. Дождитесь автоматической загрузки моделей; не прерывайте процесс только из-за отсутствия мгновенного результата.
7. Для PDF используйте режим file-type pdf и отдельный каталог результата. Исходный PDF не удаляйте до проверки Markdown и изображений.
GPU для ONNX
Если нужен ONNX на GPU, официальный install-раздел рекомендует удалить обычный onnxruntime и установить onnxruntime-gpu. После этого нужно отдельно проверить, что runtime действительно видит CUDAExecutionProvider. Сам факт наличия NVIDIA GPU ещё не означает, что версии драйвера, CUDA и ONNX Runtime совместимы.
Удаление
Python-пакет удаляется через pip uninstall pix2text в том же окружении. Модели могут остаться в пользовательских каталогах .pix2text, .cnocr и .cnstd; удалять их автоматически вместе с библиотекой не следует, если этими моделями пользуются CnOCR или CnSTD в других проектах. Для полностью изолированной установки проще удалить само виртуальное окружение и только затем, после проверки, очистить модельные каталоги, которые больше никому не нужны.
Практические кейсы
Научный PDF в Markdown для дальнейшей разметки
Цель. Получить редактируемый Markdown из статьи, где есть обычный текст, формулы, рисунки и таблицы. Подготовка. Сохраните исходный PDF отдельно, создайте пустой каталог output-md и начните с двух-трёх страниц. Шаги. Запустите p2t predict с file-type pdf, явно задайте языки и resized-shape 768, укажите output-md и при первой настройке включите save-debug-res. Проверка. Сопоставьте заголовки, формулы и порядок абзацев с оригиналом; откройте Markdown-рендерер и убедитесь, что LaTeX собирается. Ограничение. Сложные многостолбцовые макеты и нестандартные таблицы могут потребовать повторной настройки или ручной правки Markdown.
Скриншот формулы в LaTeX
Цель. Перевести изображение одной формулы в LaTeX для статьи или заметки. Подготовка. Обрежьте изображение так, чтобы в нём была только формула без лишних подписей. Шаги. В API используйте recognize_formula либо CLI с file-type formula. Проверка. Вставьте полученную строку в LaTeX/Markdown-рендерер и визуально сравните индексы, дроби, скобки и греческие символы с изображением. Ограничение. Модель возвращает распознанную математическую запись, но не знает авторского смысла; похожие символы нужно проверять по оригиналу.
Русскоязычный скан без формул
Цель. Извлечь текст из изображения на русском языке. Подготовка. Установите multilingual extra, потому что базовый сценарий ориентирован на английский и упрощённый китайский. Шаги. Инициализируйте конфигурацию с языком ru и отключите распознавание формул, если математических выражений нет. Проверка. Сравните несколько абзацев с оригиналом, особенно буквы, похожие между кириллицей и латиницей, и переносы строк. Ограничение. Дополнительный язык использует EasyOCR, поэтому результат и скорость могут отличаться от базового CnOCR-пути.
Локальный HTTP endpoint для внутренних изображений
Цель. Дать внутреннему приложению единый HTTP-вызов для скриншотов. Подготовка. Установите зависимости serve, запустите сервис только в доверенной сети и заранее прогрейте модели тестовым изображением. Шаги. Поднимите p2t serve на нужном host/port; клиент отправляет multipart image, file_type и явно задаёт resized_shape. Проверка. Обработайте эталонное изображение и сравните поле results с ожидаемым текстом. Ограничение. Официальный HTTP-сервис не принимает PDF; кроме того, resized_shape лучше передавать явно из-за сохраняющегося в текущем исходном коде несоответствия типа значения по умолчанию.
Навигатор по сбоям
Симптом: долгий первый запуск без результата. Проверьте, идёт ли загрузка моделей и есть ли доступ к Hugging Face/зеркалу. Без ошибок не прерывайте загрузку преждевременно. Контроль — повторный запуск после появления модельных файлов должен стартовать быстрее.
Симптом: распознаются только английский/китайский. Проверьте, установлен ли extra multilingual и указан ли нужный language code. Контроль — обработайте короткий эталон на одном языке.
Симптом: CUDA не используется. Проверьте, установлен ли onnxruntime-gpu вместо CPU-пакета и доступен ли CUDAExecutionProvider. Контроль — вывод провайдеров ONNX Runtime и загрузка GPU во время теста.
Симптом: HTTP возвращает 422. Передайте resized_shape явным полем и сравните с документированным запросом. Контроль — тот же файл должен вернуть status 200.
Симптом: разметка Markdown нарушена. Включите save-debug-res и определите, ошибся layout, formula OCR или text OCR. Меняйте одну группу параметров за раз, чтобы сохранить причинность.
Часто задаваемые вопросы
С какого номера считаются страницы в page_numbers?
В Python API список page_numbers использует нумерацию с нуля: первая страница имеет номер 0. Это важно при выборочном OCR, иначе легко обработать соседнюю страницу вместо нужной.
Можно ли распознать только несколько страниц PDF из командной строки?
Да. CLI передаёт дополнительные параметры функции recognize через rec-kwargs; официальный пример использует page_numbers со списком нужных страниц. Это удобнее, чем предварительно разрезать исходный PDF.
Умеет ли p2t predict обработать папку целиком?
Команда умеет принимать каталог изображений и запускать OCR по его содержимому. Документация отдельно оговаривает, что режим каталога не предназначен для одновременной обработки нескольких PDF, поэтому пакет PDF лучше запускать по одному файлу или оборачивать CLI/API собственным циклом.
Что делать, если таблицу лучше не распознавать?
Для страницы предусмотрен параметр table_as_image. При значении True таблица сохраняется как изображение вместо разбора её содержимого в текстовую структуру. Это практичный вариант для сложных схем и таблиц, где ошибочная реконструкция хуже исходного фрагмента.
Можно ли отключить распознавание формул или таблиц?
Да. В CLI есть enable/disable-переключатели для формул и таблиц, а при инициализации Python-класса доступны соответствующие параметры. Отключение ненужного компонента уменьшает число этапов конкретного конвейера и исключает часть ложных классификаций.
Как управлять переносами строк в текстовом результате?
В распознавании доступен параметр auto_line_break, а CLI имеет парный переключатель для автоматического объединения соседних строк. Для документов с колонками, стихотворной структурой или программным кодом его поведение стоит проверять на эталонной странице.
Чем отличается выбор устройства в API и CLI?
В конфигурационной инициализации Python параметр device может быть None, и тогда устройство выбирается автоматически. В справке p2t predict для командной строки значение по умолчанию указано как cpu; при необходимости GPU задаётся явно, например cuda:0.
Как менять разделители встроенных и отдельных формул?
У распознавания есть параметры embed_sep и isolated_sep. Они задают обрамление встроенной и вынесенной математики, поэтому интеграция может адаптировать результат к принятому в конкретном Markdown/LaTeX-пайплайне стилю вместо последующей массовой замены.
Вывод
Pix2Text 1.1.7 подходит разработчикам, исследователям и командам, которым нужно локально извлекать из изображений и PDF не только текст, но и формулы, таблицы и структуру страницы, а затем получать Markdown/LaTeX. Его ключевые преимущества — открытая MIT-лицензия ядра, специализированный math OCR, работа с PDF и возможность встроить распознавание в Python, CLI или локальный сервис.
Он менее удачен для пользователя, которому нужен привычный визуальный PDF-редактор, пошаговая коррекция OCR или готовая офисная конвертация без настройки Python. Для поискового PDF логичнее OCRmyPDF, для ручной проверки и редактирования — FineReader или другой PDF/OCR-пакет, для готового облачного math OCR — Mathpix. Sumatra PDF занимает соседнюю, но другую нишу: это средство чтения, а не распознавания. В связке просмотрщик для контроля исходника и Pix2Text для программного извлечения содержимого дают более ясное разделение задач, чем попытка использовать один продукт для всего.