0

redmon によってインターセプトされ、Python プログラムにパイプされた PostScript ドキュメントからアドレスを自動的に抽出しようとしています。PostScript 出力をキャプチャ (およびファイルに書き込む) できるようになりましたが、抽出部分で行き詰っています。

Pythonでこれを行う良い/信頼できる方法はありますか、またはps2asciiを介してpostscriptファイルを実行し、最善を尽くす必要がありますか?

これを行うことができる他の言語のツールがあれば、喜んで評価します。

4

2 に答える 2

2

実際、ほとんどの場合、Postscript ドキュメントは通常のテキスト ファイルであるため、Postscript を解析するだけで十分です。

明確にするために: はい、私は、Postscript ドキュメントが表示するものは、Postscript と呼ばれる美しく反転した、または逆に美しい言語で書かれたプログラムの結果であることを認識しています。ただし、ほとんどの場合、プログラム ソースを grep するだけで十分です。場合によっては、テキストが曲線またはビットマップとしてエンコードされ、レンダリングされた出力を OCR する以外にテキストを抽出する方法がない場合があります。

結論: 抽出したい情報の種類と、Postscript ファイルの種類によって異なります。私の見解でps2asciiは、 は優れたツールであり、問​​題を解決する 1 つの方法ですが、(i) 成功を保証するものではありません (ソースを grep するよりも少し多いかもしれません) (ii) 大部分は演算子を取り除くだけであり、(iii) )、場合によっては、テキストが失われる可能性があります。

于 2012-10-11T10:48:23.743 に答える
2

フットプリントが大きい ps2ascii についてコメントしたので、Python を使用してポストスクリプト ファイルに文字通り表示される文字列を抽出する「80%」のソリューションを次に示します。


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 はそれらをうまくつなぎ合わせてくれますが、私の単純なスクリプトではうまくいきません。

于 2012-10-11T19:39:47.173 に答える