0

我正在使用 RedMon(重定向端口监视器)、HP 通用驱动程序 PS 和 GhostScript 来拦截文档打印。

但是,对于以下场景:

文件 PDF -> HP Universal Driver PS -> RedMon -> PostScript File** -> GhostScript 创建文件printed.pdf*。

* 无法从 PDF 文件中提取文本:gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=txtwrite -sOutputFile=output.txtprinted.pdf

** PostScript 文件创建为压缩文件,无法提取文本。

问题是?

将 PDF 发送到打印机时,我可以在不压缩的情况下创建 PostScript 文件吗?

观察:Printed.pdf -> Image(TIFF) -> Tesseract(OCR) -> Text File... 有效!但它很慢。

4

1 回答 1

0

正如 Dweeberly 在评论中所说,如果您想从 PDF 文件中提取文本,请不要从打印开始。特别是不要把它变成 PostScript。

PDF 文件可以在(可选)中包含 ToUnicode CMap,这些允许可靠的文本提取。PostScript 不支持这些,因此如果您从 PDF 创建 PostScript 文件(无论您使用什么方式创建 PostScript),信息都会丢失。

此外,PostScript 程序通常会使用子集字体、非标准编码和对文本的其他修改来创建,这将使从中提取文本变得困难或不可能。

由于 Ghostscript 可以接受 PostScriptPDF 作为输入,因此在将 PDF 输入到 txtwrite 设备之前将其转换为 PostScript 没有任何价值。您所做的只是让设备的生活变得更加困难并丢弃有用的信息。

只需使用 Ghostscript 和 txtwrite 设备,并将 PDF 文件作为输入。

OCR 自然会起作用,因为它会扫描文本的形状以确定字符,但它的速度很慢。另一方面,它适用于仅包含文本图像而不是实际文本的 PDF 文件,而 txtwrite 设备则不会。

于 2018-06-14T07:22:09.767 回答