Python PDFファイルをテキストファイルに変換してみる

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ファイルからテキスト情報を抽出することはできました。前進です。

ここまで。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

16 − two =