从PDF文件中提取文本(已打印)

时间:2018-06-13 18:32:26

标签: c# .net ghostscript ghostscript.net redmon

我使用RedMon(重定向端口监视器),HP Universal Driver PS和GhostScript拦截文档打印。

但是,对于以下情况:

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

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

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

问题是?

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

观察:Printed.pdf - >图像(TIFF) - > Tesseract(OCR) - >文本文件......工作!但它很慢。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

当然OCR可以工作,因为它扫描文本的形状以确定角色,但是它很慢。另一方面,它将使用PDF文件,其中只包含文本图像,而不是txtwrite设备赢得的实际文本。