Подтвердить что ты не робот

Любые подсказки для ускорения GhostScript?

У меня есть 100-страничный PDF файл, который составляет около 50 МБ. Я запускаю script ниже, и он занимает около 23 секунд на страницу. PDF - это сканирование бумажного документа.

gswin32.exe -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 
            -dPDFSETTINGS=/screen -sOutputFile=out4.pdf 09.pdf

Есть ли что-нибудь, что я могу сделать, чтобы ускорить это? Я решил, что -dPDFSettings=/screen - это то, что делает его настолько медленным, но я не получаю хорошее сжатие без него...

UPDATE: OK Я попробовал обновить его до того, что у меня есть. Я правильно использую часть -c 30000000 setvmthreshold?

gswin32.exe -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 
            -dPDFSETTINGS=/screen -dNumRenderingThreads=2 -sOutputFile=out7.pdf 
            -c 30000000 setvmthreshold -f 09.pdf
4b9b3361

Ответ 1

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

-dNumRenderingThreads=<number of cpus>

Позволяет использовать до 30 МБ ОЗУ:

-c "30000000 setvmthreshold"

Попробуйте отключить сборщик мусора:

-dNOGC

Для получения более подробной информации см. раздел Improving Performance из документации Ghoscript.

Ответ 2

Я хрустил PDF файл ~300 на ядре i7 и обнаружил, что добавление следующих параметров обеспечило значительное ускорение:

                            %-> comments to the right 
-dNumRenderingThreads=8     % increasing up to 64 didn't make much difference
-dBandHeight=100            % didn't matter much
-dBandBufferSpace=500000000 % (500MB)
-sBandListStorage=memory    % may or may not need to be set when gs is compiled
-dBufferSpace=1000000000    % (1GB)

-c 1000000000 setnvmthreshold -f вещь для меня не имела большого значения, FWIW.

Ответ 3

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

Ваша ситуация такова:

  • Отсканированный документ в формате PDF, размер которого составляет около 500 кБ на страницу. Это означает, что каждая страница в основном представляет собой изображение, используя разрешение сканирования (не менее 200 dpi, а может быть даже 600 dpi).
  • Вы перенаправляете его с помощью Ghostscript, используя -dPDFSETTINGS=/screen. Этот параметр сделает несколько вещей, чтобы уменьшить размер файла. Среди наиболее важных:
    • Повторите выбор всех (цветных или полутоновых) изображений на 72dpi
    • Преобразование всех цветов в sRGB

Обе эти операции могут быть довольно "дорогими" с точки зрения использования ЦП и/или ОЗУ.

Кстати, ваша установка -dCompatibilityLevel=1.3 не требуется; он уже неявно устанавливается -dPDFSETTINGS=/screen уже.

Попробуйте следующее:

gswin32.exe ^
 -o output.pdf ^
 -sDEVICE=pdfwrite ^
 -dPDFSETTINGS=/screen ^
 -dNumRenderingThreads=2 ^
 -dMaxPatternBitmap=1000000 ^
 -c "60000000 setvmthreshold" ^
 -f input.pdf

Кроме того, если вы используете 64-битную систему, попробуйте установить последнюю 32-битную версию Ghostscript (9.00). Он работает лучше, чем 64-битная версия.

Позвольте мне сказать вам, что понижающая дискретизация 600-сантиметрового отсканированного изображения на страницу до 72dpi обычно не занимает 23 секунды для меня, но менее 1.

Ответ 4

Я могу быть совершенно неуместным здесь, но попробовали ли вы в формате Djvu? Он работает как шарм для отсканированных документов вообще (даже если есть много фотографий), и он дает гораздо лучшие сжатые файлы: я получаю коэффициент в два раза без потерь в целом в научных статьях B & W.