LoginSignup
4
7

PythonでPDFをテキストに変換し、テキストを抽出

Last updated at Posted at 2023-12-29

PDFドキュメントから情報を迅速かつ効率的に抽出することは、専門家にとって非常に重要です。大量のPDFファイルを処理する際に、PDFを編集可能なテキスト形式に変換することで時間と労力を節約することができます。そして、強力なPython言語がそのような場面で役立ちます。Pythonの豊富なAPIを活用して、PythonプログラムでPDFをテキスト(txtファイル)に簡単に変換しPDFのテキストを容易に抽出することができます。

この記事では、Pythonを使用してPDFをテキストに変換する方法と、PythonのPDFファイル処理における役割を紹介します。以下のトピックを含みます:

この記事で使用する変換方法には、Spire.Doc for Pythonが必要です。公式ウェブサイトからダウンロードするか、PyPIを通じてインストールすることができます:pip install Spire.Doc

Pythonを使用してPDFをテキストに変換する手順

PDFをテキストに変換する前に、変換が提供する主な利点について理解しましょう:

  • 編集可能:PDFをテキストに変換することで、文書の操作が容易になります。テキストファイルはほとんどのデバイスで開いて編集することができます。
  • アクセシビリティ:テキストファイルはPDFに比べてアクセスしやすいです。コンピュータやモバイルデバイスで簡単にテキストファイルを閲覧できます。
  • 他のアプリケーションとの統合とデータ共有:テキストファイルはさまざまなアプリケーションやワークフローにシームレスに統合し、データの共有を実現することができます。

Pythonを使用してPDFドキュメントをテキストファイルに変換する手順は以下の通りです:

  1. モジュールをインポートします。
  2. PdfDocumentクラスのオブジェクトを作成し、LoadFromFile() メソッドを使用してPDFファイルをロードします。
  3. PdfTextExtractOptionsクラスのオブジェクトを作成し、テキストの抽出オプションを設定します。これにはすべてのテキストの抽出、非表示テキストの表示、指定領域のテキストのみの抽出、および単純な抽出などが含まれます。
  4. PdfDocument.Pages.get_Item() メソッドを使用してドキュメント内の各ページを取得し、各ページに基づいてPdfTextExtractorオブジェクトを作成し、Extract() メソッドを使用してページからテキストを抽出し、オプションを指定します。
  5. 抽出したテキストをテキストファイルとして保存し、PdfDocumentオブジェクトを閉じます。

レイアウトを維持しないPDFをテキストに変換

PDFをテキストに抽出する際に、シンプルな抽出方法を使用すると、プログラムは空白領域を保持せず、各文字列の現在のY位置を追跡し、Y位置が変化すると改行文字を出力結果に挿入します。

from spire.pdf import PdfDocument
from spire.pdf import PdfTextExtractOptions
from spire.pdf import PdfTextExtractor

# PdfDocumentクラスのオブジェクトを作成し、PDFファイルをロードします
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")

# テキストを保存するための文字列オブジェクトを作成します
extracted_text = ""

# PdfExtractorのオブジェクトを作成します
extract_options = PdfTextExtractOptions()
# シンプルな抽出方法を使用するように設定します
extract_options.IsSimpleExtraction = True

# ドキュメント内のページをループします
for i in range(pdf.Pages.Count):
    # ページを取得します
    page = pdf.Pages.get_Item(i)
    # ページをパラメータとして渡してPdfTextExtractorのオブジェクトを作成します
    text_extractor = PdfTextExtractor(page)
    # ページからテキストを抽出します
    text = text_extractor.ExtractText(extract_options)
    # 抽出されたテキストを文字列オブジェクトに追加します
    extracted_text += text

# 抽出されたテキストをテキストファイルに書き込みます
with open("output/抽出テキスト.txt", "w", encoding="utf-8") as file:
    file.write(extracted_text)
pdf.Close()

元のドキュメント
レイアウトを維持しないPDFをテキストに変換

出力されたテキストファイル
レイアウトを維持しないPDFをテキストに変換

レイアウトを維持するテキストにPDFを変換

PDFのデフォルトの抽出方法を使用すると、プログラムは空白を含めてテキストを行ごとに抽出します。

from spire.pdf import PdfDocument
from spire.pdf import PdfTextExtractOptions
from spire.pdf import PdfTextExtractor

# PdfDocumentクラスのオブジェクトを作成し、PDFファイルをロードします
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")

# テキストを保存するための文字列オブジェクトを作成します
extracted_text = ""

# PdfExtractorのオブジェクトを作成します
extract_options = PdfTextExtractOptions()

# ドキュメント内のページをループします
for i in range(pdf.Pages.Count):
    # ページを取得します
    page = pdf.Pages.get_Item(i)
    # ページをパラメータとして渡してPdfTextExtractorのオブジェクトを作成します
    text_extractor = PdfTextExtractor(page)
    # ページからテキストを抽出します
    text = text_extractor.ExtractText(extract_options)
    # 抽出されたテキストを文字列オブジェクトに追加します
    extracted_text += text

# 抽出されたテキストをテキストファイルに書き込みます
with open("output/抽出テキスト.txt", "w", encoding="utf-8") as file:
    file.write(extracted_text)
pdf.Close()

出力されたテキストファイル
レイアウトを維持するテキストにPDFを変換

指定したPDFページ領域からのテキスト抽出

from spire.pdf import PdfDocument
from spire.pdf import PdfTextExtractOptions
from spire.pdf import PdfTextExtractor
from spire.pdf import RectangleF

# PdfDocumentクラスのオブジェクトを作成し、PDFファイルをロードします
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")

# PdfExtractorのオブジェクトを作成します
extract_options = PdfTextExtractOptions()

# 特定のページ領域を抽出するように設定します
extract_options.ExtractArea = RectangleF(50.0, 220.0, 700.0, 200.0)

# ページを取得します
page = pdf.Pages.get_Item(0)

# PdfTextExtractorのオブジェクトを作成します
text_extractor = PdfTextExtractor(page)

# ページからテキストを抽出します
extracted_text = text_extractor.ExtractText(extract_options)

# 抽出されたテキストをテキストファイルに書き込みます
with open("output/抽出テキスト.txt", "w", encoding="utf-8") as file:
    file.write(extracted_text)
pdf.Close()

出力されたテキストファイル
指定したPDFページ領域からのテキスト抽出

結論

この記事では、Pythonを使用してPDFをテキストに変換する方法について説明しました。操作手順とコードの例に従うことで、Pythonプログラムで迅速なPDFからテキストへの変換を実現することができます。Spire.PDF for Pythonの使用中に問題が発生した場合は、Spire.PDFフォーラムで技術サポートを入手できます。

4
7
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
4
7