はじめに
PDFは仕事でよく使われるテキスト形式であり、共有や保存に便利です。ただし、その中のテキストを編集したい場合は、PDFからテキストを抽出することをお勧めします。PDFファイルが少ない場合は、専用のPDFリーダーソフトウェアを使用して手動でテキストを抽出できます。しかし、ファイルが多い場合は、プログラミングを使用してPDFのテキストを一括で抽出することができます。この記事では、Pythonを例に挙げて、PDF全体または指定範囲のテキストを抽出する方法を紹介します。
環境
- Python 3.12.0
- Spire.PDF for Pythonライブラリ
このライブラリは購入する必要がありますが、30 日間の無料試用版も提供されています。
もっと多いサンプルコードについて、Spire.PDF for Pythonをダウンロードして参照してください。
準備
まず、Spire.PDF for Python と plum-dispatch v1.7.4を VS Code にインポートします。
- Python をダウンロードしてインストールします。
- VS Codeで「Extensions」をクリックし、「Python」を検索してインストールします。
- 「Explorer」-「NO FOLRDER OPENED」-「Open Folder」
- フォルダーを選択し、そこに「.py」ファイルを追加します。
- 「Terminal」-「New Terminal」
- 次のコマンドを入力します。
pip install Spire.PDF
サンプルコード
PDFからすべてのテキストを抽出する
まず、必要なモジュールとクラスをインポートします。
from spire.pdf.common import *
from spire.pdf import *
PdfDocument オブジェクトを作成し、テキストを抽出する必要がある PDF文書を読み込みます。
pdf = PdfDocument()
pdf.LoadFromFile("C:/Users/Administrator/Desktop/Sample.pdf")
すべてのページを反復処理し、各ページを取得してそこからテキスト全体を抽出します。
for i in range(pdf.Pages.Count):
page = pdf.Pages.get_Item(i)
text = page.ExtractText()
txt ファイルを作成し、抽出したテキストをこのファイルに書き込みます。
extractedText = open("C:/Users/Administrator/Desktop/Text_1.txt", "w", encoding="utf-8")
extractedText.write(text + "\n")
extractedText.close()
pdf.Close()
PDFから指定された範囲のテキストを抽出する
この方法は、ページ内の一部のテキストのみを抽出する場合に適しています。
以下は参考コードです。
from spire.pdf import *
from spire.pdf.common import *
pdf = PdfDocument()
pdf.LoadFromFile("C:/Users/Administrator/Desktop/Sample.pdf")
指定したページを取得し、抽出するテキストの範囲を設定します。
page = pdf.Pages.get_Item(0)
text = page.ExtractText(RectangleF(0.0, 0.0, 890.0, 160.0))
抽出したテキストを新しく作成した txt ファイルに書き込みます。
extractedText = open("C:/Users/Administrator/Desktop/Text_2.txt", "w", encoding="utf-8")
extractedText.write(text)
extractedText.close()
pdf.Close()
この場合、ページをループする代わりに、指定されたページを直接取得してテキスト範囲を設定します。 次に、PdfPageBase.ExtractText() メソッドを使用してテキストを抽出します。