LangChainのPDFMinerLoader()でページ番号を取得する

公開日:
目次

LangChainで日本語対応しているPDFMinerLoader()を使用してPDFからページ番号を取得する方法について、この記事では具体的な手順をご紹介します。この方法を活用することで、PDFの各ページを個別に扱う際に便利なページ番号を簡単に取得できます。

やり方

PDFの各ページからページ番号を取得するには、以下の手順に従ってください。

PDFMinerLoader()の引数設定

まず、PDFMinerLoader()の引数にconcatenate_pages=Falseを指定することが重要です。このオプションは、PDFの全ページを一つに連結するかどうかを指定します。デフォルトではTrueに設定されていますが、Falseに変更することでDocumentオブジェクトにページ番号を追加できるようになります。

コード

以下に、LangChainのPDFMinerLoaderを使用してPDFを読み込み、各ページからページ番号を取得する方法を示すコード例を示します。

from langchain.document_loaders import PDFMinerLoader

# PDFファイルのパスを指定
pdf_path = "path/to/your/document.pdf"

# concatenate_pages=False を指定してPDFをロード
loader = PDFMinerLoader(pdf_path, concatenate_pages=False)

# ドキュメントをロード
documents = loader.load()

# 各ページの内容とページ番号を表示
for i, doc in enumerate(documents):
    page_content = doc.page_content
    page_number = doc.metadata.get("page", i + 1)  # ページ番号がない場合はインデックスを使用
    print(f"Page {page_number}:\n{page_content}\n")

動作説明

  • PDFファイルのパスを指定: PDFファイルのパスをpdf_path変数に指定します。
  • PDFMinerLoaderを使用してPDFをロード: concatenate_pages=False を指定してPDFMinerLoaderを初期化し、PDFファイルをロードします。
  • ドキュメントをロード: loader.load() メソッドを使用して、PDFの内容をロードします。このメソッドは、各ページが個別のDocumentオブジェクトとして返されます。
  • 各ページの内容とページ番号を表示: ループを使用して、各ページの内容(page_content)とページ番号(metadata["page"])を表示します。ページ番号が取得できない場合は、インデックスをページ番号として使用します。

この方法を用いることで、LangChainのPDFMinerLoaderを使用してPDFからページ番号を簡単に取得することができます。PDFの内容をページごとに詳細に分析したい場合に特に役立ちます。