从postscript提取文本和/或使用python创建覆盖

从postscript提取文本和/或使用python创建覆盖,python,postscript,Python,Postscript,我试图从一个postscript文档中自动提取一个地址,该文档已被redmon截获并通过管道传输到python程序。我已经到了可以捕获postscript输出(并将其写入文件)的地步,但我仍停留在提取部分 在python中是否有一种好的/可靠的方法来实现这一点,或者我是否需要通过PS2ASCI运行postscript文件并希望得到最好的结果 如果有其他语言的工具可以做到这一点,我很乐意对它们进行评估 实际上,在大多数情况下,只解析Postscript就足够了,因为Postscript文档是一个普

我试图从一个postscript文档中自动提取一个地址,该文档已被redmon截获并通过管道传输到python程序。我已经到了可以捕获postscript输出(并将其写入文件)的地步,但我仍停留在提取部分

在python中是否有一种好的/可靠的方法来实现这一点,或者我是否需要通过PS2ASCI运行postscript文件并希望得到最好的结果


如果有其他语言的工具可以做到这一点,我很乐意对它们进行评估

实际上,在大多数情况下,只解析Postscript就足够了,因为Postscript文档是一个普通的文本文件

澄清一下:是的,我知道Postscript文档显示的内容是用漂亮的反转语言或漂亮的反转语言Postscript编写的程序的结果。然而,在大多数情况下,grep程序源代码就足够了。在其他一些情况下,文本可能被编码为曲线或位图,除非对渲染输出进行OCR,否则无法提取文本


底线:这取决于您想要提取的信息类型,以及postscript文件的类型。在我看来,
ps2ascii
是一个很好的工具,也是解决问题的一种方法,但它(i)不能保证成功(可能比对源代码进行greping更有效)(ii)在很大程度上只是剥离操作符,(iii)在某些情况下可能导致文本丢失。

实际上,在大多数情况下,只解析Postscript就足够了,因为Postscript文档是普通文本文件

澄清一下:是的,我知道Postscript文档显示的内容是用漂亮的反转语言或漂亮的反转语言Postscript编写的程序的结果。然而,在大多数情况下,grep程序源代码就足够了。在其他一些情况下,文本可能被编码为曲线或位图,除非对渲染输出进行OCR,否则无法提取文本


底线:这取决于您想要提取的信息类型,以及postscript文件的类型。在我看来,
ps2ascii
是一个很好的工具,也是解决问题的一种方法,但它(i)不能保证成功(可能略高于对源代码进行灰色化)(ii)在很大程度上只是剥离操作符,(iii)在某些情况下可能,导致文本丢失。

因为我评论过PS2ASCI占用大量空间:下面是一个“80%”解决方案,用于使用python提取postscript文件中的字符串


import fileinput
for line in fileinput.input():
 for p in line.replace('\\(','EscapeLP').replace('\\)','EscapeRP').split('(')[1:]:
  print p[:p.find(')')].replace('EscapeLP','(').replace('EscapeRP',')')

请注意,格式精细(紧排)的postscript通常会将字符串分割成小块(甚至是单个字符)。ps2ascii在将它们拼接在一起方面做得很好,而我的简单脚本显然做不到。

因为我评论ps2ascii占用了大量空间:下面是一个“80%”解决方案,用于使用python提取postscript文件中出现的字符串


import fileinput
for line in fileinput.input():
 for p in line.replace('\\(','EscapeLP').replace('\\)','EscapeRP').split('(')[1:]:
  print p[:p.find(')')].replace('EscapeLP','(').replace('EscapeRP',')')

请注意,格式精细(紧排)的postscript通常会将字符串分割成小块(甚至是单个字符)。ps2ascii在为您拼接它们方面做得很好,而我的简单脚本显然做不到。

这在很大程度上取决于postscript文档的制作方式。如果您能给我们一个例子,它可能会对您有所帮助。最有可能的最佳方法是自己解析它-原因是您可以利用周围的代码(和注释)来确定哪些字符串是您需要提取的地址。首先看几个例子并查找目标字符串。发布一个示例,其中包含一些相关代码。这在很大程度上取决于postscript文档的制作方式。如果您能给我们一个例子,它可能会对您有所帮助。最有可能的最佳方法是自己解析它-原因是您可以利用周围的代码(和注释)来确定哪些字符串是您需要提取的地址。首先看几个例子并查找目标字符串。发布一个示例,并附带一些相关代码。postscript docuemtn是一个程序文件,与任何程序一样可读。它包含的文本可能确实嵌入到程序中的文字字符串中(这里是你的答案),但它也可能以各种其他方式编码。是的,这就是为什么我写“在大多数情况下”的原因。在PDF广泛传播之前的几天里,我一直在大量使用PS;显然,您可以将文本编码为贝塞尔曲线或位图,但通常您只需要对其进行grep处理。除非你有或想要鬼脚本,否则它不会是我的第一道攻击线+1.修改后的答案。。讨厌看到“-”…postscript docuemtn是一个程序文件,与任何程序一样可读。它包含的文本可能确实嵌入到程序中的文字字符串中(这里是你的答案),但它也可能以各种其他方式编码。是的,这就是为什么我写“在大多数情况下”的原因。在PDF广泛传播之前的几天里,我一直在大量使用PS;显然,您可以将文本编码为贝塞尔曲线或位图,但通常您只需要对其进行grep处理。除非你有或想要鬼脚本,否则它不会是我的第一道攻击线+1.修改后的答案。。我讨厌看到一个“-”。。