Как переводить научные статьи с arXiv и не ломать формулы
Каждый, кто хоть раз пытался загнать свежий препринт с arXiv в обычный переводчик, знает эту боль. Копируешь страницу в окно браузера, а на выходе получаешь кашу. Нижние и верхние индексы съезжают, греческие буквы превращаются в мусор, а математические выражения разрывает прямо посреди строки. Если загрузить PDF целиком в веб-сервис, верстка расползается по швам: двухколоночный текст наезжает на векторные графики, а подписи к таблицам улетают в подвал страницы.
Недавно я разбирал сорокастраничную статью по квантовой оптике. Читать оригинал на английском было тяжело из-за нагромождения специфической терминологии, а стандартный перевод превращал формулы вроде $\nabla \times \mathbf{E}$ в невнятные текстовые обрезки. Тогда я решил протестировать репозиторий PDFMathTranslate.

Что это за проект
В сообществе инструмент чаще называют по имени его консольной команды: pdf2zh. Исходно его создавали китайские разработчики для перевода англоязычных статей на китайский, но проект быстро вырос в международную утилиту. Сейчас у репозитория свыше 36 тысяч звезд на GitHub, а научную статью о методе приняли на конференцию EMNLP 2025.

Главная задача утилиты простая: перевести текст сложного PDF-документа, сохранив без изменений формулы, таблицы, графику, ссылки и исходное форматирование.
После обработки программа отдает два файла: моноязычный документ с переводом и двуязычный вариант (bilingual), в котором под каждым оригинальным абзацем идет переведенный текст. Для чтения сложной литературы двуязычный PDF оказался идеальным форматом. Читаешь на русском, а при малейшем сомнении в термине сразу сверяешь фразу с оригиналом строчкой выше.
Как устроен процесс под капотом
Чтобы не превратить страницы в кашу из шрифтов, утилита использует связку из компьютерного зрения и текстовых парсеров.
Сначала нейросеть DocLayout-YOLO (работает локально через ONNX) анализирует страницу и размечает координаты всех элементов. Модель находит колонки текста, заголовки, врезки, выключные формулы и подписи к рисункам.
Затем парсер на базе PyMuPDF и pdfminer.six аккуратно извлекает текстовые фрагменты, заменяя LaTeX-формулы специальными плейсхолдерами. Уравнения остаются на своих физических координатах, а переводчик получает только связные текстовые блоки.
Дальше текст уходит в выбранный бэкенд. Вы можете подключить стандартный Google Translate, настроить DeepL по API, отправить запросы в OpenAI или запустить локальную модель через Ollama, если работаете с закрытыми данными компании.
Когда перевод готов, программа вставляет переведенный текст обратно в заданные координаты PDF. Чтобы кириллица или иероглифы не превращались в квадраты, репозиторий использует свободный шрифт Go Noto Universal.

Как запустить утилиту на своей машине
Разработчики сделали несколько удобных сценариев работы.
Если вы привыкли работать в терминале, установка через менеджер пакетов uv занимает меньше минуты:
pip install uv
uv tool install --python 3.12 pdf2zh
Для перевода локального документа достаточно вызвать команду с указанием языков:
pdf2zh paper.pdf -li en -lo ru
Программа умеет забирать препринты напрямую по ссылке из сети:
pdf2zh https://arxiv.org/pdf/2401.00000.pdf -lo ru -s google
Если не хочется запоминать ключи командной строки, флаг -i запускает локальный графический интерфейс:
pdf2zh -i
В браузере по адресу http://localhost:7860 откроется аккуратное окно на Gradio, куда можно перетащить файл, настроить провайдера перевода и оценить результат в сплит-окне.

Для тех, кто не держит локально Python 3.11 или 3.12, авторы выложили официальный Docker-образ:
docker run -d -p 7860:7860 byaidu/pdf2zh
Любителям систематизировать литературу пригодится плагин для Zotero (zotero-pdf2zh). Он добавляет кнопку перевода прямо в контекстное меню карточки статьи. А недавно в проект добавили поддержку протокола MCP (Model Context Protocol), поэтому pdf2zh теперь можно подключать как внешний инструмент к ИИ-агентам в средах вроде Claude Desktop или Cursor.
Тонкости и практические наблюдения
В процессе работы с утилитой всплывает несколько деталей, о которых полезно помнить заранее.
При первом старте программа автоматически скачивает веса модели DocLayout-YOLO. На машинах со слабым процессором начальная инициализация ONNX-модели занимает 15-20 секунд.
Длина предложений на русском языке обычно на 15-20% больше английского оригинала. Иногда переведенный текст пытается вылезти за пределы узких колонок. Во второй версии ядра (флаг --mode precise) разработчики реализовали динамическое масштабирование шрифта и учет переносов между колонками, что значительно снизило число наложений.
Выбор сервиса перевода определяет и скорость, и качество. Бесплатный Google Translate переводит быстро и не требует ключей. DeepL дает более естественный слог в академическом контексте. Локальная Ollama с моделью Qwen работает медленнее, зато не отправляет закрытые документы во внешние облака.
Вот полезные флаги для ежедневной работы:
-p 1-3переводит только выбранные страницы, чтобы быстро просмотреть аннотацию и введение;-t 4запускает параллельную обработку в несколько потоков;--prompt prompt.txtпередает LLM пользовательский глоссарий терминов для единообразного перевода;-s ollamaвключает работу с локальными нейросетями без интернета.
Кому пригодится этот инструмент
PDFMathTranslate закрывает старую головную боль исследователей и инженеров, сохраняя визуальную структуру и математический аппарат статьи в первозданном виде.
Утилита пригодится в таких сценариях:
- Разработчикам и ML-инженерам, регулярно читающим свежие публикации на arXiv.
- Студентам и аспирантам технических направлений при подготовке научных обзоров.
- Дата-сайентистам, изучающим объемные англоязычные спецификации и whitepapers.
- Исследовательским командам, которым требуется обрабатывать закрытую техническую документацию через локальные модели.
Быстрее всего начать с установки через uv или запуска веб-интерфейса. Скормите утилите любую статью на три страницы и оцените, насколько удобнее читать сложную математику в готовом двуязычном PDF.
