Ruby - PDF からテキスト抽出!

Updated:


Ruby を使って PDF ファイルからテキストを抽出する方法についての記録です。

ちなみに、直接 PDF からテキストを抽出するのなら、XpdfPoppler 等の pdftotext というコマンドを使用して以下のようにすれば可能のようです。(未確認)

$ pdftotext test.pdf test.txt

記録

0. 前提条件

  • Linux Mint 13 Maya (64bit) での作業を想定。
  • Ruby は 1.9.3-p327 を使用。

1. PDF::Reader ライブラリのインストール

PDF::Reader の RubyGems ライブラリが未インストールならインストールする。

$ sudo gem install pdf-reader

2. テスト用スクリプトの作成

テスト用の Ruby スクリプトを作成する。 (読み込む PDF ファイル “test_pdfreader.pdf” を Ruby スクリプトと同じディレクトリに置いている)

require 'pdf/reader'

File.open("test_pdfreader.pdf", "rb") do |io|
  # インスタンス化
  reader = PDF::Reader.new(io)

  # PDF情報出力
  puts reader.pdf_version
  puts reader.info
  puts reader.page_count

  # ページ単位で読み込み、テキスト出力
  reader.pages.each do |page|
    puts page.text
  end
end

※詳細は README.rdoc を参照。

3. テスト用スクリプトの実行

今回のスクリプトでは、PDF バージョン・PDF 情報・ページ数を出力した後、ページ毎に取得したテキストを出力している。

$ ruby test_pdfreader.rb
1.5
{:CreationDate=>"D:20121002101217+09'00'", :Creator=>"PScript5.dll Version 5.2.2", :ModDate=>"D:20121002101301+09'00'", :Producer=>"Acrobat Distiller 9.5.1 (Windows)", :Title=>""}

5
日経平均株価みなし額面一覧 (2012/10/2現在)
コード社名みなし額面(円)
1332日本水産50
1334マルハニチロホールディングス50
1605国際石油開発帝石50000
1721コムシスホールディングス50
1801大成建設50
1802大林組50
1803清水建設50
1812鹿島50
1925大和ハウス工業50
1928積水ハウス50
1963日揮50
2002日清製粉グループ本社50
    :

参考サイト

  • [pdf-reader RubyGems.org your community gem host](http://rubygems.org/gems/pdf-reader “pdf-reader RubyGems.org your community gem host”)

PDF ファイルを読み込んで処理したい場合等に、PDF ファイルからテキストファイルにコピペして作業しなくてもよくなり大変便利です。

以上。





 

Sponsored Link

 

Comments