我使用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]
>>
答案 0 :(得分:2)
这不是一个Ghostscript问题。 djvu设备在Ghostscript构建中显然是非标准的。我无法告诉你关于开关的任何信息,因为它们特定于DejaVu设备。
如果您只想从文件中提取文本,则可以使用txtwrite设备(使用最新版本的Ghostscript)。
如果您使用PDF文件,则文件中可能存在ToUnicode CMap,可用于获取有关文本的Unicode信息。 PostScript不包含ToUnicode CMaps,因此PostScript文件中的Unicode信息 NOT 可用。我想这就是ps2write输出无法通过设备从中提取文本的原因。