PDFは、テキストを共有するための一般的な方法です。
PDFはPortable Document Formatの略で、.pdfというファイル拡張子を使用します。
これは1990年代初頭にAdobe Systems社によって作成されました。
Pythonを使用してPDF文書を読むと、さまざまなタスクを自動化するのに役立ちます。
この記事では、PythonでPDFファイルからテキストを抽出する方法を学びます。
さっそく始めてみましょう。
この記事もチェック:Pythonのfpdfモジュールを使って文字列やファイルを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 を使用することができます。
結果は以下の通りです。
出力:
PDFPlumberのメソッドについてより詳しく知るには、その公式ドキュメントを参照してください。
まとめ
この記事では、PDFからテキストを読み取ることについて説明しました。
2つの異なるツールを見て、一方が他方より優れていることを確認しました。
PDFからテキストを読み取る方法がわかったところで、自然言語処理を始めるためにトークン化についてのチュートリアルを読んでください!