1. ホーム
  2. python

[解決済み] Python で PDFMiner を使って PDF ファイルからテキストを抽出する?

2022-11-01 11:25:24

質問

私はドキュメントを探しています または PythonでPDFMinerを使用してPDFファイルからテキストを抽出する方法についての文書または例を探しています。

PDFMinerはAPIを更新したようで、私が見つけたすべての関連する例は古いコード(クラスとメソッドが変更された)を含んでいます。 私が見つけた、PDFファイルからテキストを抽出するタスクを容易にするライブラリは、古いPDFMiner構文を使用しているので、これをどのように行うかわかりません。

このままでは、ソースコードを見ているだけで、どうにかなりそうです。

どのように解決するのですか?

現バージョンのPDFMiner(2016年9月)を使用して、PDFファイルからテキストを抽出する作業例を示します。

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

def convert_pdf_to_txt(path):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = open(path, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0
    caching = True
    pagenos=set()

    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
        interpreter.process_page(page)

    text = retstr.getvalue()

    fp.close()
    device.close()
    retstr.close()
    return text

PDFMinerの構造が最近変わったので、これでPDFファイルからテキストを抽出することができるはずです。

編集 : 2018年6月7日現在、まだ動作しています。Pythonバージョン3.xで検証済み。

編集:2019年10月3日時点のPython 3.7で解答が動きます。Pythonのライブラリである pdfminer.six , 2018年11月にリリースされたものです。