Любые советы по ускорению GhostScript? - PullRequest
27 голосов
/ 28 декабря 2010

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

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

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

ОБНОВЛЕНИЕ: ОК Я попытался обновить егочто у меня ниже.Я правильно использую -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

Ответы [ 4 ]

30 голосов
/ 28 декабря 2010

Если вы работаете в многоядерной системе, сделайте так, чтобы она использовала несколько ядер ЦП с:

-dNumRenderingThreads=<number of cpus>

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

-c "30000000 setvmthreshold"

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

-dNOGC

Подробнее см. в разделе Improving Performance из документации Ghoscript.

11 голосов
/ 06 сентября 2012

Я перебирал ~300 страницу PDF на ядре 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.

6 голосов
/ 29 декабря 2010

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

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

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

1 голос
/ 13 октября 2013

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

...