昨日の札幌は風が強かったです。うちのゴミ箱のフタが飛んでいきました。
さて、地道に作成しているPebbleの札幌東豊線の時刻表アプリなのですが、それになりに動くようになって、平日の栄町駅だけは使えるようになりました。
栄町は入ったけど、福住の住をいれようとすると豆腐になる。コード間違えてんのかな。うーん pic.twitter.com/CfgdjTE14A
— Daisuke Igarashi (@planset) 2014, 5月 18
位置によって最寄りの駅に切り替わることも確認できたので、あとは時刻表データを作るだけです。
いつもスマホで時刻表を見るときは [札幌市営]東豊線の時刻表 – えきから時刻表 を使っているのですが、データだけ抜くのは忍びないので、市が出している何かを参考にすることにしました。
しかし見渡した限り全部PDFです。おーのー!
ただ、このPDFはテキスト情報が含まれているPDFなので、
この文字を使えば、簡単に時刻表(の文字列)をゲットできて楽ができるかもしれない!!!
本題:pythonでPDFからテキスト情報を取得しよう
pythonからPDFを扱うにはPyPDF2を使います。
インストール
[code] pip install pypdf2 [/code]
PDFからテキストを取得する
[python]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import PyPDF2
def get_pdf_text(path):
"""PDFファイルからテキスト情報を抜き出す"""
text = ""
pdf = PyPDF2.PdfFileReader(open(path, "rb"))
for i in range(0, pdf.getNumPages()):
text += pdf.getPage(i).extractText() + "\n"
text = " ".join(text.replace(u"\xa0", " ").strip().split())
return text
if __name__ == ‘__main__’:
print(get_pdf_text(‘hogehoge.pdf’))
[/python]
実行してみる
これを東豊線の栄町駅PDFに対して実行してみます。
[code] WeekdaysSaturdays/Sundays/Holidays6 01020293846546 01020293847557 2 91419232731353943475155597 311192632384450568 3 711151923273135394347528 2 8142026334047549 0 7152230374451599 2 91724313845525910 61320273542495610 71421283542495611 31118253239465411 31118253239465412 1 81522303744515812 1 81522303744515813 61320273441495613 61320273441495614 31017253239465314 31017253239465315 1 81522303744525915 1 81522293644515816 6132128354146525716 51220273441485617 3 813182329344045515617 31017243139465318 1 6121723283439455218 0 71522293643515919 0 816243240485619 715243240485620 412202937455320 412202937455321 1 917253341495721 1 917253341495722 5132230405022 5132230405023 0102030405023 010203040500 00 0Last Trains for Transfers from This Station.For MiyanosawaFor FukuzumiFor Shin sapporoTransfer at OdoriTransfer at SapporoTransfer at OdoriTransfer at Odori [/code]
おおおお! テキストになった!!!
けど、これの解析はどうやろう。めんどくさい\(^o^)/
(ちなみにPDFリーダーで開いて、CTRL-Aでテキストを全選択してテキストをコピペしたほうが、もうちょっと読みやすいテキストで取得できます)
つづく。