Ghostscript 在阅读 PDF 时会破坏变音符号

Posted

技术标签:

【中文标题】Ghostscript 在阅读 PDF 时会破坏变音符号【英文标题】:Ghostscript mangles umlauts when reading PDFs 【发布时间】:2017-05-22 15:01:28 【问题描述】:

我在 Linux 上使用它

gs -dBATCH -dNOPAUSE -sDEVICE=txtwrite -o res.txt 1.pdf

然而,当从数百个 PDF 中提取文本时,变音符号和其他 ASCII 255 以内的特殊字符会被破坏。有什么想法吗?

cf https://archive.org/download/bnmm_gmx_1/1.pdf(包含两个“ä”)

部分翻译表:(土耳其字母表的最后一个和所有其他特殊字母都使用不可打印的字符进行了破坏,否则我可以帮助自己)

ä = À¤
é = À©
ç = À§

【问题讨论】:

【参考方案1】:

看起来它应该可以工作,因为字体有一个 ToUnicode CMap。我建议你打开一个错误报告。

注意,您没有使用 ASCII,嵌入和子集字体是 CIDFonts,并且使用的 CMap 创建 2 字节字符代码(尽管可笑的是所有高字节都是 0)。但是例如,空格实际上编码为字符代码0x0003,'0'是代码0x0013等。

顺便说一下,一个简单的例子会很有用,很难从这个文件的常规文本中挑选出重音字形。

【讨论】:

谢谢,我添加了截图。至于错误报告,好的,但我希望有一些有用的附加标志或其他东西。你知道我可以在 bash 中使用的其他一些 PDF 文本提取工具吗? 我现在在 python 中使用unixuser.org/~euske/python/pdfminer,可以很好地处理德语和土耳其语的特殊字符。不过,我仍然对 ghostscript 感到失望,我想坚持使用基本工具。 我不需要截图,我可以看德语。但是,当尝试查看文本是如何处理的时,如果只有六个字符而不是几百个字符,那么调试起来会容易得多,只有几个字符说明了问题。必须调试过去数十或数百个有效的字符意味着很有可能会错过一个无效的字符。我建议打开错误报告的原因是因为它看起来应该可以工作。如果不是,那意味着它是一个错误,恐怕我们软件工程师还没有想出神奇的关闭错误标志:-) 好的,我告诉他们了,他们让我举报:bugs.ghostscript.com/show_bug.cgi?id=697932 “问题”是输出是 UTF-8 并且您似乎期待 ASCII。不仅如此,您还期待“扩展”ASCII,其中超过 127 (0x7f) 的字符具有特定含义。这些是依赖于语言的,因此输出实际上写入了 UTF-8 编码的 Unicode 代码点。如果您使用支持 UTF-* 的文本编辑器,它应该可以正常工作,它对我有用。

以上是关于Ghostscript 在阅读 PDF 时会破坏变音符号的主要内容,如果未能解决你的问题,请参考以下文章

让 Graphic Magick 检测 Ghostscript 以在 Windows 上阅读 pdf。如何将 WINDOWS CMD 上的 Ghostscript 调用名称更改为“gs”?

使用 ghostscript 实现与 imagemagick 的转换相同的 PDF 压缩

Ghostscript PDF批量压缩

使用 Ghostscript 调整多页混合格式 PDF 的大小?

如何使用 Ghostscript 将 AI(嵌入 PDF)裁剪为 PNG?

PDF 上的 Ghostscript 邮票图像