2008-10-18 16:24:07
pdf論文ファイルデータベースの続きですが、最後にpdfファイルからテキストを抽出して全文検索ができるように設定しておきたいところ。pyPdfというのが
あるっていうので、これを試してみることにした。ubuntuにはpdftoolsというパッケージがあるが、よくわからなかったのだった。
Recipe 511465: Pure Python PDF to text converterを参考にやってみたのだが……。しかし、妙にスペースがなくなって詰まった文字列が出力されてしまった。単語間のスペースが消えてしまうことが多いのである。もちろん、# Collapse whitespaceの行を外してみたりもしたのだけど。どうしたらいいのか解らないので、結局xpdfのpdftotextを使うことにした。このXPDFというのは本当に便利だ。MacOSXでも、ビューア以外は使える。さて、
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
filelist = os.listdir('./')
idlist = []
for pdf_file in filelist:
if pdf_file.find('pdf') > 0:
pmid = pdf_file.replace(".pdf","")
idlist.append(pmid)
for id in idlist:
cmd = "pdftotext -nopgbrk " + id + ".pdf"
os.system(cmd)
txt = open((id + '.txt'),'r').read()
print txt
print "-----------------------"
os.system("rm *.txt")
こんなふうにしてみた。os.system("command")で外部プログラムの実行ということで処理した。pdfという拡張子を外したり付けたり無駄なことをしているように見えると思うが、これは昨日からの作業の流れでこうなっているだけ。もちろん、テキスト抽出だけだったらこんなことをする必要はない。pdftotextはxyz.pdfというもので、ファイルから文字列を抽出するとxyz.txtというファイルに保存する。標準出力にする方法が解らなかったので、一旦txtファイルに保存してから、それを読み、作業後に削除することにした。削除もos.system("rm *.txt")で実行。
これでいいのかな。一応、pmidをファイル名としたpdfファイルから、掲載誌、著者、題名、発表年、要旨、全文テキストなど、必要な情報が得られたので、こいつをMySQLデータとして保存すると同時に、Amazon S3にpdfファイルを保存すれば目的は達成できる。少なくとも私の目的は。