本日のメニュー
大量の英文pdfファイルを読みたいのだけれど、英単語がそもそもわからない。
ひとまずpdfファイルをtextファイルに変換して、単語をリスト化して、頻出単語を上から順番に暗記しよう。きっとその方が早く読める!と信じることにした。
そういうわけで、大量の英文pdfファイルを鍋に投入し、茹でてtextファイルに変換することにした。
気分はさながら椀子そば大会のために大量のそばを茹でる気分。
調理台の環境
macOS
Python3.6
anaconda
食材
消化に困る大量のpdfファイル
調理器具
pdfminer ←インストール方法末尾の参照URLをチェック
os
re
PyPDF2よりも、pdfminerの方が良い結果を得られる、らしい。
調理の失敗として想定されること
日本語の文章には対応していない(と思われる)ので、ご留意ください。
今日の鍋
#! python3
# PdfToTextConverter.py
# PDFファイルの内容を読み込んで、textファイルとして出力
import os
import re
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO
pdf_folder_path = os.getcwd() # 現在のフォルダのパスを取得
text_folder_path = os.getcwd() + '/' + 'text_folder' # pathの表記がmac仕様。windowsの場合は、'/'を'\'に修正する。
os.makedirs(text_folder_path, exist_ok=True)
pdf_file_name = os.listdir(pdf_folder_path)
# name がPDFファイル(末尾が.pdf)の場合はTRUE、それ以外はFALSEを返す。
# こちらの投稿を引用・一部変更しました → http://qiita.com/korkewriya/items/72de38fc506ab37b4f2d
def pdf_checker(name):
pdf_regex = re.compile(r'.+\.pdf')
if pdf_regex.search(str(name)):
return True
else:
return False
# PDFをtextファイルに変換
def convert_pdf_to_txt(path, txtname, buf=True):
rsrcmgr = PDFResourceManager()
if buf:
outfp = StringIO()
else:
outfp = file(txtname, 'w')
codec = 'utf-8'
laparams = LAParams()
laparams.detect_vertical = True
device = TextConverter(rsrcmgr, outfp, codec=codec, laparams=laparams)
fp = open(path, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.get_pages(fp):
interpreter.process_page(page)
fp.close()
device.close()
if buf:
text = outfp.getvalue()
make_new_text_file = open(text_folder_path + '/' + path + '.txt', 'w')
make_new_text_file.write(text)
make_new_text_file.close()
outfp.close()
# フォルダ内のpdfファイル名取得してリスト化
for name in pdf_file_name:
if pdf_checker(name):
convert_pdf_to_txt(name, name + '.txt') # pdf_checkerを使い、TRUE(末尾が.pdfの場合)は変換に進む)
else:
pass # PDFファイルでない場合にはpass
完成品
胃もたれしそうな大量のtextファイル
次の調理
大量のtextファイルを椀に移して、頻出単語を500個くらい抽出する。
その単語の意味を覚える(英文を早く読むのに効果があるかは、不明)
参考文献、参照URL
http://qiita.com/korkewriya/items/72de38fc506ab37b4f2d
→pdfファイルをtextファイルに変換する部分は、こちらの記事から引用(一部改変)しました。
https://kusanohitoshi.blogspot.jp/2017/01/python3cstringiostringio.html
→StringIOのインポートエラーへの対処はこちらを参考にしました。
「退屈なことはPythonにやらせよう」
→osモジュールの使い方
http://www.unixuser.org/%7Eeuske/python/pdfminer/index.html
→pdfminerのページ
https://github.com/conda-forge/pdfminer-feedstock
https://conda-forge.org/feedstocks
→anaconda環境におけるpdfminerのインストール手順はこちらを参考にしました。