get_paper_inf5 プログラム仕様

学術論文のPDFからメタデータを抽出し、ファイルのリネームやExcelサマリーへの出力を行うスクリプト。

このスクリプトは、指定されたPDFファイルからテキストを抽出し、 OpenAI (GPT-4/GPT-5-nano) または Google Gemini などの生成AIモデルに送信して、 論文の著者、タイトル、ジャーナル、発行年などの情報をJSON形式で取得します。 取得したメタデータはExcelファイルに追記され、オプションでPDFファイルの名前を AIが推奨するファイル名に変更することができます。

関連リンク: get_paper_inf5.py 技術ドキュメント

ai.get_paper_inf5.append_xlsx(path, mode, labels, data_list)[ソース]

Excelファイルにデータを追記します。

指定されたパスのExcelファイルが存在しないか、mode`が"w"の場合は新規作成し、 ヘッダー(`labels)を追加します。それ以外の場合は既存のファイルにデータを追記します。

パラメータ:
  • path (str) -- Excelファイルのパス。

  • mode (str) -- ファイルモード("w"で新規作成/上書き、それ以外で追記)。

  • labels (list[str]) -- ヘッダーとして使用する列名のリスト。

  • data_list (list[list]) -- Excelに追記するデータのリスト(各要素が1行に対応するリスト)。

戻り値:

なし。

戻り値の型:

None

ai.get_paper_inf5.extract_text_from_pdf(pdf_path: str, max_bytes: int) str[ソース]

指定されたPDFファイルからテキストを抽出し、最大バイト数に制限します。

PyPDF2ライブラリを使用してPDFの各ページからテキストを抽出し、 指定されたmax_bytesを超えないように切り詰めます。 エラーが発生した場合は空文字列を返します。

パラメータ:
  • pdf_path (str) -- 処理するPDFファイルのパス。

  • max_bytes (int) -- 抽出するテキストの最大バイト数。

戻り値:

抽出されたテキスト文字列。エラーが発生した場合は空文字列。

戻り値の型:

str

ai.get_paper_inf5.get_inf(input_file, summary_path, api='openai', max_bytes=10000, rename=False, delete_original=True, template='(author_first)_(author_last)_(short_title)_(shortest_name)_(year).pdf')[ソース]

単一のPDFファイルから論文メタデータを抽出し、Excelに記録し、必要に応じてリネームします。

PDFからテキストを抽出し、指定されたAPI(OpenAI GPT-4, OpenAI GPT-5-nano, Google Gemini) を使用してメタデータを取得します。取得したメタデータは`summary_path`で指定された Excelファイルに追記されます。`rename`が`True`の場合、AIが推奨するファイル名に PDFファイルを変更します。

パラメータ:
  • input_file (str) -- 処理するPDFファイルのパス。

  • summary_path (str) -- メタデータを記録するExcelファイルのパス。

  • api (str) -- (オプション) 使用するAI API ("openai", "openai5", "google")。デフォルトは"openai"。

  • max_bytes (int) -- (オプション) APIに送信するテキストの最大バイト数。デフォルトは10000。

  • rename (bool) -- (オプション) ファイル名をAIが推奨するものに変更するかどうか。デフォルトはFalse。

  • delete_original (bool) -- (オプション) `rename`がTrueの場合、元のファイルを削除するかどうか。デフォルトはTrue。

  • template (str) -- (オプション) ファイル名変更時に使用するテンプレート。デフォルトはDEFAULT_TEMPLATE。

戻り値:

処理が成功した場合はTrue、失敗した場合はFalse、APIの指定が誤っている場合はNone。

戻り値の型:

bool or None

ai.get_paper_inf5.get_metadata_from_google(text: str, template: str) dict[ソース]

Google Gemini APIを使用して論文のメタデータを抽出します。

抽出されたテキストとファイル名テンプレートをプロンプトに組み込み、 Google GeminiモデルにJSON形式での情報抽出をリクエストします。

パラメータ:
  • text (str) -- 論文から抽出されたテキスト。

  • template (str) -- 推奨ファイル名の生成に使用されるテンプレート文字列。

戻り値:

抽出されたメタデータを含む辞書。API呼び出しが失敗した場合はFalse、レスポンスが空の場合は空の辞書を返します。

戻り値の型:

dict or bool

ai.get_paper_inf5.get_metadata_from_openai(text: str, template: str) dict[ソース]

OpenAI GPT-4 APIを使用して論文のメタデータを抽出します。

抽出されたテキストとファイル名テンプレートをプロンプトに組み込み、 OpenAI GPT-4モデルにJSON形式での情報抽出をリクエストします。

パラメータ:
  • text (str) -- 論文から抽出されたテキスト。

  • template (str) -- 推奨ファイル名の生成に使用されるテンプレート文字列。

戻り値:

抽出されたメタデータを含む辞書。API呼び出しが失敗した場合はFalse、レスポンスが空の場合は空の辞書を返します。

戻り値の型:

dict or bool

ai.get_paper_inf5.get_metadata_from_openai5(text: str, template: str) dict[ソース]

OpenAI GPT-5-nano APIを使用して論文のメタデータを抽出します。

抽出されたテキストとファイル名テンプレートをプロンプトに組み込み、 OpenAI GPT-5-nanoモデルにJSON形式での情報抽出をリクエストします。

パラメータ:
  • text (str) -- 論文から抽出されたテキスト。

  • template (str) -- 推奨ファイル名の生成に使用されるテンプレート文字列。

戻り値:

抽出されたメタデータを含む辞書。API呼び出しが失敗した場合はFalse、レスポンスが空の場合は空の辞書を返します。

戻り値の型:

dict or bool

ai.get_paper_inf5.initialize()[ソース]

コマンドライン引数を解析するためのArgumentParserを設定します。

処理するPDFファイルのパス、使用するAI API、サマリーExcelのパス、 再帰検索の有無、ファイルリネームの有無、元のファイル削除の有無、 APIに送る最大テキストバイト数、ファイル名テンプレートなどの引数を定義します。

戻り値:

設定済みのArgumentParserオブジェクト。

戻り値の型:

argparse.ArgumentParser

ai.get_paper_inf5.main()[ソース]

スクリプトのメインエントリポイント。コマンドライン引数を処理し、ファイル群に対してメタデータ抽出を実行します。

`initialize`関数を呼び出して引数を解析し、`input_file`の指定に基づいてPDFファイルを検索します。 見つかった各ファイルに対して`get_inf`関数を呼び出し、メタデータ抽出と処理を行います。

戻り値:

なし。

戻り値の型:

None

ai.get_paper_inf5.rename_file(input_file, new_filename, delete_original=False)[ソース]

ファイル名を変更またはコピーします。

`input_file`を`new_filename`に変更します。 `delete_original`が`True`の場合は元のファイルを削除し、 `False`の場合はコピーします。`new_filename`が既に存在する場合は処理をスキップします。

パラメータ:
  • input_file (str) -- 元のファイルのパス。

  • new_filename (str) -- 新しいファイルのパス。

  • delete_original (bool) -- (オプション) 元のファイルを削除するかどうか。デフォルトはFalse。

戻り値:

処理が成功した場合はTrue、失敗した場合はFalse。

戻り値の型:

bool