我正在尝试从已经被redmon拦截并通过管道传输到python程序的postscript文档中自动提取地址。我已经达到了可以捕获postscript输出(并将其写入文件)的程度,但我被困在提取部分。
在python中有没有一个好的/可靠的方法,或者我是否需要通过ps2ascii运行postscript文件并希望最好?
如果有其他语言的工具可以做到这一点,我很乐意评估它们。
答案 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很好地为你拼凑它们,而显然我的简单脚本不会。