20250725-kabunushi-demo-001

PowerPoint PDF 処理機能の改善

概要

本文書では、PowerPoint から PDF 化された資料の読み込み精度を向上させるために実装された機能について説明します。従来のシンプルなテキスト抽出では、PowerPoint 特有のレイアウトや重複コンテンツが原因で、正確なテキスト読み込みができない問題がありました。

実装された改善

1. デバッグログの強化

PDF処理全体のログ

テキスト抽出の詳細ログ

完全テキスト内容の出力

2. PowerPoint PDF に最適化されたテキスト抽出

座標ベースソート

// Y座標で降順ソート(上から下へ)
// 同じY座標ならX座標で昇順ソート(左から右へ)
textItems.sort((a, b) => {
    const yDiff = Math.abs(a.y - b.y);
    if (yDiff <= 5) {
        return a.x - b.x; // 同じ行なら左から右へ
    }
    return b.y - a.y; // 上から下へ
});

重複テキストの除去

行の再構成

3. エラーハンドリングとフォールバック

3段階のテキスト抽出戦略

  1. 座標ベース抽出(メイン): PowerPoint PDF に最適化
  2. シンプル抽出(フォールバック): 従来の方法
  3. エラーハンドリング: 処理失敗時の適切な対応

堅牢性の向上

コード変更詳細

主要メソッドの追加

extractTextFromPowerPointPDF(textContent, pageNum)

PowerPoint PDF に最適化されたメインの抽出メソッド

extractTextWithCoordinateBasedSorting(textContent, pageNum)

座標ベースでのテキスト抽出を実行

extractTextSimple(textContent, pageNum)

フォールバック用のシンプルなテキスト抽出

isDuplicateText(text1, text2)

テキストの重複を検出

isOverlappingPosition(newItem, existingLine)

重複する位置にあるテキストを検出

ログ出力の改善

processPDFFile メソッド

preparePDFContext メソッド

期待される効果

PowerPoint PDF の読み込み精度向上

デバッグ作業の効率化

システム安定性の向上

使用方法

  1. PDFファイルをアップロード: PowerPoint から生成された PDF ファイルを選択
  2. コンソールログの確認: ブラウザの開発者ツールでログを監視
  3. テキスト抽出結果の確認: 抽出されたテキスト内容がコンソールに出力される
  4. 対話生成の実行: 改善されたテキストを使用して対話を開始

技術仕様

対応ブラウザ

依存関係

パフォーマンス考慮事項

トラブルシューティング

PDF.js ライブラリが読み込まれない場合

⚠️ PDF.js ライブラリが読み込まれていません。PDFアップロード機能は制限されます。

テキスト抽出が空の場合

⚠️ ページ X - テキストアイテムが見つかりません

座標ベース抽出に失敗した場合

⚠️ ページ X - 座標ベース抽出に失敗、シンプル抽出に切り替え

今後の改善案

OCR 機能の追加

レイアウト解析の高度化

性能最適化


更新日: 2025年7月31日
バージョン: 1.0.0
作成者: GitHub Copilot & Coding Agent