Конвертация djvu в pdf. dpsprep
2025-04-29
·
3 мин. для прочтения
Конвертация djvu в pdf. dpsprep.
Содержание
1 Общая информация
- Репозиторий: https://github.com/kcroker/dpsprep
- Конвертер DjVu в PDF.
- Позволяет сохранять структуру документа (например, оглавление) и текстовые слои (например, OCR).
2 Установка
2.1 Gentoo
- Оверлей karma (Gentoo. Репозиторий karma):
emerge dpsprep
3 Параметры
-q,--quality: качество изображений на выходе. Используется только для сжатия JPEG, т.е. изображений RGB и Grayscale. Передается напрямую в Pillow и оптимизатору OCRmyPDF.-p,--pool-size: размер пула MultiProcessing для обработки постраничных операций.-v,--verbose: отображение отладочных сообщений.-o,--overwrite: перезаписать файл назначения.-w,--preserve-working: сохранять рабочий каталог после завершения скрипта.-d,--delete-working: перед записью в рабочий каталог удалите все существующие файлы.-t,--no-text: отключить генерацию текстовых слоев. Подразумевается--ocr.-m,--mode: режим изображения. По умолчанию запрашивается режим изображения каждой страницы у libdjvu. Иногда имеет смысл принудительно использовать битональные изображения, поскольку они хорошо сжимаются.--ocr: выполнить OCR через OCRmyPDF, а не пытаться преобразовать текстовый слой. Если этот параметр имеет значение, это должен быть словарь JSON с параметрами, которые будут переданы в OCRmyPDF.-O1: используйте оптимизацию изображений PDF без потерь с помощью OCRmyPDF (без выполнения OCR).-O2: используйте оптимизацию изображений PDF от OCRmyPDF.-O3: используйте агрессивную оптимизацию изображений PDF с потерями от OCRmyPDF.
4 Выполнение сжатия
- Компрессия поводится в два этапа:
- сжатие по умолчанию, предоставляемое Pillow. Для битональных изображений код генерации PDF говорит, если
libtiffдоступен, для сжатия используетсяgroup4. - если установлен OCRmyPDF, его оптимизацию PDF можно использовать с помощью флагов
-O1,-O2,-O3(это не требует OCR).
- сжатие по умолчанию, предоставляемое Pillow. Для битональных изображений код генерации PDF говорит, если
- Если OCRmyPDF запускается вручную, обратите внимание, что команда оптимизации, предложенная в документации (параметр
--tesseract-timeoutк0) может испортить существующие текстовые слои. - Чтобы выполнить только оптимизацию PDF, вы можете использовать следующий недокументированный способ вызова:
python -m ocrmypdf.optimize <input_file> <level> <output_file>
5 Примеры использования
- Создать файл
file.pdfв текущем каталоге:dpsprep file.djvu - Создать
output.pdfс пониженным качеством изображения и агрессивной оптимизацией изображений PDF:dpsprep --quality=30 -O3 input.djvu output.pdf - Использовать большой пул рабочих процессов:
dpsprep --pool-size 16 input.djvu - Принудительно сделать изображения двуцветными:
dpsprep --mode bitonal input.djvu - Игнорировать текстовый слой и запустить OCRmyPDF:
dpsprep --ocr '{"language": ["rus", "eng"]}' input.djvu - Просто проигнорируйте текстовый слой без OCR:
dpsprep --no-text input.djvu
6 Обработка для разных страниц
- В
dpsprepнет встроенной возможности указать разные параметры обработки для конкретных страниц, параметры применяются ко всему документу сразу. - Эту задачу можно решить, разбив процесс на несколько шагов.
- Предположим, что надо по разному обрабатывать обложку и основной текст.
6.1 Разделить исходный DjVu файл
- Разбить файл на две части: обложку (страница 1) и основной блок (остальные страницы).
- Например, с помощью утилиты
ddjvu. - Извлечь только первую страницу (обложку) в отдельный файл:
ddjvu -format=pdf -page=1 input.djvu cover1.pdf
6.2 Конвертируйте с нужными параметрами
- Теперь примените
dpsprepк основной части с теми настройками, которые вам нужны. - Используем вам параметр
-m bitonal.dpsprep --pool-size 16 -O3 -m bitonal input.djvu - Удалите обложку из полученного файла:
qpdf input.pdf --pages . 2-r1 -- output.pdf - Обработайте обложку отдельно:
ocrmypdf --tesseract-timeout 0 --optimize 3 cover1.pdf cover1-1.pdf
6.3 Объедините полученные PDF файлы
- Соедините файлы:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=итоговый_файл.pdf cover1-1.pdf output.pdf

Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы.
Научные интересы относятся к области теоретической физики и математического моделирования.