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.
Using PyPDF2 to Extract PDF Text
PDFからテキストを取り出すにはPyPDF2を使って行うことが出来ます。 どのように動作するか見てみましょう。
1.パッケージのインストール
PyPDF2をシステムにインストールするには、ターミナルで次のコマンドを入力します。 pipパッケージマネージャについてはこちらをご覧ください。
pip install pypdf2
2.Import PyPDF2
新しいPython notebookを開いてPYPDF2インポートから始めましょう。
import PyPDF2
3.バイナリモードでPDFを開く
次のコードの行を使ってバイナリモードでPDFを開くことから始めます:
pdf = open('sample_pdf.pdf', 'rb')
これはPDF用のPdfFileReaderオブジェクトを作って変数 ‘pdf’ に格納します. PyPDF2.PdfFileReader()を使ってテキストを読む
ここで、PyPDF2のPdfFileReader()メソッドを使ってファイルを読み込むことができるようになりました。
pdfReader = PyPDF2.PdfFileReader(pdf)
PDFの最初のページからテキストを取得するには、次のコード行を使用します:
page_one = pdfReader.getPage(0)print(page_one.extractText())
我々は次の出力を得ます:
Hello World. !This is a sample PDF with 2 pages. !This is the first page. !Process finished with exit code 0
ここで我々はページをオブジェクトとして格納するgetPageメソッドを使用しています。 次に、extractText() メソッドを使用して、ページオブジェクトからテキストを取得しました。
取得したテキストはString型です。
同様に、PDFから2ページ目を取得するために使用します。
page_one = pdfReader.getPage(1)print(page_one.extractText())
私たちは次のような出力を得ます。
This is the text on Page 2.
Complete Code to Read PDF Text using PyPDF2
このセクションの完全なコードは次のとおりです:
import PyPDF2pdf = open('sample_pdf.pdf', 'rb')pdfReader = PyPDF2.PdfFileReader(pdf)page_one = pdfReader.getPage(0)print(page_one.extractText())
上の出力で、最初のページのフォーマットが少しずれていることに気づいた場合。 これは、PyPDF2 が PDF を読むのにあまり効率的でないためです。
幸運なことに、Python には PyPDF2 に代わるより良いものがあります。 次はそれについて見ていきます。
PDFplumber を使用してテキストを抽出する
PDFplumber は、PDF からテキストを抽出できるもう 1 つのツールです。
1.パッケージのインストール
さっそくPDFplumberをインストールしてみましょう。
pip install pdfplumber
2.Import pdfplumber
次のコード行を使ってPDFplumberをインポートから始めます :
import pdfplumber
3.Import pdfplumber
1. PDFplumberを使ってPDFを読む
次のコード片を使ってPDFplumberを使ってPDFを読み始めることができます:
with pdfplumber.open("sample_pdf.pdf") as pdf: first_page = pdf.pages print(first_page.extract_text())
これはPDFの最初のページからテキストを取得します。 出力は次のようになります:
Hello World. This is a sample PDF with 2 pages. This is the first page. Process finished with exit code 0
これをPyPDF2の出力と比較して、書式設定に関してPDFplumberがいかに優れているかを確認することができます。
PDFplumber には、PDF から他の情報を取得するオプションも用意されています。
たとえば、ページ番号を取得するために .page_number を使用することができます。
print(first_page.page_number)
Output :
です。