DocRefinery — ドキュメント精製
DocRefinery は AgentCraftLab のドキュメントクリーニングおよび構造化出力機能です。複数の異なる形式のソースファイル(PDF、DOCX、PPTX、XLSX、HTML、TXT、画像)を自動的にクリーニングし、標準的な構造化仕様書に統合します。
1. コアコンセプト
複数のソースファイル → クリーニング(ノイズ除去)→ 構造化抽出(LLM)→ 仕様書| コンセプト | 説明 |
|---|---|
| 精製プロジェクト | 複数のソースファイルとバージョン管理された出力を含むワークスペース |
| クリーニング | 生ドキュメントを型付き要素(Title、NarrativeText、Table、ListItem…)に分解し、ヘッダー/フッターを除去、空白を正規化 |
| スキーマテンプレート | 出力ドキュメントの構造を定義(例:ソフトウェア要件仕様書は 13 セクション) |
| 高速モード | 単一の LLM 呼び出し、小さなファイルに最適 |
| 精密モード | マルチレイヤー Agent + 検索、大きなファイル/複数ファイルに最適 |
2. 操作フロー
Step 1:プロジェクトの作成
- サイドバーの 🏭 Doc Refinery をクリック
- 右上の 作成 をクリック
- プロジェクト名と説明を入力
Step 2:ファイルのアップロード
- プロジェクトに入る → ファイル タブ
- アップロードエリアにファイルをドラッグ&ドロップ(複数ファイル対応)
- 各ファイルの処理進捗がリアルタイムで表示(クリーニング → インデックス作成)
- 完了後、各ファイルのステータスアイコンが表示
ファイルステータス:
| アイコン | ステータス | 説明 |
|---|---|---|
| ✅ | Indexed | インデックス完了、精密検索で使用可能 |
| 🔄 | Indexing | 検索インデックスを構築中 |
| ⏳ | Pending | インデックス待ち |
| ⚠️ | Failed | インデックス失敗、🔄 でリトライ可能 |
| ⏭️ | Skipped | 高速モード、インデックス不要 |
Step 3:クリーニング結果のプレビュー
- プレビュー タブに切り替え
- ドロップダウンからファイルを選択
- 各要素が色分けされたタイプバッジで表示:
| バッジの色 | 要素タイプ | 説明 |
|---|---|---|
| 青 | Title | 見出し |
| グレー | NarrativeText | 本文段落 |
| 緑 | Table | テーブル |
| 黄 | ListItem | リスト項目 |
| 紫 | CodeSnippet | コードブロック |
| ピンク | Image | 画像 |
Step 3.5:ファイルの選択
各ファイルの横に チェックボックス があります:
- ☑ チェック済み = 生成に含める(デフォルト:全てチェック)
- ☐ 未チェック = 除外、ファイルは半透明 + 取り消し線で表示
- ファイルを削除する必要はなく、再チェックでいつでも含めることができます
Step 4:スキーマとモードの設定
- 設定 タブに切り替え
- スキーマテンプレート を選択(例:「ソフトウェア要件仕様書」)
- LLM プロバイダー と モデル を選択
- 抽出モード を選択:
| モード | 説明 | 最適な用途 |
|---|---|---|
| 高速 | 全ドキュメント内容 + フルスキーマを単一 LLM 呼び出し | 小さなファイル(< 10 ページ)、少数ファイル |
| 精密 | マルチレイヤー Agent + 検索エンジン支援 | 大きなファイル(> 10 ページ)、複数ファイル、高精度が必要 |
- 精密モードでは、オプションで LLM Challenge 検証 を有効化(下記参照)
- 保存 をクリック
- 構造化出力を生成 をクリック
Step 5:出力の確認
- 出力 タブに切り替え
- 上部に表示:
- バージョンセレクター(v1, v2, v3...)
- 信頼度バッジ(緑 ≥80% / 黄 50-80% / 赤 <50%、Challenge 有効時のみ表示)
- Markdown / JSON ビュー切替
- ソースファイル — このバージョンで使用されたファイルを表示
- 欠落フィールド(黄色)= LLM がデータを見つけられなかった
- 未確認の質問(オレンジ)= 確認が必要な項目
- 検証チャレンジ(紫)= LLM Challenge の結果、セクション別にグループ化、現在値 vs 提案値の比較
- Markdown ビュー — 完全レンダリング(見出しレベル、テーブル枠線、リスト、コード表示)
- JSON ビュー — 展開/折りたたみ可能なツリー構造、構文ハイライト
- コピー または ダウンロード(.md / .json)
Step 6:反復更新
- 新しいファイルをアップロードまたはチェックボックスを調整 → 設定タブ → 再度 Generate
- 毎回新しいバージョン(v1, v2, v3...)を生成、上書きなし
- 出力タブのドロップダウンで異なるファイル組み合わせの出力を比較
3. 精密モードのアーキテクチャ
精密モードは 4 層の Agent アーキテクチャを使用:
Layer 2(アウトライン計画):
LLM がドキュメント要約を分析 → スキーマのどのセクションにデータがあるか判定 → 検索キーワードを計画
Layer 3(セクションごとの抽出、並列):
各セクションに独立した LLM 呼び出し →
検索エンジンが関連チャンクを先に取得 → LLM がそのセクションの JSON のみを抽出
Layer 4(LLM Challenge 検証、オプション、並列):
2 番目の LLM が Layer 3 の結果を検証 →
不一致、矛盾、疑わしいフィールドを検出 → 信頼度スコアを付与
Merge(純粋なコード):
全セクション + Challenge 結果を結合 → 完全な仕様書メリット:
- 各 LLM 呼び出しは 1 つのトピックに集中、高精度
- 検索エンジン支援により、ドキュメントサイズの制限なし
- セクション間の並列実行で高速
- LLM Challenge が矛盾とエラーを検出、フィールドごとの信頼度を提供
LLM Challenge 検証(Layer 4)
設定タブで「LLM Challenge 検証」を有効にすると(精密モードのみ):
- Layer 3 の抽出完了後、各セクションが 2 番目の LLM により再検証
- 結果は信頼度により 3 段階に分類:
| 信頼度 | アクション | 説明 |
|---|---|---|
| ≥ 80% | ✅ Accept | 両方の LLM が一致、自動承認 |
| 50-80% | ⚠️ Flag | 疑問あり、確認が必要 |
| < 50% | ❌ Reject | 明確な不一致 |
出力タブに表示:
- 全体信頼度バッジ
- セクション別にグループ化されたチャレンジ(展開/折りたたみ可能)
- 現在値 vs 提案値の比較(赤/緑カラム)
トークン使用量は Challenge なしの約 1.5 倍(セクションごとに追加の検証 LLM 呼び出し)
4. サポートされるファイル形式
| 形式 | 拡張子 | クリーニング能力 |
|---|---|---|
| Word | .docx | 見出しスタイル → Title、リスト → ListItem、テーブル構造化 |
| PowerPoint | .pptx | スライド Shape タイプ分類、Drawing.Table |
| Excel | .xlsx | 各ワークシート → Markdown Table |
| ヒューリスティック分類(タイトル、リスト、フッター検出) | ||
| HTML | .html | タグの直接マッピング(h1→Title, table→Table) |
| プレーンテキスト | .txt, .md, .csv | Markdown 見出し、箇条書き、コードフェンス |
| 画像 | .png, .jpg, .tiff, .bmp | OCR 認識(Tesseract が必要) |
5. 組み込みスキーマテンプレート
ソフトウェア要件仕様書
13 セクション:
| セクション | 説明 |
|---|---|
| document | ドキュメントメタデータ(タイトル、バージョン、日付、ソース) |
| project_overview | プロジェクト概要(名称、目的、範囲、制約) |
| stakeholders | ステークホルダー |
| functional_requirements | 機能要件(受入基準、MoSCoW 優先度付き) |
| non_functional_requirements | 非機能要件(パフォーマンス、セキュリティ、可用性) |
| data_model | データモデル(Entity + Fields) |
| api_endpoints | API エンドポイント仕様 |
| ui_screens | UI 画面リスト |
| timeline | タイムライン + マイルストーン |
| budget | 予算内訳 |
| risks | リスク評価 |
| glossary | 用語集 |
| open_questions | 未確認事項(LLM が自動入力) |
カスタムテンプレート: Data/schema-templates/ ディレクトリに JSON ファイルを配置するだけ — コード変更不要。
6. 進捗ログとトークン統計
生成中、フロントエンドにリアルタイムの実行ログが表示されます:
Layer 2: Planning extraction for 13 sections...
Layer 2: Found 8/13 sections with data
Layer 3: Extracting project_overview (3 queries)...
Layer 3: project_overview done (1,200 tokens)
Layer 3: Completed 8 sections
Merging results...
✅ Generated v2 (Precise) | 25.3s | 5,050 in + 3,200 out = 8,250 tokens最終行に合計時間 + 入力/出力トークン使用量が表示されます。
7. API エンドポイント
| メソッド | パス | 説明 |
|---|---|---|
| POST | /api/refinery | プロジェクト作成 |
| GET | /api/refinery | プロジェクト一覧 |
| GET | /api/refinery/{id} | プロジェクト取得 |
| PUT | /api/refinery/{id} | プロジェクト更新 |
| DELETE | /api/refinery/{id} | ソフト削除 |
| GET | /api/refinery/{id}/files | ファイル一覧 |
| POST | /api/refinery/{id}/files | アップロード+クリーニング(SSE) |
| DELETE | /api/refinery/{id}/files/{fileId} | ファイル削除 |
| GET | /api/refinery/{id}/files/{fileId}/preview | クリーニングプレビュー |
| POST | /api/refinery/{id}/files/{fileId}/reindex | インデックスリトライ(SSE) |
| POST | /api/refinery/{id}/generate | 構造化出力生成(SSE) |
| GET | /api/refinery/{id}/outputs | バージョン一覧 |
| GET | /api/refinery/{id}/outputs/latest | 最新バージョン |
| GET | /api/refinery/{id}/outputs/{version} | 指定バージョン |
| GET | /api/schema-templates | スキーマテンプレート一覧 |
| GET | /api/schema-templates/{id} | テンプレート詳細 |