Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでPDFをテキストに変換するには?PDFMinerとpypdfの使い方を解説

PDFMinerを使ってPDFをテキストに変換する

PythonでPDFファイルをテキストに変換したい場合、PDFMinerパッケージが利用できます。現在は後継版である「pdfminer.six」が広く使われているため、こちらの利用を推奨します。

まず、pipでインストールします。

pip install pdfminer.six

基本的なコード例

以下のように記述することで、PDFからテキストを抽出できます。

from io import StringIO

from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.layout import LAParams
from pdfminer.converter import TextConverter


def pdfparser(data):
    fp = open(data, 'rb')
    resource_manager = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(resource_manager, retstr, codec=codec, laparams=laparams)
    interpreter = PDFPageInterpreter(resource_manager, device)

    # ドキュメント内の各ページを処理する
    for page in PDFPage.get_pages(fp):
        interpreter.process_page(page)
    text = retstr.getvalue()
    print(text)


pdfparser('filename.pdf')

このコードでは、PDFファイルを読み込み、PDFPageInterpreterクラスのprocess_page()メソッドを使って、ドキュメント内のページを1ページずつ処理しながらテキストを抽出しています。レイアウト解析の挙動はLAParamsで細かく調整可能です。

もっと簡単な方法:extract_text関数

pdfminer.sixには、数行で完結する高レベルAPIも用意されています。単純に全テキストを取得したいだけなら、以下の書き方が最も手軽です。

from pdfminer.high_level import extract_text

text = extract_text('filename.pdf')
print(text)

代替ライブラリ:pypdf(旧pyPdf)

PDFMiner以外にも、よりシンプルなAPIを持つpypdf(旧称:pyPdf/PyPDF2)というライブラリがあります。正しく生成された整形済みのPDFであれば、このライブラリで十分に動作します。

pip install pypdf

テキスト(スペース込み)だけを抽出したい場合は、次のように書けます。

import pypdf

pdf = pypdf.PdfReader(open('filename.pdf', 'rb'))
for page in pdf.pages:
    print(page.extract_text())

このように、すべてのページをループ処理し、extract_text()メソッドを呼び出すだけでテキストを取り出せます。コード量が少なく直感的なので、簡単な用途にはpypdfが便利です。

使い分けのポイント

  • pdfminer.six:レイアウトやフォント情報まで考慮した高精度な抽出が必要な場合に適しています。複雑な構造のPDFに強い反面、コードはやや冗長になります。
  • pypdf:シンプルなテキスト抽出ならこれで十分です。APIが簡潔で扱いやすい一方、複雑なレイアウトのPDFでは精度が落ちる場合があります。

なお、スキャン画像で作られたPDF(画像ベースのPDF)はどちらのライブラリでもテキスト化できないため、その場合はTesseractなどのOCRツールとの組み合わせが必要になる点に注意してください。

  1. テキストマイニングの活用事例とは?ビジネスで役立つ4つの応用分野を徹底解説

    テキストマイニングは「テキスト分析」とも呼ばれ、非構造化テキストを構造化データへ変換し、容易に分析できるようにするプロセスです。自然言語処理(NLP)を活用することで、コンピュータが人間の言語を理解し、自動的に処理できるようになります。テキストマイニングとは、日常的な言語で書かれたテキストから意味のある情報を抽出するプロセスと定義されます。テキストメッセージ、業務記録、メール、各種ドキュメントなど、平易な文章で記述されたデータから、有益なインサイトやパターンを導き出すために広く活用されています。ここでは、テキストマイニングの代表的な応用分野を4つご紹介します。1. リスク管理リスク管理とは、組

  2. DESのバリエーションとは?Double DESとTriple DESの違いを徹底解説

    DESのバリエーションとは? データ暗号化標準(DES)には、主に以下の2つのバリエーションがあります。 Double DES(ダブルDES) Triple DES(トリプルDES) Double DES(ダブルDES)の仕組み Double DESは、同じ平文に対して2段階のDES処理を適用する暗号化方式です。各段階では異なる鍵を使用して平文を暗号化し、復号時には両方の鍵が必要になります。 64ビットの平文は、まず最初のDESインスタンスに入力され、1つ目の鍵を使って64ビットの中間テキストへと変換されます。続いて、この中間テキストが2番目のDESインスタンスに入力され、2つ目の鍵によ