Как перевести PDF в Word
Откройте PDF → Word и загрузите файл — он уйдёт на наш сервер, где библиотека pdf2docx соберёт из него .docx и вернёт результат, а обе временные копии удалятся сразу после ответа. Условие одно: в документе должен быть текстовый слой, иначе вы получите отказ с объяснением — распознавания у нас нет. Вёрстка при этом сдвинется почти наверняка, и виноват здесь формат, а не конвертер.
Коротко о цифрах
- Где обрабатывается
- на сервере, pdf2docx 0.5.8 отдельным сервисом
- Предел размера
- 25 МБ на файл
- Предел ожидания
- 110 секунд на конвертацию
- Порог текстового слоя
- в среднем 30 символов на страницу
- Временные файлы
- удаляются сразу, сторож выметает остатки через 15 мин
- Лимит запросов
- 10 конвертаций за 10 минут с одного адреса
Куда уходит файл
Это одна из девяти операций, которые у нас идут на сервере: pdf2docx — питоновская библиотека, и мы держим её отдельным сервисом рядом с сайтом. Ваш PDF доезжает до сервера в Алматы, кладётся во временный файл, конвертируется и удаляется — вместе с получившимся .docx — в блоке finally, то есть и при ошибке тоже.
Единственная лазейка, через которую файл мог бы пережить запрос, — убитый по таймауту процесс: SIGKILL не даёт отработать finally. Поэтому в сервисе крутится сторож, который каждые пять минут выметает всё старше пятнадцати минут. Проверить это можно прямо в репозитории, в pdf2docx-service/app.py, а не поверить на слово.
Почему вёрстка не переносится один в один
В PDF нет абзацев. Внутри страницы лежат команды «нарисовать вот эти глифы вот такой матрицей преобразования» — координаты, кегль, шрифт. Строка «Договор №14» может быть одним объектом, а может пятью, разбросанными по X. Word же устроен наоборот: у него есть абзац, у абзаца — отступы и интервалы, а текст в нём переливается сам.
Значит, конвертер обязан угадать: вот эти куски были одной строкой, эти строки — одним абзацем, эти линии — рамкой таблицы, а вот здесь просто два пробела, а не колонка. Угадывает он по расстояниям между координатами. На простом отчёте с одной колонкой угадывает почти всегда; на журнальной вёрстке в три колонки с врезками — почти никогда.
Отсюда практический вывод: чем проще исходная страница, тем ближе результат к оригиналу. И отсюда же — почему не бывает конвертера «без потерь». Потери заложены в постановку задачи: восстановить структуру, которой в файле нет.
Когда конвертация не начнётся вовсе
- В документе нет текста: проверяется средняя плотность по всему файлу, порог — 30 символов на страницу. Скан, у которого «текст» это только номер страницы в углу, отсеивается, и вы видите сообщение про отсутствующий текстовый слой, а не пустой .docx.
- PDF под паролем: сервис читает признак шифрования до конвертации и отвечает отказом с кодом ENCRYPTED. Сначала снимите пароль.
- Файл повреждён настолько, что не открывается парсером, — тоже отдельный код, CORRUPT, а не «попробуйте позже».
- Файл больше 25 МБ или запросов с одного адреса больше десяти за десять минут — ограничение снимается временем ожидания, а не повтором.
- Одновременно сервер держит две конвертации; если в очереди больше пяти, приходит честное «занято» вместо зависшей вкладки.
Порядок работы
- Проверьте, выделяется ли текст в исходном PDF. Не выделяется — это скан, и конвертировать его нечем.
- Откройте PDF → Word и перетащите файл в окно загрузки.
- Дождитесь ответа: на среднем документе это единицы секунд, предел ожидания — 110 секунд.
- Откройте .docx и первым делом посмотрите на таблицы и колонтитулы: они ломаются раньше всего.
- Если нужен только текст, а не вёрстка, возьмите извлечение текста — оно работает в браузере и не отправляет файл никуда.
Частые вопросы
Почему скан нельзя перевести в Word?
Потому что в нём нет букв — есть картинка страницы. Достать оттуда текст может только распознавание, отдельная операция со своей моделью и своими ошибками. У нас её нет, поэтому сервис отказывает сразу, а не отдаёт документ с картинками внутри.
Останется ли таблица таблицей?
Иногда да, если у неё нарисованы все линии и ячейки не объединены. В PDF рамка таблицы — это просто отрезки, и конвертер восстанавливает сетку по ним. Таблица без линий, только с отступами, почти всегда приезжает набором абзацев.
Вы храните загруженный файл?
Нет. Временный PDF и собранный .docx удаляются в том же запросе, в блоке finally, то есть и при ошибке конвертации. Отдельный сторож каждые пять минут проверяет служебную папку и удаляет всё, что пережило пятнадцать минут после жёсткого убийства процесса.
Почему абзац в Word разорван на строки?
Конвертер увидел большие вертикальные промежутки между строками и решил, что это разные абзацы. Такое случается на документах с растянутым межстрочным интервалом. Лечится в самом Word: удалите лишние знаки абзаца через поиск и замену.