# translate.py Documentation

## 1) プログラムの動作
`translate.py`は、指定された入力ファイル（PDF、DOCX、PPTX、HTML、Markdownなど）からテキストを抽出し、指定された翻訳API（OpenAI、Gemini、DeepL）を使用して翻訳を行うプログラムです。翻訳後、元のテキストと翻訳されたテキストを比較し、結果を出力ファイルに保存します。また、翻訳結果をHTML形式で比較表示するためのファイルも生成します。

## 2) 必要な非標準ライブラリとインストールコマンドとインストール方法
以下の非標準ライブラリが必要です。

- `chardet`
- `python-dotenv`
- `html2text`
- `beautifulsoup4`
- `pdf2docx`
- `python-docx`
- `python-pptx`
- `markitdown`
- `jinja2`
- `requests`
- `openai`

### インストールコマンド
```bash
pip install chardet python-dotenv html2text beautifulsoup4 pdf2docx python-docx python-pptx markitdown jinja2 requests openai
```

## 3) 必要な入力ファイル
- `translate.env`: 環境変数を設定するためのファイル。
- `accounts.env`: APIキーなどのアカウント情報を設定するためのファイル。
- 入力ファイル（例: `translate_test.docx`, `sample.pdf`, `presentation.pptx`, `document.html`, `notes.md`など）。

## 4) 実行後に生成される出力ファイル
- `_revised.docx`, `_revised.pptx`, `_revised.html`, `_revised.md`: 翻訳されたテキストを含む出力ファイル。
- `_compare.html`: 元のテキストと翻訳されたテキストの比較を表示するHTMLファイル。
- `_reformat.md`: PDFファイルから抽出したテキストを整形したMarkdownファイル（PDFの場合のみ）。

## 5) コマンドラインでの使用例 (Usage)
```bash
python translate.py <api> <mode> <infile> <process_unit> <role> <prompt_template>
```

### 引数の説明
- `<api>`: 使用するAPIの種類（`openai`, `gemini`, `deepl`）。
- `<mode>`: 翻訳モード（`je`または`ee`）。
- `<infile>`: 入力ファイル名（例: `translate_test.docx`）。
- `<process_unit>`: 処理単位（`paragraph`または`run`）。
- `<role>`: 翻訳時の役割（オプション）。
- `<prompt_template>`: プロンプトテンプレート（オプション）。

### 使用例
```bash
python translate.py openai je translate_test.docx paragraph "あなたは専門的な英語を正確かつ筋の通った文章に校正するアシスタントです。" "以下のテキストを翻訳してください。"
```

このコマンドは、`translate_test.docx`をOpenAI APIを使用して日本語から英語に翻訳し、結果を出力ファイルに保存します。