Время извлечения текста Ghostscript? - PullRequest
0 голосов
/ 02 мая 2020

Я извлекаю текст из pdf, и для этого я использую Ghostscript v9.52

Время, затраченное ghostscript на команды txtwrite по умолчанию, составляет ~ 400 мс, а команды:

 -dSafer -dBATCH -dNOPAUSE -sPDFPassword=thispdf -device="txtwrite" stdout pdf.pdf

Затем я попытался снизить разрешение рендеринга, и это сэкономило некоторое время и смогло довести его до ~ 300 мс:

 -dSafer -dBATCH -dNOPAUSE -r2 -dDEVICEWIDTHPOINTS=50 -dDEVICEHEIGHTPOINTS=50 -dFIXEDMEDIA -sPDFPassword=thispdf -device="txtwrite" stdout pdf.pdf

Не представляю, как здесь работает установка низкого разрешения.

Как я могу ускорить извлечение текста до 100 мс, если это возможно?

1 Ответ

0 голосов
/ 02 мая 2020

Если это то, сколько времени это займет, то это время, которое требуется. Интерпретатор должен быть запущен и установить sh полностью рабочую среду PostScript, затем полностью интерпретировать ввод, включая все шрифты, и передать его на устройство вывода. Устройство вывода записывает шрифт, размер точки, ориентацию, цвет, положение и пытается вычислить кодовые точки Unicode для всего текста. Затем, в зависимости от параметров (которые вы не указали), он может изменить порядок текста перед выводом. Затем он выводит текст, закрывает входные и выходные файлы, освобождает всю используемую память и корректно закрывает интерпретатор.

Вы не привели пример файла, который используете, но полсекунды не ' Мне кажется, что это ужасно долго.

Отчасти вы можете обвинить все испорченные PDF-файлы, каждый раз, когда появляется другой испорченный файл, но Acrobat считывает его, необходимо провести еще один тест. и установлен обходной путь, обычно все это замедляет работу интерпретатора.

Разрешение не будет иметь никакого эффекта, и мне очень трудно поверить, что размер носителя вообще имеет какое-либо значение, поскольку он не используется , Не используйте NOG C, это инструмент отладки, который приведет к увеличению использования памяти.

Наиболее вероятный способ повысить производительность - не выключать интерпретатор между заданий, так как запуск и завершение работы - это, вероятно, самая большая часть времени, затрачиваемого на это так быстро. Конечно, это означает, что вы не можете просто раскошелиться на Ghostscript, что, вероятно, означает, что вы выполняете какую-то разработку с API, и это может означать, что вы нарушаете AGPL, в зависимости от ваших возможных планов на это приложение.

Если вы Я хотел бы предоставить полную командную строку и файл примера, который я мог бы посмотреть (вы могли бы также профилировать программу самостоятельно), но я очень сомневаюсь, что ваша цель достижима и определенно не достижима для любого случайного входного файла.

...