PythonでPDFを解析する方法:強力なステップバイステップガイド

PDFを PDF 解析するとは、PDFファイルから構造化または非構造化データを抽出することを意味します。PDFの複雑な構造のため、これには様々な課題があります。プレーンテキストや JSONXML のような構造化フォーマットとは異なり、PDFは内容を必ずしも線形の順序で保存するわけではありません。テキスト、表、画像、およびメタデータを抽出するには、信頼性が高く、正確で効率的なPython PDFパーサーライブラリが必要です。この記事では、Aspose.PDF for Pythonを使用してPythonでPDFを解析する方法を学びます。この

この記事では、以下のトピックについて説明します:

Aspose.PDF: ベスト Python PDF パーサーライブラリ

Aspose.PDF for Python は、今日利用可能な最高のPython PDFパーサーライブラリの一つです。高い精度を提供し、構造化データの抽出をサポートし、OCRサポートを通じてスキャンしたPDFでも機能します。

Aspose.PDFは、いくつかの理由からPython PDFパーサーライブラリの中でも際立っています:

  • 高精度: テキストと表を正確に抽出します。
  • 構造化データのサポート: テーブル、画像、メタデータと連携します。
  • 外部依存関係なし: 軽量で自己完結型のライブラリです。
  • 複数の出力形式: PDFをテキスト、XLSX、DOCX、HTML、および画像形式に変換します。
  • セキュリティと信頼性: データの破損なしに複雑なPDF構造を処理します。

オープンソースの代替品と比較して、Aspose.PDFはより堅牢で機能豊富なソリューションを提供しており、企業アプリケーションや文書自動化システムに最適です。

インストールと設定

Aspose.PDF for Pythonのインストールは簡単です。 releases からダウンロードするか、次の pip コマンドを実行してください。

pip install aspose-pdf

Aspose.PDF を Python アプリケーションで使用するには、必要なモジュールをインポートします:

import aspose.pdf as ap

テキストを抽出する: PythonでPDFを解析する

PDFからテキストを解析することは、Python PDFパーサーライブラリの主要な機能の1つです。PDFドキュメントのすべてのページまたは特定のページや領域からテキストを抽出できます。今後のセクションでは、以下のことを学びます:

PythonでPDFのすべてのページからテキストを解析する

Aspose.PDF for Python は、 DocumentTextAbsorber クラスを使用して PDF ドキュメントからテキストを抽出する効率的な方法を提供します。 Document クラスは PDF ファイルを読み込むために使用され、 TextAbsorber クラスはすべてのページからテキストコンテンツを抽出する責任があります。 accept() メソッドは各ページを処理し、テキストを抽出して、それを保存したり、必要に応じて表示したりすることができます。

PythonでPDFのすべてのページからテキストを抽出する手順

  1. Document クラスを使用して PDF ドキュメントをロードします。
  2. TextAbsorber クラスのインスタンスを作成して、テキスト抽出を処理します。
  3. pages コレクションの accept() メソッドを呼び出し、TextAbsorber がすべてのページを処理できるようにします。
  4. TextAbsorber インスタンスの text プロパティを使用して抽出されたテキストを取得します。
  5. Print the extracted text.

以下のコード例は、PythonでPDFのすべてのページからテキストを解析する方法を示しています。

# このコードの例は、PythonでPDF文書のすべてのページからテキストを抽出する方法を示しています。
import aspose.pdf as ap

# PDF ドキュメントを開く
document = ap.Document("AddText.pdf")

# テキストアブソーバーを作成します。
text_absorber = ap.text.TextAbsorber()

# すべてのページを処理するために accept メソッドを呼び出します
document.pages.accept(text_absorber)

# 取得したテキストを取得する
extracted_text = text_absorber.text

# ファイルパスを定義する
file_path = "extracted-text.txt"

# ファイルを書き込みモードで開き、抽出したテキストを書き込んでください。
with open(file_path, "w", encoding="utf-8") as tw:
    tw.write(extracted_text + "\n")  # Write the extracted text with a newline

PDFの特定のページからテキストを解析する

特定のページからPDFドキュメントのテキストを抽出するために、以前のアプローチを少し修正することができます。ドキュメント全体を処理する代わりに、Documentオブジェクトの希望するページでaccept()メソッドを呼び出すだけです。インデックスを使用してページ番号を指定するだけで、Aspose.PDFはそのページからのみテキストを抽出します。この方法は、大きなPDFを扱う際に、特定のセクションからのデータだけが必要な場合に役立ち、効率とパフォーマンスを向上させます。

次のコード例は、PythonでPDFの特定のページからテキストを解析する方法を示しています。

# このコード例は、Python で PDF ドキュメントの特定のページからテキストを抽出する方法を示しています。
import aspose.pdf as ap

# PDF文書を開く
document = ap.Document("AddText.pdf")

# テキストアブソーバーを作成する
text_absorber = ap.text.TextAbsorber()

# すべてのページを処理するためにacceptメソッドを呼び出します
document.pages[1].accept(text_absorber)

# 抽出されたテキストを取得してください。
extracted_text = text_absorber.text

# ファイルパスを定義します。
file_path = "extracted-text.txt"

# ファイルを書き込みモードで開き、抽出したテキストを書き込みます。
with open(file_path, "w", encoding="utf-8") as tw:
    tw.write(extracted_text + "\n")  # Write the extracted text with a newline

特定の地域からPDFのテキストを解析する

時々、PDFページの特定のセクションからテキストを抽出する必要があるかもしれません。文書全体からコンテンツを取得するのではなく、特定の領域をターゲットにするには、TextSearchOptionsRectangleプロパティを使用します。このプロパティは、目的の領域の座標を定義するRectangleオブジェクトを受け入れます。この境界を指定することで、ページの残りのコンテンツを無視して、選択した領域からのみテキストを抽出できます。

特定のページ領域からテキストを抽出する手順

  1. Document クラスを使用して PDF ドキュメントをロードします。
  2. ドキュメントからテキストをキャプチャするために、TextAbsorber クラスのインスタンスを作成します。
  3. TextSearchOptions.Rectangleを使用して、テキストを抽出するための領域を定義します。
  4. 特定のページにテキスト抽出を適用するには、選択したページで accept() メソッドを呼び出します。
  5. TextAbsorberText プロパティから抽出されたテキストを取得します。
  6. Process the output as needed.

次のコード例は、PythonでPDFページの特定の領域からテキストを解析する方法を示しています。

# このコード例は、Pythonを使用してPDF文書の特定のページ領域からテキストを抽出する方法を示しています。
import aspose.pdf as ap

# PDF ドキュメントを開く
document = ap.Document("sample.pdf")

# テキストを抽出するために TextAbsorber オブジェクトを作成します。
absorber = ap.text.TextAbsorber()
absorber.text_search_options.limit_to_page_bounds = True
absorber.text_search_options.rectangle = ap.Rectangle(100, 200, 250, 350, True)

# 最初のページのために吸収体を受け入れてください
document.pages[1].accept(absorber)

# Get the extracted text
extracted_text = absorber.text

# ファイルパスを定義してください。
file_path = "extracted-text.txt"

# ファイルを作成モードで開き、抽出されたテキストを書き込みます。
with open(file_path, "w", encoding="utf-8") as tw:
    tw.write(extracted_text + "\n")  # Write the extracted text with a newline

このアプローチは、テーブルセル、フォームフィールド、またはページの定義されたセクションから正確にテキストを抽出することを可能にし、文書自動化やデータ分析に最適です。

マルチカラムPDFからのテキスト抽出

PDF ドキュメントには、テキスト、画像、注釈、添付ファイル、グラフなどの要素が混在していることがよくあります。複数列の PDF を扱う際に、元のレイアウトを維持しながらテキストを抽出するのは challenging です。

Aspose.PDF for Python は、開発者が抽出前にテキストプロパティを操作できるようにすることで、このプロセスを簡素化します。フォントサイズを調整してからテキストを抽出することで、よりクリーンで構造化された出力を得ることができます。次の手順では、マルチカラムPDFから正確なテキスト抽出を行うためにこの方法を適用する方法を示します。

PythonでマルチカラムPDFからテキストを抽出する手順

  1. Document クラスを使用して PDF ドキュメントをロードします。
  2. TextFragmentAbsorberのインスタンスを作成して、ドキュメントから個々のテキストフラグメントを特定し抽出します。
  3. すべての検出されたテキストフラグメントを取得し、抽出精度を向上させるためにフォントサイズを70%減少させます。
  4. 変更された文書をメモリーストリームに保存して、中間ファイルを保存しないようにします。
  5. メモリストリームから PDF をロードして、調整されたテキストを処理します。
  6. TextAbsorberを使用して、修正されたドキュメントから構造化されたテキストを取得します。
  7. 抽出したテキストを今後の利用のために .txt ファイルに保存してください。

以下のコード例は、レイアウトを保持しながらマルチカラムPDFからテキストを抽出する方法を示しています。

# このコードの例は、PythonでマルチカラムPDFからテキストを抽出する方法を示しています。
import io
import aspose.pdf as ap

# PDF ドキュメントを開く
document = ap.Document("multi-column-sample.pdf")

# TextFragmentAbsorber オブジェクトを作成してテキストを抽出します。
text_fragment_absorber = ap.text.TextFragmentAbsorber()

# 最初のページのために吸収器を受け入れてください。
document.pages.accept(text_fragment_absorber)

# 抽出されたテキストフラグメントのコレクションを取得する
text_fragment_collection = text_fragment_absorber.text_fragments

# フォントサイズを少なくとも70%減少させて、テキスト抽出を改善します。
for text_fragment in text_fragment_collection:
    text_fragment.text_state.font_size *= 0.7

# メモリ内ストリームに修正されたドキュメントを保存する
source_stream = io.BytesIO()
document.save(source_stream)

# メモリーストリームからドキュメントを再読み込みします。
source_stream.seek(0)
dest_document = ap.Document(source_stream)

# TextAbsorber を初期化して、更新されたテキストを抽出します。
text_absorber = ap.text.TextAbsorber()
dest_document.pages.accept(text_absorber)
extracted_text = text_absorber.text

# 抽出されたテキストをファイルに保存する
with open("ExtractColumnsText_out.txt", "w", encoding="utf-8") as file:
    file.write(extracted_text)

このメソッドは、マルチカラムPDFから抽出されたテキストが可能な限り元のレイアウトを正確に保持することを保証します。

スケールファクターによるテキスト解析の強化

Aspose.PDF for Python を使用すると、PDF を解析し、特定のページからテキストを抽出できます。高度なテキスト抽出オプション、例えばテキストフォーマットモードやスケールファクターなどがあります。これらのオプションは、複雑な PDF から正確にテキストを抽出するのに役立ちます。マルチカラムドキュメントを含む。

ScaleFactorオプションを使用することで、内部テキストグリッドを微調整し、精度を向上させることができます。1と0.1の間のスケールファクターはフォントの縮小のように機能し、抽出されたテキストを適切に配置するのに役立ちます。0.1と-0.1の間の値はゼロとして扱われ、ページ上で最も使用されるフォントの平均グリフ幅に基づいて自動的にスケーリングが可能です。ScaleFactorが設定されていない場合、デフォルトの1.0が適用され、スケーリング調整は行われません。大規模なテキスト抽出には、オートスケーリング(ScaleFactor = 0)が推奨されますが、手

特定のページからスケールファクターを使用してテキストを抽出する手順

  1. Document クラスを使用して PDF ドキュメントをロードします。
  2. TextAbsorber のインスタンスを作成してテキストを抽出します。
  3. TextExtractionOptions を正確な抽出のために PURE フォーマットモードに設定します。
  4. scalefactor を調整して、マルチカラムの PDF におけるテキスト認識を最適化します。
  5. pages コレクションの accept() を呼び出してテキストを抽出します。
  6. 抽出したコンテンツをテキストファイルに保存してください。
# このコードの例は、Pythonを使用してPDFドキュメントの特定の領域からテキストを抽出する方法を示しています。
import aspose.pdf as ap

# PDF ドキュメントを開く
document = ap.Document("sample.pdf")

# テキスト抽出オプションで TextAbsorber を初期化します
text_absorber = ap.text.TextAbsorber()

# 抽出オプションを設定する
extraction_options = ap.text.TextExtractionOptions(ap.text.TextExtractionOptions.TextFormattingMode.PURE)
extraction_options.scale_factor = 0.5  # Adjusts text recognition for better column detection
text_absorber.extraction_options = extraction_options

# 指定されたページからテキストを抽出します。
document.pages.accept(text_absorber)

# Get extracted text
extracted_text = text_absorber.text

# 抽出したテキストをファイルに保存します。
with open("ExtractTextUsingScaleFactor_out.txt", "w", encoding="utf-8") as file:
    file.write(extracted_text)

PDF内のテキストを解析する: 代替アプローチ

Aspose.PDF for Python は、TextDevice クラスを使用してテキストを抽出するための別のアプローチも提供しています。 TextDeviceを使用したPDFからのテキスト抽出についてもっと読む

PDFからPythonでテーブルを解析する方法

PDFからテーブルを解析することは、データ分析、オートメーション、報告に不可欠です。PDFはしばしば表形式の構造化データを含んでおり、標準的なテキスト抽出方法を使用して取得することが難しい場合があります。幸いなことに、Aspose.PDF for Pythonは、高い精度でテーブルを抽出し、その構造と内容を保持する強力な方法を提供します。

TableAbsorber クラスは、PDFページからテーブルを検出して抽出するために特別に設計されています。各ページを処理し、テーブルを特定し、構造を維持しながら個々の行とセルを取得します。以下は、Aspose.PDF for Pythonを使用してPDFドキュメントからテーブルを抽出する手順です。

PDFからPythonでテーブルを解析する手順

  1. PDFファイルをテーブルを含む形で Document クラスを使用してロードします。
  2. ドキュメントの pages コレクションをループして、各ページを個別に処理します。
  3. TableAbsorber クラスのインスタンスを作成して、テーブルを検出し抽出します。
  4. visit() メソッドを呼び出して、現在のページのテーブルを識別します。
  5. 抽出されたテーブルのリストを繰り返し処理し、行とセルを取得します。
  6. 各セルの textfragments にアクセスし、 segments プロパティを使用してテキストを抽出します。
  7. 抽出したテーブルデータを保存して、さらなる分析のために使用するか、コンソールに表示してください。
# このコード例では、Pythonを使ってPDFドキュメントからテーブルを抽出する方法を示します。
import aspose.pdf as ap

# PDFファイルを読み込む
document = pdf.Document("sample.pdf")

# すべてのページを処理します
for page in document.pages:
    # TableAbsorber オブジェクトを初期化する
    absorber = ap.text.TableAbsorber()
    # 現在のページにあるテーブルを特定します。
    absorber.visit(page)
    # 抽出されたテーブルをループする
   for table in absorber.table_list:
        # テーブル内のすべての行を繰り返す
       for row in table.row_list:
            # 行のすべての列を反復処理します。
           for cell in row.cell_list:
                # テキストフラグメントを取得してください
                text_fragment_collection = cell.text_fragments
                # テキストフラグメントを反復処理する
               for fragment in text_fragment_collection:
                    # Print the text
                    print(fragment.text)

これらの手順に従うことで、PDFからテーブルを効率的に抽出でき、構造化されたデータの処理と分析が容易になります。

PDFメタデータを解析する:PythonでPDFファイル情報を取得する

PDFを扱う際には、著者、作成日、キーワード、タイトルなどのメタデータを取得する必要があることがよくあります。Aspose.PDF for Pythonは、DocumentクラスのInfoプロパティを通じてDocumentInfoオブジェクトにアクセスできるため、これを簡単に行えます。これにより、プログラムmatically に重要なドキュメントプロパティを抽出できます。

PDFメタデータを解析する手順

  1. Document クラスを使用して、目的の PDF ファイルを開きます。
  2. info プロパティを使用して DocumentInfo オブジェクトを取得します。
  3. 特定の詳細情報、例えば著者、作成日、タイトル、主題、キーワードにアクセスします。
  4. メタデータを印刷するか、さらなる処理のために保存してください。

以下のPythonスクリプトは、PythonでPDFファイルからキーの詳細を取得して表示する方法を示しています:

# このコード例は、Pythonでファイル情報を抽出する方法を示しています。
import aspose.pdf as ap

# PDFドキュメントを読み込む
document = ap.Document("Sample.pdf")

# ドキュメント情報を取得する
doc_info = document.info

# ドキュメントメタデータを表示します
print(f"Author: {doc_info.author}")
print(f"Creation Date: {doc_info.creation_date}")
print(f"Keywords: {doc_info.keywords}")
print(f"Modify Date: {doc_info.mod_date}")
print(f"Subject: {doc_info.subject}")
print(f"Title: {doc_info.title}")

PDFファイルから画像をPythonで解析する

私たちはPDFドキュメントを解析し、ドキュメントに埋め込まれた画像を効率的に取得できます。特定のページから高品質の画像を抽出し、さらに使用するために別々に保存することができます。

各PDFページは、その画像をリソースコレクション内、具体的には XImage コレクションの中に保存します。画像を抽出するには、目的のページにアクセスし、インデックスを使用して Images コレクションから画像を取得し、それを保存します。

PythonでPDFから画像を解析する手順

  1. PDFファイルに画像を含む Document クラスを使用してロードします。
  2. 特定のページを取得して、画像を抽出したいです。
  3. ページの resourcesImages コレクションにアクセスし、画像インデックスを指定します。
  4. ストリームを使用して抽出した画像を保存します。

以下のコード例は、PythonでPDFから画像を解析する方法を示しています。

# このコード例は、PythonでPDFから画像を抽出する方法を示しています。
import aspose.pdf as ap

# ドキュメントを開く
document = ap.Document("Sample.pdf")

# 特定の画像を抽出する(最初のページからの最初の画像)
x_image = document.pages[1].resources.images[1]

# 出力画像のパスを定義します。
output_image_path = "OutputImage.jpg"

# 抽出された画像を保存してください。
with open(output_image_path, "wb") as output_image:
    output_image.write(x_image.to_stream().read())

この方法は、品質を維持しながらPDFから画像を抽出する簡単で効率的な方法を提供します。Aspose.PDF for Pythonを使用すると、document processingなどのさまざまなアプリケーションのために画像抽出を自動化できます。

PythonでPDFアノテーションを解析する方法

PDF の注釈は、ハイライト、図、付箋を追加することで文書のインタラクションを向上させます。各注釈タイプは特定の目的にサービスし、Aspose.PDF for Python を使用すると、分析や処理のためにそれらを簡単に抽出できます。

PDFからのテキスト注釈の解析をPythonで行う

PDF ドキュメントには、ページ上の特定の位置に添付されたコメントやノートとして機能するテキスト注釈が含まれていることがよくあります。折りたたむと、これらの注釈はアイコンとして表示され、展開するとポップアップウィンドウ内にテキストが表示されます。PDF の各ページには、そのページ固有のすべての注釈を保持する独自の注釈コレクションがあります。Aspose.PDF for Python を活用することで、PDF ファイルからテキスト注釈を効率的に抽出することができます。

PDFからテキスト注釈を解析する手順

  1. Document クラスを使用して PDF ドキュメントをロードします。
  2. 特定のページの annotations プロパティを取得して、そのページにあるすべての注釈を取得します。
  3. アノテーションを反復処理し、 AnnotationType.TEXT を持つものをフィルタリングします。
  4. 関連情報を取得します(例:注釈位置の rect )以降の処理や表示のために。
import aspose.pdf as ap

# PDFドキュメントをロードしてください。
document = ap.Document("annotations.pdf")

# 最初のページのすべての注釈をループする
for annotation in document.pages[1].annotations:
    if annotation.annotation_type == ap.annotations.AnnotationType.TEXT:
        # 注釈の詳細を印刷する
        print(f"Title: {annotation.full_name}")
        print(f"Contents: {annotation.contents}")
        print(f"Annotation Rectangle: {annotation.rect}")

これらの手順に従うことで、PythonでPDFドキュメントからテキスト注釈を効率的に抽出して処理することができます。

PDF テキスト注釈を Python で扱うことについてさらに調べるには working with PDF Text Annotation in Python 公式ガイドを訪問してください。

PDFからハイライトされたテキストをPythonで解析する

多くの場合、PDFの全文ではなく、強調表示されたテキストのみを抽出する必要があります。重要なノートを分析したり、重要なポイントを要約したり、文書処理を自動化したりする場合、Aspose.PDF for Pythonを使用すれば、効率的に強調表示されたテキストを取得することが簡単になります。

ハイライト注釈は重要なテキストパッセージをマークし、レビューや学習ノートで一般的に使用されます。ハイライトされたテキストとそのプロパティを、例えば色や位置などを HighlightAnnotation クラスを使用して抽出することができます。

PDF 文書内のハイライトされたテキスト注釈を解析するには、以前に述べた手順に従うことができます。ただし、ステップ 3 では AnnotationType.HIGHLIGHT のみを言及する必要があります。

以下の例は、PDFから強調されたテキストをフィルタリングして抽出する方法を示しています。

import aspose.pdf as ap

# PDF ドキュメントを読み込む
document = ap.Document("annotations.pdf")

# 最初のページ上のすべての注釈をループします。
for annotation in document.pages[1].annotations:
    if annotation.annotation_type == ap.annotations.AnnotationType.HIGHLIGHT:
        # 注釈の詳細を印刷する
        print(f"Title: {annotation.full_name}")
        print(f"Annotation Rectangle: {annotation.rect}")

Learn more about working with PDF Highlights Annotation in Python by visiting the official guide.

PythonでPDFの図の注釈を解析する

図の注釈には、強調や説明に使用される図形、図面、またはスタンプのようなグラフィカルな要素が含まれます。これらの注釈を抽出するには、InkAnnotation または StampAnnotation オブジェクトを特定し、その描画パスや画像を取得することが含まれます。

PDF文書の行注釈を解析するには、前述の手順に従ってください。必要な修正は、ステップ3で AnnotationType.LINE を指定することだけです。

以下の例は、Pythonを使用してPDF内のライン注釈を解析する方法を示しています。

import aspose.pdf as ap

# PDF ドキュメントをロードしてください。
document = ap.Document("annotations.pdf")

# 最初のページのすべての注釈をループします。
for annotation in document.pages[1].annotations:
    if annotation.annotation_type == ap.annotations.AnnotationType.LINE:
        # 印刷 注釈 詳細
        print(f"Annotation Rectangle: {annotation.rect}")

Read more about PDF 図注の Python での作業についてここで.

PDF内のリンク注釈は、ユーザーが文書内をシームレスに移動したり、外部ファイルを開いたり、PDFから直接ウェブページを訪れたりできるようにします。これらのハイパーリンクはインタラクティビティを高め、追加情報への迅速なアクセスを提供することでユーザーエクスペリエンスを向上させます。

PDFからリンク注釈を抽出するには、以前と同じ手順に従いますが、ステップ3では AnnotationType.LINK を指定することを忘れないでください。これにより、リンク注釈のみが取得されることが保証されます。

以下のコード例は、Pythonを使用してPDF内のリンク注釈を解析する方法を示しています。

import aspose.pdf as ap

# PDF文書を読み込む
document = ap.Document("annotations.pdf")

# 最初のページのすべての注釈をループ処理します。
for annotation in document.pages[1].annotations:
    if annotation.annotation_type == ap.annotations.AnnotationType.LINK:
        # 注釈の詳細を印刷します。
        print(f"Annotation Rectangle: {annotation.rect}")

Aspose.PDF for Pythonを活用することで、ドキュメントのインデックス作成やナビゲーションの向上など、さまざまなユースケースのために、リンクアノテーションを効率的に抽出および操作できます。

Read the complete details on handling Link Annotations in PDFs here .

結論

Aspose.PDF for Python は、信頼性が高く、効率的で、多機能な PDF パーサーライブラリを必要とする開発者にとって、最良の選択です。テキスト、テーブル、画像、メタデータ、または注釈を解析する必要がある場合でも、Aspose.PDF は必要なツールを提供します。

提供されたコードサンプルを試して、PDFを解析し、PythonでのPDF解析タスクを簡素化しましょう!

ご質問やさらなるサポートが必要な場合は、free support forum にお気軽にお問い合わせください。

See Also