0
2

[Python] PDF文書からテキストの抽出

Posted at

はじめに

PDFは仕事でよく使われるテキスト形式であり、共有や保存に便利です。ただし、その中のテキストを編集したい場合は、PDFからテキストを抽出することをお勧めします。PDFファイルが少ない場合は、専用のPDFリーダーソフトウェアを使用して手動でテキストを抽出できます。しかし、ファイルが多い場合は、プログラミングを使用してPDFのテキストを一括で抽出することができます。この記事では、Pythonを例に挙げて、PDF全体または指定範囲のテキストを抽出する方法を紹介します。

環境

このライブラリは購入する必要がありますが、30 日間の無料試用版も提供されています。
もっと多いサンプルコードについて、Spire.PDF for Pythonをダウンロードして参照してください。

準備

まず、Spire.PDF for Python と plum-dispatch v1.7.4を VS Code にインポートします。

  1. Python をダウンロードしてインストールします。
  2. VS Codeで「Extensions」をクリックし、「Python」を検索してインストールします。
  3. 「Explorer」-「NO FOLRDER OPENED」-「Open Folder」
  4. フォルダーを選択し、そこに「.py」ファイルを追加します。
  5. 「Terminal」-「New Terminal」
  6. 次のコマンドを入力します。
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()

image.png

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() メソッドを使用してテキストを抽出します。
image.png

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2