从postscript中提取文本和/或使用python创建叠加层

时间:2012-10-11 10:44:47

标签: python postscript

我正在尝试从已经被redmon拦截并通过管道传输到python程序的postscript文档中自动提取地址。我已经达到了可以捕获postscript输出(并将其写入文件)的程度,但我被困在提取部分。

在python中有没有一个好的/可靠的方法,或者我是否需要通过ps2ascii运行postscript文件并希望最好?

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

2 个答案:

答案 0 :(得分:2)

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

作为澄清:是的,我知道Postscript文档显示的内容是用一种名为Postscript的精美颠倒或反向美观的语言编写的程序的结果。但是,在大多数情况下,grep程序源就足够了。在其他一些情况下,文本可能被编码为曲线或位图,并且没有办法在没有OCR的情况下将其提取到渲染输出中。

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

答案 1 :(得分:2)

因为我评论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',')')

注意,精细格式化(kerned)的postscript通常会将字符串分成小块(甚至是单个字符)。 ps2ascii很好地为你拼凑它们,而显然我的简单脚本不会。