3

シンプルな Ruby プログラムを使用して、単純な pdf ファイルを解析し、興味のあるテキストを抽出しようとしました。pdf-readerは、pdf ファイルの解析に非常に優れた宝石であることがわかりました。その宝石で与えられた例とその周りのいくつかのチュートリアルを読みました。

コールバック メソッドを試したところ、pdf ファイルからすべてのテキストを取得できました。しかし、一部のコールバックの引数の背後にある概念がわかりませんでした。

たとえば、pdf に 3 列と 2 行の単純なテーブルがあるとします。(ヘッダー行の値は Name、Address、Age) で、最初の行の値は (Arun、Hoskote、22) であり、U が Ruby スクリプトに従って Ruby を実行すると

receiver = PDF::Reader::RegisterReceiver.new
reader = PDF::Reader.new("Arun.pdf")
reader.pages.each do |page|
    page.walk(receiver)
    receiver.callbacks.each do |cb|
      puts cb.inspect
    end
end

一連のコールバックが表示されますが、そのうちのいくつかの興味深いコールバックshow_text_with_positioningは次のようなものです。

{:name=>:show_text_with_positioning, :args=>[["N", 5, "am", -4, "e"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}
{:name=>:show_text_with_positioning, :args=>[["Ad", 6, "d", 3, "ress"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}
{:name=>:show_text_with_positioning, :args=>[["Age"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}
{:name=>:show_text_with_positioning, :args=>[["Ar", 4, "u", 3, "n"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}
{:name=>:show_text_with_positioning, :args=>[["H", 3, "o", -5, "sk", 9, "o", -5,     "te"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}
{:name=>:show_text_with_positioning, :args=>[["22"]]}
{:name=>:show_text_with_positioning, :args=>[[" "]]}

上記のコールバックから、 args は pdf ファイルに関して何を表していますか? この例で「Arun」(ここに何でも来ることができます) または age 値 i,e '25' (ここに来ることができるすべての値) である名前の値のみを抽出したい場合、ruby プログラムでどのようにそれを行うことができますか? PDFファイルから単一の「関心のある」値のみを取得するPDFパーサーAPIまたはRuby APIはありますか?

必要なテキストを提供する、関心のある特定のコールバックにアクセスする Ruby プログラムを作成するにはどうすればよいですか?

4

1 に答える 1

0

特にテキストのみが必要な場合は、次のようにすることができます (ただし、テキストの宛先として別のストリームを使用する可能性があります)。

receiver = PDF::Reader::TextReceiver.new($stdout)
PDF::Reader.file("Arun.pdf", receiver)

テキストを取得したら、正規表現などを使用して、必要な特定の値を取得できます。

于 2015-04-20T04:32:48.610 に答える