Ghostscript 文本提取时间?

问题描述 投票:0回答:1

我正在从pdf中提取文本,为此我使用的是 Ghostscript v9.52

ghostscript使用默认的txtwrite命令所花费的时间是~400ms,命令是。

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

然后我试着降低了renderring的分辨率,节省了一些时间,能够降低到300ms。

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

我不知道低分辨率的设置在这里是如何工作的。

如果可能的话,我怎样才能加快文本提取接近100ms的速度?

pdf ghostscript
1个回答
0
投票

如果这就是它的耗时,那么这就是它的时间长度。解释器必须被启动并建立一个完整的PostScript环境,然后完全解释输入,包括所有的字体,并将其传递给输出设备。输出设备记录字体、点大小、方向、颜色、位置,并尝试计算所有文本的Unicode码点。然后,根据选项(你还没有给出),它可能会在输出前对文本进行重新排序。然后它输出文本,关闭输入和输出文件,释放所有使用的内存,并干净利落地关闭解释器。

你还没有给出你使用的文件的例子,但半秒的时间似乎并不长。

在一定程度上,你可以责怪所有破损的PDF文件,每当另一个破损的文件出现 "但Acrobat能读懂它 "时,就必须进行另一个测试,并建立一个变通方法,一般来说,所有这些都会使解释器变慢。

分辨率不会有任何影响,而且我很难相信媒体的大小会有任何不同,因为它没有使用。不要 使用NOGC,那是一个调试工具,会导致内存使用量增加。

最有可能提高性能的方法是不要在作业之间关闭解释器,因为当其那么快的时候,启动和关闭可能是花费时间最大的部分。当然,这意味着你不能简单地fork Ghostscript,这很可能意味着用API做一些开发,这将有可能意味着你侵犯了AGPL,这取决于你对这个应用程序的最终计划是什么。

如果您愿意提供一个完整的命令行和一个示例文件,我可以看看(您也可以自己对程序进行配置文件),但我非常怀疑您的目标是否可以实现,而且对于任何随机输入的文件来说,绝对不能可靠地实现。

© www.soinside.com 2019 - 2024. All rights reserved.