PythonのPyPDF2の使い方|インストールからテキストの抽出までを解説

スポンサーリンク

PDFは、テキストを共有するための一般的な方法です。

PDFはPortable Document Formatの略で、.pdfというファイル拡張子を使用します。

これは1990年代初頭にAdobe Systems社によって作成されました。

Pythonを使用してPDF文書を読むと、さまざまなタスクを自動化するのに役立ちます。

この記事では、PythonでPDFファイルからテキストを抽出する方法を学びます。

さっそく始めてみましょう。

スポンサーリンク

PythonでPDFファイルからテキストを読み取る・抽出する

このチュートリアルの目的のために、我々は2ページでサンプルPDFを作成します。

Microsoft WordやGoogle Docsのようなワープロソフトを使用して、PDFとして保存することができます

1ページ目のテキスト

Hello World.
This is a sample PDF with 2 pages.
This is the first page.

2ページ目のテキスト。

This is the text on Page 2.

PyPDF2 を使って PDF のテキストを抽出する

PyPDF2を使って、PDFからテキストを抽出することができます

どのように動作するか見てみましょう。

1. パッケージのインストール

PyPDF2をシステムにインストールするには、ターミナルで次のコマンドを入力します。

パッケージマネージャのpipについてはこちらをご覧ください。

pip install pypdf2
import PyPDF2

2. PyPDF2のインポート

新しいPythonノートブックを開き、PyPDF2のインポートを開始します。

pdf = open('sample_pdf.pdf', 'rb')

3. PDFをバイナリ読み込みモードで開く

まず、以下のコードでPDFをバイナリ読み込みモードで開きます。

pdfReader = PyPDF2.PdfFileReader(pdf)

これは、PDFのためのPdfFileReaderオブジェクトを作成し、それを変数’pdf’に格納するものです。

4. PyPDF2.PdfFileReader()を使ってテキストを読み込む

これで、PyPDF2のPdfFileReader()メソッドを使ってファイルを読み込むことができるようになりました。

page_one = pdfReader.getPage(0)
print(page_one.extractText())

PDFの最初のページからテキストを取得するには、以下のコード行を使用します。

Hello World.
!This is a sample PDF with 2 pages. !This is the first page. !
 
Process finished with exit code 0

という出力が得られます。

page_one = pdfReader.getPage(1)
print(page_one.extractText())

ここでは、ページをオブジェクトとして格納するためにgetPageメソッドを使用しました。

次に、extractText() メソッドを使用してページオブジェクトからテキストを取得しました。

取得したテキストはString型です。

同様に、PDFから2ページ目を取得するには、以下を使用します。

This is the text on Page 2.

私たちは次のような出力を得ます。

import PyPDF2
pdf = open('sample_pdf.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdf)
page_one = pdfReader.getPage(0)
print(page_one.extractText())

PyPDF2 を使って PDF のテキストを読み取る完全なコード

このセクションの完全なコードを以下に示します。

pip install pdfplumber

上の出力では、最初のページの書式が少しずれていることにお気づきでしょうか。

これは、PyPDF2がPDFを読むのにあまり効率的でないためです。

幸いなことに、PythonにはPyPDF2に代わるより良いものがあります。

次はそれについて見ていきます。

PDFplumber を使ってテキストを抽出する

PDFplumberは、PDFからテキストを抽出することができるもう一つのツールです。

PyPDF2と比較して、より強力なツールです。

1. パッケージのインストール

さっそくPDFplumberをインストールしてみましょう。

import pdfplumber
with pdfplumber.open("sample_pdf.pdf") as pdf:
    first_page = pdf.pages[0]
    print(first_page.extract_text())

2. pdfplumberのインポート

まず、以下のコードを使ってPDFplumberをインポートします。

Hello World.
 
This is a sample PDF with 2 pages.
 
This is the first page.
 
 
Process finished with exit code 0

3. PDFplumber を使って PDF を読む

以下のコードで、PDFplumberを使ってPDFを読み始めることができます。

print(first_page.page_number)

これは、PDFの最初のページからテキストを取得します。

出力は次のようになります。

1

これをPyPDF2の出力と比較すると、書式に関してPDFplumberがいかに優れているかがわかります。

PDFplumberは、PDFから他の情報を取得するオプションも提供しています。

例えば、ページ番号を取得するために .page_number を使用することができます

Pypdf
Pypdf

結果は以下の通りです。

出力:

Pdfplumber
Pdfplumber

PDFPlumberのメソッドについてより詳しく知るには、その公式ドキュメントを参照してください。

まとめ

この記事では、PDFからテキストを読み取ることについて説明しました。

2つの異なるツールを見て、一方が他方より優れていることを確認しました。

PDFからテキストを読み取る方法がわかったところで、自然言語処理を始めるためにトークン化についてのチュートリアルを読んでください!

タイトルとURLをコピーしました