HTBエナジーの「電気ご使用量のお知らせ」PDFファイルをRubyでパースする
2020/11/06
過去の電気料金のデータでゴニョゴニョしたかった。
どうやって取るか考えて、やったことのないPDFをパースして取得することにした。
PDFは毎月メールでPDFが送られてくる。
gem install pdf-reader
app.rb
require 'pdf-reader'
reader = PDF::Reader.new('filename.pdf')
page = reader.pages.first
result = page.text.delete(' ').split("\n").each_with_object({}) do |row, hash|
case
when row.include?('ご契約種別')
hash['年月'] = row[/(\d+年\d+月分)/, 1]
when row.include?('ご契約容量')
hash['使用量'] = row[/(\d+)kWh/, 1].delete(',').to_i
when row.include?('請求予定金額')
hash['請求金額'] = row[/([\d,]+)円/, 1].delete(',').to_i
when row.include?('基本料金')
hash['基本料金'] = row[/([\d,.]+)/, 1].delete(',').to_f
when row.include?('電力量1段料金')
hash['電力量1段料金'] = row[/([\d,.]+)円/, 1].delete(',').to_f
when row.include?('電力量2段料金')
hash['電力量2段料金'] = row[/([\d,.]+)円/, 1].delete(',').to_f
when row.include?('電力量3段料金')
hash['電力量3段料金'] = row[/([\d,.]+)円/, 1].delete(',').to_f
when row.include?('燃料費調整額')
hash['燃料費調整額'] = row[/([\d,.-]+)円/, 1].delete(',').to_f
when row.include?('再エネ発電促進賦課金')
hash['再エネ発電促進賦課金'] = row[/([\d,.]+)円/, 1].delete(',').to_f
end
end
puts result
$ ruby app.rb
{"年月"=>"2020年9月分", "使用量"=>310, "請求金額"=>7703, "基本料金"=>815.1, "電力量1段料金"=>2256.0, "電力量2段料金"=>4514.4, "電力量3段料金"=>289.6, "燃料費調整額"=>-1094.3, "再エネ発電促進賦課金"=>923.0}"}
とりあえず雑だけど、取りたい値は取れたので良き。
Gem使ったとしても綺麗に取れるわけじゃなかったので、もうPDFのパースはしたくない。