Python Ghostscript PDF到PNG:结果图像中单词的字符间距混乱

Python Ghostscript PDF到PNG:结果图像中单词的字符间距混乱,python,pdf,fonts,png,ghostscript,Python,Pdf,Fonts,Png,Ghostscript,从pdf文件中,我成功地为pdf中的每个页面生成了1个png图像 问题是,无论我使用什么设置,对于某些页面,GhostScript会弄乱字体间距,因此在某些PNG中,一个单词看起来像是2或3个单词 这是一个问题,因为我在evernote中使用这些文件,这会弄乱预期的搜索结果。因此,搜索“提供者”不会返回任何结果,因为在png文件中,它显示为“provider rs”(或“Users”显示为“Use rs”) Dropbox链接到屏幕截图,左侧显示源pdf的原始文本,右侧显示生成的png--> 我

从pdf文件中,我成功地为pdf中的每个页面生成了1个png图像

问题是,无论我使用什么设置,对于某些页面,GhostScript会弄乱字体间距,因此在某些PNG中,一个单词看起来像是2或3个单词

这是一个问题,因为我在evernote中使用这些文件,这会弄乱预期的搜索结果。因此,搜索“提供者”不会返回任何结果,因为在png文件中,它显示为“provider rs”(或“Users”显示为“Use rs”)

Dropbox链接到屏幕截图,左侧显示源pdf的原始文本,右侧显示生成的png-->

我对鬼脚本还不熟悉,我不知道为什么会发生这种情况

以下是我正在使用的命令行(在Python中):

cmd=“gswin%sc”%(SYS\u PROCESSOR\u ARCH)+“-q-dNOPAUSE-dBATCH-dPDFFitPage=true-sDEVICE=png16m-r%s”%”(PNG\u RES)+“-sOutputFile=“+”%s\%s-pg-%%d.%s”“%s”“%”(outputdir,outputfilename前缀,后缀,pdfSourceFile)

或在运行时进行评估:


gswin64c-q-dNOPAUSE-dBATCH-dPDFFitPage=true-sDEVICE=png16m-r300X300-sOutputFile=“C:\EPTK-TMP\02-01-Introduction-pg-%d.png”“C:\EPTK-TMP\02-01-Introduction.pdf”

pdf示例中的字体是无衬线字体(没有小的装饰性线条结尾等),png示例中的字体是衬线字体(带着小小的装饰…)

因此,在进行PDF到PNG转换时,GhostScript由于某些原因没有使用正确的字体。这可能有以下几个原因:

1) 字体可能不会嵌入到PDF文件中,因此GhostScript必须找出其他的东西

2) 这些字体在您的系统上也可能不可用,因此GhostScript只是用一些默认字体替换它们。这会改变字母的外观,可能还会改变字母的宽度,从而产生间距问题

因此,问题是您是否首先生成PDF。如果是这样,您可能需要做得更好,以便GhostScript可以使用嵌入的字体。如果不生成PDF,可以尝试找出这些PDF文件中使用的字体,并确保系统上的GhostScript可以使用这些字体


我对GhostScript不太熟悉,但可能字体已经在您的系统中,这只是GhostScript找不到它们的问题。在这种情况下,请查看是否有命令行参数将其指向系统上的正确字体文件夹。

如何在Evernote中搜索PNG中的文本?是否有某种光学字符识别发生?我们的目标仅仅是在Evernote中使用PDF文本吗?是的,曾经在图像上进行过出色的OCR。事实上,到了生成与原始文档(pdf文档)相同的搜索结果的程度。它与众不同之处在于,与只搜索pdf文本的pdf搜索不同,我能够可靠地搜索原始pdf文档(png img)中嵌入的任何图像上出现的字符;作为一个侧面的注释,因为原来的海报似乎感到惊讶的中间词的空白:你看到的字形是捆绑在PDF页面内容描述中的组;然而,这些组不一定是在单词边界上划分的,但是如果单词中两个字形之间的默认距离要更正,以便更好的视觉外观,也可以在单词中间划分。好点——在一篇关于角质化的好文章中对此进行更多解释(实际上我从未听过这个词)。谢谢大卫·范·德里斯。是的,我确实怀疑发生了字体替换。在为Ghostscript(GhostView)运行前端gui工具时,我确实在其输出日志中看到它通常在pdf上进行字体替换(无可否认,令我沮丧的是——再说一次,我不是Ghostscript或字体专家)。从生成的图像中可以明显看出,字体与原始字体有很大的不同,但为什么它选择了如此不同的字体呢?原始源pdf(不是我制作的)由另一个工具拆分成章节,然后由Ghostscript处理。[附加--原始注释太长]我不相信我已经尝试过用Ghostscript处理原始(大)pdf。谢谢您的回复@mkl:你指的是什么pdf页面内容描述?如果我能检查一下这个实际页面/行/文本字符串的描述,那就太好了。我没有提供这种功能的工具(它只列出pdf中出现的所有字体)。如果一个单词退化到不再是一个单词而是三个单词(更糟糕的是,字母实际上看起来像是重叠的),那么更好的视觉外观是没有意义的;是的,我认为这个惊人的行为。