1

我将 GS 与 DjVu 驱动程序一起使用,如下例所示:

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

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

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

尝试运行单页 PDF 文件(in.ps通过ps2write设备生成),ps2ascii也没有给出任何文本。但其他工具,如 pdfminer、xpdf,可以提取正确的文本。PDF 查看器(如使用mupdf或 Acrobat 的 SumatraPDF)也可以按预期提取文本。

有没有人可能对这些无证开关有所了解,这可能是什么问题?

更新:只有当我通过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]
  >>
4

1 回答 1

2

这不是一个真正的 Ghostscript 问题。djvu 设备在 Ghostscript 构建中绝对是非标准的。我无法告诉您有关开关的任何信息,因为它们是 DejaVu 设备特有的。

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

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

于 2013-01-25T08:08:48.233 回答