普段はCAM::PDFを使っているのだけど、pythonでPDFからdoiを抽出したくなったのでpyPdfを使ってみた。
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
from pyPdf import PdfFileReader
import re
doi_re = re.compile("10.(\d)+/([^(\s\>\"\<)])+")
input = PdfFileReader(file("1267.full.pdf", "rb"))
text = input.getPage(0).extractText()
m = doi_re.search(text)
print m.group(0)
結果
10.1124/dmd.107.019711.ABBREVIATIONS:PKPD,pharmacokinetic-pharmacodynamic;HGF,hepatocytegrowthfactor;PF02341066,
dmdだとdoiと文字の境目が切れないので余計な文字もついてきてしまうなぁ。prefixとsuffixを見ながら判断するようにするのがいいかな。
それにしても、meta情報のtitleに埋め込まれてたり、本文の1page目に書いてあったり、ファイル名そのものだったりと、論文からdoiを抽出するのは結構めんどくさいんだよなぁ。