Python PDFファイルをテキストファイルに変換してみる
2023年7月2日
PDFファイルの内容をAIを使って要約したり、Q&A応答のできるプログラムが組んでみたいと思い、
まずはPDFファイルからテキスト情報を抜き出したいと思います。
今回は「PDFminer」と言うライブラリを使用してみました。
PDFminerライブラリのインストール
以下を実行するだけです。
!pip install pdfminer.six
PDFminerを用いたコードの実行
Fast-Whisperを紹介した記事をPDFファイルにしたので、これを用いていきます。
コードと同じフォルダに格納してください。
アツシさんの記事を参考にさせて頂きました。
以下のコードを実行します。
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.layout import LAParams
from io import StringIO
file_name="Fast-Whisper.pdf"
# binaryでFileオブジェクトを取得
fp = open(file_name, 'rb')
# 出力先をPythonコンソールするためにIOストリームを取得
outfp = StringIO()
# 各種テキスト抽出に必要なPdfminer.sixのオブジェクトを取得する処理
# PDFResourceManagerオブジェクトの取得
rmgr = PDFResourceManager()
# LAParamsオブジェクトの取得
lprms = LAParams()
# TextConverterオブジェクトの取得
device = TextConverter(rmgr, outfp, laparams=lprms)
# PDFPageInterpreterオブジェクトの取得
iprtr = PDFPageInterpreter(rmgr, device)
# PDFファイルから1ページずつ解析(テキスト抽出)処理する
for page in PDFPage.get_pages(fp):
iprtr.process_page(page)
# Pythonコンソールへの出力内容を取得
text = outfp.getvalue()
# I/Oストリームを閉じる
outfp.close()
# TextConverterオブジェクトの解放
device.close()
# Fileストリームを閉じる
fp.close()
# Jupyterの出力ボックスに表示する
print(text)
無事にテキストファイルが抽出できました。
表の部分は行列が順序バラバラで抽出されているため、取り扱いには注意が必要そうです。(以下、出力結果)
Large-v2 model on GPU Implementation Precision Beam size Time Max. GPU memory Max. CPU memo openai/whisper fp16 faster-whisper fp16 5 5 4m30s 11325MB 9439MB 54s 4755MB 3244MB
とりあえずは、PDFファイルからテキスト情報を抽出することはできました。前進です。
ここまで。