BookTranslator
BookTranslator

Как перевести многоколоночный PDF, не нарушив порядок чтения

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

BookTranslator

BookTranslator Team

12 min read

Краткий ответ: проверьте порядок чтения перед переводом

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

Итак, порядок работы:

  1. Проверьте, как читается страница. Скопируйте одну показательную страницу и убедитесь, что каждый абзац выводится в том порядке, в котором его прочитал бы человек.
  2. Выберите рабочий процесс на основе этой проверки. Используйте перевод PDF с сохранением макета, когда порядок правильный, режим OCR, когда текст непригоден для чтения, и подход с конвертацией и исправлением, когда вам нужен редактируемый файл.
  3. Проверьте переведённые колонки. Обратите внимание на разрыв колонки, подписи к рисункам, заметки на всю ширину, сноски и слишком длинные строки.

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

Что мы тестировали

20.10.2026 мы создали три одностраничных PDF из одного и того же текста: заголовок, блок с рисунком в верхней части левой колонки, три абзаца в каждой колонке, выделенную жирным заметку на всю ширину и сноску. Каждый абзац начинается с маркера от P1 до P8, поэтому правильный порядок чтения — с P1 по P8.

Тестовая страница с двумя колонками: блок с рисунком в верхней части левой колонки, абзацы P1–P3 под ним, P4–P6 в правой колонке и заметка P7 на всю ширину

Три файла различаются тем, чего не видно на экране:

  • two-column-stream-logical.pdf сохраняет текст сначала левой колонки, затем правой.
  • two-column-stream-rowwise.pdf выглядит идентично, но сохраняет строки построчно, чередуя колонки.
  • two-column-no-figure-rowwise.pdf сохраняет текст построчно и не имеет блока с рисунком. Это контрольный файл.

Затем мы извлекли текст семью распространёнными методами с открытым исходным кодом и записали порядок абзацев, который вернул каждый из них:

ЭкстракторЛогическое хранение, с рисункомПострочное хранение, с рисункомПострочное хранение, без рисунка
pdftotext 26.08.0 (по умолчанию)P4 P1 P5 P6 P2 P3 P7 P8P4 P1 P5 P6 P2 P3 P7 P8P1–P8 верно
pdftotext -rawP1–P8 верноP1 P4 P5 P2 P6 P3 P7 P8P1 P4 P5 P2 P6 P3 P7 P8
pdftotext -layoutP4 P5 P6 P1 P2 P3 P7 P8P4 P5 P6 P1 P2 P3 P7 P8P1 P4 P5 P2 P6 P3 P7 P8
pypdf 5.1.0 extract_text()P1–P8 верноP1 P4 P5 P2 P6 P3 P7 P8P1 P4 P5 P2 P6 P3 P7 P8
pdfminer.six 20240706P4 P5 P6 P1 P2 P3 P7 P8P4 P5 P6 P1 P2 P3 P7 P8P1–P8 верно
PyMuPDF 1.24.14 get_text()P1–P8 верноP1 P4 P5 P2 P6 P3 P7 P8P1 P4 P5 P2 P6 P3 P7 P8
PyMuPDF 1.24.14 get_text(sort=True)P4 P5 P6 P1 P2 P3 P7 P8P4 P5 P6 P1 P2 P3 P7 P8P1 P4 P5 P2 P6 P3 P7 P8

Ни один из семи методов не справился со всеми тремя файлами. Каждый метод, который правильно обработал один файл, ошибался на другом. В контрольном файле pdftotext -raw, pdftotext -layout и PyMuPDF с sort=True также вывели три строки, каждая из которых смешивала текст из обоих столбцов — именно это видит читатель, когда скопированный текст перескакивает через межколонник. PyMuPDF с sort=True выдал по одной такой строке и в каждом из двух других файлов.

Тест намеренно небольшой: одна синтетическая английская страница без тегов, созданная с помощью ReportLab. Он не ранжирует эти библиотеки и не проверял ни один продукт для перевода, включая BookTranslator. Он показывает более узкую и более полезную вещь: одинаково выглядящая страница может давать разный исходный порядок, поэтому единственная надёжная проверка — ваш собственный файл.

Вы можете воспроизвести тест с помощью генератора фикстур, трёх PDF-файлов (логический, построчный, без рисунка), проверки порядка, запускающего скрипта извлекателей, который вызывает все семь методов, и CSV с результатами.

Почему одна и та же страница читается в разном порядке

Извлекатели используют одну из двух стратегий, и каждая из них даёт сбой на своём файле.

Стратегия 1: следовать порядку, сохранённому в файле. PDF рисует текст в том порядке, в каком его записал создатель. Руководство poppler описывает pdftotext -raw как сохраняющий «текст в порядке потока содержимого» (и больше не рекомендует этот режим), а документация PyMuPDF говорит, что её вывод по умолчанию — это простой текст «как он закодирован в документе» (руководство poppler pdftotext, рецепты работы с текстом в PyMuPDF). Это работает, когда файл хранит текст в порядке чтения. Это не работает, когда сохранённый порядок построчный, как в нашем втором файле, хотя страница выглядит одинаково.

Стратегия 2: восстановить порядок по расположению текста на странице. Режим по умолчанию pdftotext пытается выводить текст «в порядке чтения», pdfminer.six группирует близкие строки в блоки и позволяет задавать вес «горизонтальной и вертикальной позиции» при их упорядочивании, а sort=True в PyMuPDF сортирует «от верхнего левого угла к нижнему правому» (LAParams в pdfminer.six). Эти методы игнорируют сохранённый порядок, поэтому логический файл и построчный файл дают одинаковые результаты.

Контрольный файл объясняет сбой. Без рисунка режим по умолчанию pdftotext и pdfminer.six оба правильно читают P1–P8. Добавьте блок рисунка в верх левого столбца — и первый абзац справа (P4) становится самым верхним текстом на странице. Метод, который учитывает вертикальную позицию, начинает страницу с него.

Это распространённый дизайн страницы, а не крайний случай: статьи открывают левый столбец рисунком или блоком аннотации, журналы начинают столбец под изображением, а руководства ставят блок предупреждения над первым шагом. Заметка на всю ширину (P7) и сноска (P8) оставались на месте в каждом запуске, поэтому проверка, которая смотрит только на низ страницы, пропустит проблему.

Шаг 1: проверьте свой PDF за пять минут

Маркеров из нашего тестового файла в вашем документе нет, но та же проверка работает с несколькими предложениями, которые вы выберете сами.

  1. Выберите самую сложную страницу, а не первую. Возьмите двухколоночную страницу с рисунком, таблицей или блоком-заметкой в верхней части столбца, а также с заголовком или заметкой на всю ширину где-то посередине.
  2. Запишите пять опорных фраз в порядке чтения: первые слова левого столбца, последние слова левого столбца, первые слова правого столбца, элемент на всю ширину и подпись.
  3. Скопируйте всю страницу из вашей программы просмотра PDF и вставьте её в простой текстовый редактор. Если вы используете инструмент с предварительным просмотром исходника, используйте этот просмотр, потому что он показывает порядок, который инструмент фактически получил.
  4. Найдите опорные фразы во вставленном тексте. Они должны появиться в том порядке, в котором вы их записали, и ни одна строка не должна содержать слова из обоих столбцов.
  5. Повторите для одного другого типа страницы, например страницы со списком литературы, страницы с боковой панелью или первой страницы главы.

Интерпретируйте результат так:

Что показывает вставленный текстЧто это обычно означаетСледующий шаг
Опорные фразы по порядку, без смешанных строкТекст и порядок чтения пригодны к использованиюПеревод PDF с сохранением макета
Правая колонка начинается раньше левойСтраница читается по вертикальному положениюПроверьте инструмент перевода на этой самой странице, прежде чем платить за весь файл
Строки смешивают текст из обеих колонокСтраница читается поперёкНе копируйте и не вставляйте; используйте файловый рабочий процесс и проверьте эту страницу
Абзацы перескакивают между колонкамиСохранённый порядок построчный или нарушенПроверьте файловый рабочий процесс; если он не сработает, сначала исправьте или преобразуйте файл
Ничего не вставляется или символы неверныеСтраница только с изображением или повреждённый текстовый слойИспользуйте OCR; см. Извлечение текста из PDF vs OCR

Копирование и вставка — это быстрая проверка, а не доказательство того, что сделает другой инструмент. Наша таблица показывает, что два инструмента могут прочитать один и тот же файл по-разному. Результат в вашей программе просмотра говорит о том, насколько файл рискованный. Собственный предпросмотр инструмента или тестовый перевод одной страницы покажет, что этот инструмент на самом деле читает.

Если текст вставляется с правильными буквами, но с нарушенными пробелами или переносами строк, исправьте проблемы с текстом при копировании и вставке, прежде чем судить о порядке колонок.

Шаг 2: Выберите рабочий процесс по тому, что вы увидели

Выбирайте рабочий процесс по результатам проверки, а не по заявлению инструмента о том, что он сохраняет вашу вёрстку.

Порядок правильный, и текст выделяется. Переводите PDF как файл, а не вставляя фрагменты. Рабочий процесс с сохранением вёрстки помещает переведённый текст обратно на страницу, поэтому колонки, рисунки и колонтитулы остаются там, где их ожидают читатели. В BookTranslator это стандартный путь перевода PDF. Любое обещание сохранить вёрстку, включая наше, воспринимайте как то, что нужно проверить на самой сложной странице, найденной на шаге 1, а не как гарантию.

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

Страница отсканирована или текстовый слой непригоден. Используйте OCR. Режим OCR в BookTranslator читает изображение страницы и восстанавливает чистый переведённый PDF. На той странице он рекомендуется для учебников, научных статей, таблиц и страниц с обилием изображений, где сохранение содержания важнее точной вёрстки. Мы не тестировали его на примерах из этого руководства. Компромисс очевиден: режим OCR не пытается сохранить исходную вёрстку, шрифты или размеры шрифтов. В частности, для сканов см. как перевести отсканированный PDF.

Вам всё равно нужен редактируемый документ. Преобразуйте PDF в Word, исправьте там порядок чтения и переведите DOCX. Это требует больше всего усилий, но это единственный путь, где вы можете напрямую исправить порядок абзацев перед переводом. Он также меняет вёрстку, поэтому используйте его, когда вывод будет редактироваться дальше, а не когда он должен выглядеть как исходная страница.

Избегайте вставки колонок в чат-бота или текстовое поле. Вы берёте на себя ответственность за ручное восстановление порядка, подписей и сносок на каждой странице. Наша таблица показывает, как легко этот порядок нарушается ещё до того, как вы начнёте.

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

Шаг 3: Проверьте переведённые колонки

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

  1. Разрыв колонки. Прочитайте последнее предложение левой колонки и первое предложение правой. Мысль должна продолжаться, а не перескакивать на другой абзац.
  2. Подписи и иллюстрации. Каждая подпись должна по-прежнему находиться под своей иллюстрацией, быть переведённой и не смещаться в основной текст.
  3. Элементы на всю ширину. Заголовки, примечания и выносные цитаты, занимающие обе колонки, должны по-прежнему охватывать их и не разрываться на две половины предложения.
  4. Сноски и колонтитулы. Маркеры сносок в тексте должны соответствовать примечаниям внизу страницы, а колонтитулы не должны появляться посреди абзаца.
  5. Переполнение в узких колонках. Переведённый текст часто длиннее исходного. В рекомендациях W3C о размере текста при переводе приводятся данные IBM: длина английского исходного текста свыше 70 символов при переводе на европейские языки увеличивается примерно на 130%, а для коротких строк прирост ещё больше. В узкой колонке для этого дополнительного текста мало места, поэтому ищите обрезанные строки, уменьшенный шрифт или наложение текста на иллюстрации. Заголовки и ячейки таблиц подвержены переполнению чаще всего.

Для проверки полезен двуязычный файл, но важна его вёрстка. Размещение исходного текста и перевода на одной странице втискивает два языка в и без того узкие колонки. В стандартном переводе PDF в BookTranslator (при выключенном режиме OCR) двуязычный PDF предлагает две вёрстки: На одной странице и На отдельных страницах. Для многоколоночных документов выбирайте «На отдельных страницах»: каждая исходная страница идёт следом за своей переведённой страницей, поэтому каждая колонка сохраняет исходную ширину. Вы по-прежнему можете скачать и версию только с переводом. Наш контрольный список проверки перевода PDF охватывает остальные проверки на уровне файла.

Если переведённый PDF должен также работать со скринридерами, визуального порядка недостаточно. Порядок чтения в тегированном PDF нужно проверять отдельно. W3C отмечает, что порядок чтения тегированного PDF «определяется в первую очередь порядком тегов элементов документа» (W3C PDF3). В нашем руководстве по доступности переведённых PDF показано, как это проверить.

Чего это руководство не утверждает

  • Это не рейтинг инструментов. Семь экстракторов были выбраны потому, что они распространены и их легко запустить повторно. Каждый из них не справился хотя бы с одним из трёх файлов, и другой тестовый файл мог бы изменить, какие именно из них дадут сбой.
  • Здесь не тестировались продукты для перевода. Мы не запускали BookTranslator, DeepL, Google Translate или любой другой переводчик на этих файлах. Приведённые выше описания продуктов взяты из текущих рекламных материалов BookTranslator, а не из этого теста.
  • Одна страница — ещё не документ. В реальных файлах сочетаются разные макеты страниц, поэтому проверяйте как минимум два типа страниц.
  • Тегированные PDF могут вести себя иначе. Наши тестовые файлы не тегированы. Надлежащим образом тегированный PDF содержит явный порядок чтения, который используют некоторые инструменты.

Практическое правило всё равно остаётся в силе: выясните, как читается ваш PDF, прежде чем переводить его. Если порядок правильный, переведите файл и проверьте колонки. Если он неправильный, измените рабочий процесс, а не настройки перевода.

Похожие статьи