提取文本的GhostScript问题,以及-dProvideUnicode用法

时间:2013-01-24 18:03:27

标签: ghostscript

我使用GS和DjVu驱动程序,如下例所示:

gs %gs_args% -dProvideUnicode -dExtractText -sDEVICE=djvusep -o out.sep in.ps

并注意到问题,一些文件文本未正确提取(我在剪贴板中从生成的文件中复制文本时出现问号)。

我认为这是编码的一些问题,并删除了-dProvideUnicode开关,但是根本没有提取文本,我认为-dExtractText标志,仅针对此驱动程序,需要它才能运行正常。

尝试运行单页PDF文件(通过in.ps设备生成ps2write),ps2ascii也没有文字。但是像pdfminer,xpdf这样的其他工具可以提取正确的文本。此外,像SumatraPDF这样使用mupdf或Acrobat的PDF查看器会按预期提取文本。

有没有人可能知道这些未记录的开关,这可能是什么问题?

更新:只有在我通过ps2write路线时才会发生这种情况。如果我直接使用PDF,则没有问题。

以下是PDF文件中的编码信息:

c:\temp>pdf-parser -s encoding sample.pdf
obj 11 0
 Type: /Font
 Referencing: 12 0 R, 20 0 R

  <<
    /BaseFont /XQKNMY+TT14112O00
    /FontDescriptor 12 0 R
    /Type /Font
    /FirstChar 32
    /LastChar 144
    /Widths [
253 0 0 0 0 0 0 0 293 293 0 0 220 313 220 0
0 467 467 0 0 0 467 0 467 467 0 0 0 0 0 0
0 680 0 0 0 653 0 773 760 0 0 740 0 833 0 0
0 0 0 480 613 0 680 0 0 0 0 0 0 0 0 0
0 407 513 414 500 414 320 447 513 227 0 467 227 773 513 513
513 0 333 367 293 487 467 667 460 414 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
220]
    /Encoding 20 0 R
    /Subtype /Type1
  >>

obj 20 0
 Type: /Encoding
 Referencing:

  <<
    /Type /Encoding
    /BaseEncoding /WinAnsiEncoding
    /Differences [
144/quoteright]
  >>

1 个答案:

答案 0 :(得分:2)

这不是一个Ghostscript问题。 djvu设备在Ghostscript构建中显然是非标准的。我无法告诉你关于开关的任何信息,因为它们特定于DejaVu设备。

如果您只想从文件中提取文本,则可以使用txtwrite设备(使用最新版本的Ghostscript)。

如果您使用PDF文件,则文件中可能存在ToUnicode CMap,可用于获取有关文本的Unicode信息。 PostScript不包含ToUnicode CMaps,因此PostScript文件中的Unicode信息 NOT 可用。我想这就是ps2write输出无法通过设备从中提取文本的原因。