Есть советы по ускорению GhostScript?


У меня есть 100-страничный PDF, который составляет около 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 27

4 ответа:

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

-dNumRenderingThreads=<number of cpus>

Пусть он использует до 30 МБ оперативной памяти:

-c "30000000 setvmthreshold"

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

-dNOGC

Подробнее см. Improving Performance раздел из Ghoscript docs.

Я хрустел страницей 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 штука не имела для меня большого значения, Фу-у-у.

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

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

  • отсканированный документ в формате PDF, размером около 500 кб на страницу в среднем. Это означает, что каждая страница в основном представляет собой картинку, использующую разрешение сканирования (не менее 200 dpi, возможно, даже 600 dpi).
  • вы перегоняете его с помощью 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-битный версия.

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

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