以下は、Python プログラム get_paper_inf.py の解析結果をまとめたドキュメントです。

---

## 1) プログラムの動作

- 概要
  - 指定した PDF ファイル（または再帰指定時にはディレクトリ以下のPDF）からテキストを抽出し、外部の AI API（OpenAI または Google Gemini）を用いて論文メタデータを JSON 形式で抽出する。
  - 抽出されたメタデータを Excel ファイル（summary.xlsx 相当）に追記（append）する。
  - metadata に基づき、必要に応じて「推奨ファイル名（filename_rename）」を使って元の PDF ファイルをリネーム（またはコピー）する機能を提供する。
- 主な処理の流れ
  1. コマンドライン引数と環境変数の読み込み
     - API 側の選択（openai または google）やモデル設定、温度、最大トークン数、最大送信バイト数などを設定ファイル・環境変数から取得。
  2. 入力 PDF からテキストを抽出
     - PyPDF2 を用いて全ページを走査し、max_bytes 制限内にテキストを抑制して取り出す。
  3. テキストを AI に送信してメタデータを取得
     - 指定されたテンプレートとテキストを組み合わせ、OpenAI あるいは Google Gemini API を呼び出してメタデータを JSON 形式で取得。
  4. 結果の表示と Excel への追記
     - 論文メタデータをコンソールに表示し、指定の summary.xlsx ファイルにラベル行とデータ行を追記（追加モード "a"）。
  5. ファイル名のリネーム（任意、オプション次第）
     - metadata に filename_rename が含まれていれば、推奨ファイル名へリネーム（.pdf 拡張子を付与する処理を含む）。
     - 既に同名ファイルが存在する場合はリネームを回避。
     - delete_original が True の場合は元ファイルを新しい名前へ移動、そうでなければコピー。
- 出力
  - summary.xlsx にデータ行を追加（または新規作成）。
  - 権限とファイル操作に応じて、端末に進捗や結果を表示。
  - 推奨ファイル名が取得できた場合にはファイル名のリネーム・コピー・削除を実行。

---

## 2) 必要な非標準ライブラリとインストール方法

このスクリプトは以下の外部ライブラリに依存します。インストール時は仮想環境を推奨します。

- dotenv
  - 用途: .env ファイルの読み込み
  - インストール: 
    - pip install python-dotenv
- openpyxl
  - 用途: Excel ワークブックの読み書き
  - インストール: 
    - pip install openpyxl
- PyPDF2
  - 用途: PDF からのテキスト抽出
  - インストール:
    - pip install PyPDF2
- OpenAI ライブラリ（任意 API が openai の場合）
  - 用途: OpenAI API の呼び出し
  - インストール:
    - pip install openai
- google-generativeai（任意 API が google の場合）
  - 用途: Google Gemini API の呼び出し
  - インストール:
    - pip install google-generativeai

補足
- スクリプト内で import エラー検出時にメッセージとともにインストールコマンドを促す簡易案内があります。実際には環境に応じて上記のコマンドを実行してください。
- PyCryptodome による暗号処理エラーの案内も出力されますが、主目的はテキスト抽出です。

---

## 3) 必要な入力ファイル

- 入力 PDF ファイル
  - 処理対象の論文 PDF。コマンドライン引数として指定。
  - パスは get_paper_inf.py の main で指定されたフォーマットに従います。
- 環境・設定ファイル
  - translate.env: 主要設定を含む環境ファイル。OPENAI_API_KEY、その他の設定がここにあるか、もしくは accounts.env を参照して dotenv が読み込まれます。
  - accounts.env: OPENAI/GOOGLE 連携用キーを含む可能性がある追加の dotenv ファイル。
- summary.xlsx
  - 抽出結果を追記する Excel ファイル。存在しない場合は新規作成され、ラベル行が先頭に追加されます。
- 任意の設定ファイル
  - config_path が translate.env、見つからない場合は script ディレクトリ直下の translate.env を探します。

---

## 4) 実行後に生成される出力ファイル

- summary.xlsx
  - 追記モードで新しい論文メタデータが追加されます。初回作成時はヘッダ行（labels）が追加され、その後のデータ行が追加されます。
  - 各データ行は以下の順で格納されます（labels に対応）:
    - directory, filename_original, filename_rename, authors, author_first, author_last, title, short_title, journal, short_name, shortest_name, date_received, date_accepted, date_published_online, date_published, year, volume, issue, pages, doi
- 推奨ファイル名の出力
  - metadata に filename_rename が含まれている場合、リネーム後のファイル名に対応するファイル操作が実行されます（rename、delete_original、またはコピーのいずれか）。
  - 指定された新ファイル名が既に存在する場合は衝突を回避して処理を停止します。
- ローカルファイル操作
  - input_file のリネーム/コピーが発生した場合は、元ファイルの場所と新ファイルの場所に応じてファイル操作が実行されます。

---

## 5) コマンドラインでの使用例 (Usage)

基本構文
- python get_paper_inf.py [オプション] input_file
- なお、入出力や処理挙動は以下のオプションで制御します。

- 使用例1: デフォルト設定で単一ファイルを処理
  - python get_paper_inf.py --api openai path/to/paper.pdf
  - summary.xlsx にメタデータを追記

- 使用例2: 再帰的にディレクトリ配下の PDF をキャプチャして処理
  - python get_paper_inf.py --recursive 1 --api openai path/to/pdf_or_pattern.pdf
  - 例: path/to/dir/**/*.pdf を対象として再帰検索

- 使用例3: Google Gemini API を利用してメタデータを抽出
  - python get_paper_inf.py --api google path/to/paper.pdf
  - google の API キーが設定されている必要があります

- 使用例4: 出力先の Excel ファイルを指定
  - python get_paper_inf.py --summary_path my_summary.xlsx path/to/paper.pdf

- 使用例5: 推奨ファイル名を使って元ファイルをリネームし、元ファイルを削除
  - python get_paper_inf.py --rename 1 --delete_original 1 --summary_path summary.xlsx path/to/paper.pdf
  - metadata に filename_rename が含まれている場合のみ実行されます。ファイル名の衝突時は処理を停止します。

- 使用例6: max_bytes の調整（論文全文を送る必要がない場合など）
  - python get_paper_inf.py --max_bytes 5000 --api openai path/to/paper.pdf
  - 抽出するテキスト量をバイト数で制限します。

- 注意点
  - input_file は PDF 形式であることを前提としています。PDF 読み込みでエラーが出た場合は処理を停止します。
  - api == openai または api == google のいずれかを指定してください。その他の値を指定するとエラーになります