# サポートされているファイル形式

本システムは Apache Tika を使用してドキュメントを解析しており、数百種類のファイル形式をサポートしています。

## 📋 サポートファイル形式一覧

### 📄 PDF ドキュメント

- `application/pdf` - PDF ドキュメント

### 📝 Microsoft Office ドキュメント

- `application/msword` - Word ドキュメント (.doc)
- `application/vnd.openxmlformats-officedocument.wordprocessingml.document` - Word ドキュメント (.docx)
- `application/vnd.ms-excel` - Excel スプレッドシート (.xls)
- `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` - Excel スプレッドシート (.xlsx)
- `application/vnd.ms-powerpoint` - PowerPoint プレゼンテーション (.ppt)
- `application/vnd.openxmlformats-officedocument.presentationml.presentation` - PowerPoint プレゼンテーション (.pptx)

### 📊 OpenOffice / LibreOffice ドキュメント

- `application/vnd.oasis.opendocument.text` - テキストドキュメント (.odt)
- `application/vnd.oasis.opendocument.spreadsheet` - スプレッドシート (.ods)
- `application/vnd.oasis.opendocument.presentation` - プレゼンテーション (.odp)
- `application/vnd.oasis.opendocument.graphics` - グラフィックドキュメント (.odg)

### 📝 テキストファイル

- `text/plain` - プレーンテキスト (.txt)
- `text/markdown` - Markdown (.md, .markdown)
- `text/html` - HTML ドキュメント (.html, .htm)
- `text/csv` - CSV 表形式 (.csv)
- `text/xml` - XML ドキュメント (.xml)
- `application/xml` - XML ドキュメント
- `application/json` - JSON データ (.json)

### 💻 コードファイル

- `text/x-python` - Python コード (.py)
- `text/x-java` - Java コード (.java)
- `text/x-c` - C コード (.c)
- `text/x-c++` - C++ コード (.cpp, .cc, .cxx)
- `text/javascript` - JavaScript コード (.js)
- `text/typescript` - TypeScript コード (.ts)

### 🖼️ 画像ファイル

- `image/jpeg` - JPEG 画像 (.jpg, .jpeg)
- `image/png` - PNG 画像 (.png)
- `image/gif` - GIF 画像 (.gif)
- `image/webp` - WebP 画像 (.webp)
- `image/tiff` - TIFF 画像 (.tiff, .tif)
- `image/bmp` - BMP 画像 (.bmp)
- `image/svg+xml` - SVG ベクター画像 (.svg)

### 📦 圧縮ファイル

- `application/zip` - ZIP 圧縮アーカイブ (.zip)
- `application/x-tar` - TAR アーカイブ (.tar)
- `application/gzip` - GZIP 圧縮 (.gz)
- `application/x-7z-compressed` - 7z 圧縮アーカイブ (.7z)

### 📚 その他のドキュメント形式

- `application/rtf` - RTF ドキュメント (.rtf)
- `application/epub+zip` - EPUB 電子書籍 (.epub)
- `application/x-mobipocket-ebook` - MOBI 電子書籍 (.mobi)

## 🔧 自動サポートルール

明示的なリスト以外にも、システムは以下のパターンを自動的にサポートします：

1. **すべてのテキストタイプ** - `text/` で始まるすべての MIME タイプ
2. **Office ドキュメント** - `application/vnd.` で始まるすべてのタイプ
3. **その他の形式** - `application/x-` で始まるすべてのタイプ

これは、特定の形式がリストになくても、Tika が解析可能であればシステムで処理できることを意味します。

## ⚠️ 注意事項

### 画像処理

- 画像ファイルから意味のある内容を抽出するには、**ビジョンモデル**の設定が必要です。
- ビジョンモデルが設定されていない場合、システムはファイル名をコンテンツとして使用します。
- 「システム設定」でビジョンをサポートする LLM（GPT-4V、Gemini など）を設定することをお勧めします。

### 大容量ファイルの処理

- ファイルサイズ制限：デフォルト 100MB（`.env` の `MAX_FILE_SIZE` で設定可能）
- 大容量ファイルはバッチ処理され、メモリオーバーフローを防止します。
- 推奨：最適なパフォーマンスを得るために、1ファイルあたり 50MB 以下にすることをお勧めします。

### エンコーディングの問題

- システムはファイルのエンコーディングを自動検出します。
- UTF-8 エンコーディングのテキストファイルを推奨します。
- UTF-8 以外のエンコーディングでは文字化けが発生する可能性があります。

## 📝 設定例

### 環境変数の設定

```env
# ファイルアップロードの制限
MAX_FILE_SIZE=104857600  # 100MB

# チャンク設定（Embeddingモデルに合わせて調整）
MAX_CHUNK_SIZE=8191      # OpenAI embedding-3-large
MAX_OVERLAP_SIZE=200
```

### モデルの設定

フロントエンドの「システム設定」→「モデル管理」で Embedding モデルを設定する際：

- **最大入力 (Tokens)**: モデルの設定に従う（OpenAI=8191, Gemini=2048）
- **ベクトル次元数**: モデルの出力設定に従う（text-embedding-3-large=2560, text-embedding-3-small=1536）
- **バッチ処理制限**: モデルの設定に従う（OpenAI=2048, Gemini=100）

## 🔍 トラブルシューティング

### ファイル形式がサポートされていない

**エラー**: `不支持的文件类型: application/xxx` (サポートされていないファイル形式)

**解決策**:

1. ファイル形式がサポートリストに含まれているか確認してください。
2. ファイルの拡張子が正しいか確認してください。
3. テキストエディタで開き、内容が読み取れるか確認してください。
4. 新しい形式のサポートが必要な場合は、Issue を送信してください。

### 解析に失敗する

**エラー**: `无法提取文本内容` (テキスト内容を抽出できません)

**解決策**:

1. Apache Tika サービスが動作しているか確認してください。
2. Tika のログを確認してください：`docker-compose logs tika`
3. 他のツールでファイルを開き、ファイルが破損していないか確認してください。
4. ファイルの権限を確認してください。

### エンコーディングの問題

**現象**: テキストが文字化けする

**解決策**:

1. ファイルを UTF-8 エンコーディングに変換してください。
2. テキストエディタで再度保存してください。
3. システムの言語設定を確認してください。

## 📚 参考文献

- [Apache Tika 公式ドキュメント](https://tika.apache.org/1.24/formats.html)
- [Tika サポート形式一覧](https://tika.apache.org/1.24/formats.html)
- [MIME タイプ標準](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types)
