データ投入でサポートされているファイル形式
知識データ投入でサポートされているファイル形式
このドキュメントは、InfiniCloud AIのファイル取り込み機能が現在サポートしているファイル形式を、実装に基づいてまとめたものです。
取り込みフロー概要
- 「知識の投入」からファイルをアップロード
- 拡張子を判定し、UnstructuredLoaderを使ってパースしてText化。その後HTMLに変換
- 得られた HTMLをローカルキャッシュエリアに保存し、MHASを用いてノイズ及び重複除去。知識データベースに反映
- 知識データベースのレコードは「知識の編集」メニューで参照・削除などの管理ができ、知識ドメイン単位のJSONLエクスポートも可能
サポート済みファイル形式
| カテゴリ | 拡張子 | 処理方法 | 依存 / 備考 |
|---|---|---|---|
| HTML | `.html`, `.htm` | そのまま UTF-8 としてキャッシュ | 直接`import_files`で保存 |
| HTMLアーカイブ | `.zip` (内部がHTML) | ZIPを解凍し、各HTMLをキャッシュ(その他の拡張子はスキップ) | `zipfile` |
| プレーンテキスト | `.txt` | テキストを `<p>` ラップして HTML 化 | 基本パッケージ |
| Markdown | `.md` | `unstructured[md]` → HTMLスニペット化 | `requirements.txt` に含まれる |
| CSV | `.csv` | `unstructured[csv]` → セル抽出 | 同上 |
| Excel | `.xlsx` | `unstructured[xlsx]` | 同上 |
| Word | `.docx`, `.doc` | `unstructured[docx,doc]` | 同上 |
| PowerPoint | `.pptx`, `.ppt` | `unstructured[pptx]` | 同上 |
| `.pdf` | `unstructured[pdf]`(PyMuPDF + OCR) | 同上 | |
| 画像 | `.jpg`, `.png`, `.gif`, `.bmp`, `.tiff` | `unstructured[image]` で OCR | 同上 |
| RTF | `.rtf` | `unstructured[rtf]` | 同上 |
| JSONL(内部管理) | `.jsonl` | `JSONLWebManager` によるCRUD/エクスポートのみ | ファイルアップロードではなく DB 管理 |
その他のunstructured対応形式(例: `.epub`, `.odt`, `.org`, `.rst`, `.tsv` など)は現在は未対応。同じパイプラインで処理は可能なので将来要望により拡張可能。
実装から見る特殊処理
- ZIP
- .html`だけを抽出し、キャッシュディレクトリに保存します。
- HTML/HTM
- バイト列を UTF-8 で解釈し、キャッシュディレクトリに保存します。
- その他
- 一旦テンポラリに保存し、読み込み、`doc.metadata["text_as_html"]` があれば利用、無ければ、単純な`<p>` で囲んで HTML を生成。
- JSONL
- ファイルとして取り込むのではなく、`jsonl_records` テーブルでレコード管理し、UI から CRUD/エクスポートする。
タスクログに記載されるトラブルシューティング
| 症状 | 対処 |
|---|---|
| `partition_xxx()` が見つからない | サーバインストール上の問題。必要なライブラリがない。 |
| 文字化け | UTF-8 以外のエンコードは自動判定しないため、事前に UTF-8 に変換してからアップロード |
| OCR が遅い | 画像/スキャン PDF を分割し、小さなファイルでアップロード |
| ZIP に HTML 以外が混在 | 現状は HTML のみ抽出。その他は ZIP 外に取り出して個別にアップロードする |