Project AnalyzerがPowerPointに対応!さらにOfficeファイル内の画像からテキストを抽出するOCR機能を追加!

【アップデート】Project AnalyzerがPowerPointに対応!さらにOfficeファイル内の画像からテキストを抽出するOCR機能を追加!

こんにちは!AIにプロジェクトの全貌を読み込ませるためのツール「Project Analyzer」をアップデートしました。
(前回の記事:AIにプロジェクトを読ませる「Project Analyzer」がNotebookLMに完全対応&ファイル個別出力も可能に!

前回のNotebookLM向け最適化に続き、今回はドキュメント解析の精度と対象範囲を大きく広げる機能追加を行いました。特に開発現場でよく使われるOfficeファイルへの対応を強化しています!


🚀 今回のアップデート内容(新機能)

1. PowerPoint(.pptx)ファイルの解析に正式対応

これまでExcelやWordの読み込みには対応していましたが、今回新たにPowerPointファイル(.pptx)からのテキスト抽出に対応しました。
要件定義書やシステム概要図、プレゼン資料など、PowerPointで作成されたドキュメントも、AIが読み込みやすいマークダウン形式として出力できるようになります。

2. Officeファイル内の画像に対するOCR(光学文字認識)対応

Excel、Word、そして今回追加されたPowerPointファイルの中に「画面キャプチャ」や「画像化された図表」が貼り付けられていることはないでしょうか?
これまでのテキスト抽出では画像内の文字は取得できませんでしたが、今回のアップデートでOCR機能を搭載しました!

💡 OCR機能のメリット
ドキュメントに貼り付けられたエラー画面のキャプチャや、スクショベースの手順書などからテキストを自動抽出し、マークダウンの出力結果に含めることができます。これにより、テキスト化されていなかった情報までAIに連携可能になります。

⚠️ OCR機能を利用する際の注意点

【重要】OCRオプションを有効にするための事前準備

OCR機能を利用するには、事前に必要なコンポーネントのインストールなど、環境に応じた対応が必要になります。
機能のみをONにしてもそのままでは動作しないため、OCR機能をご利用の際は、必ずGitHubのREADMEに記載されている対応(インストール手順等)をご確認の上、セットアップをお願いいたします。


💻 使い方(設定イメージ)

OCR機能は設定オプションから有効化できます。以下は設定のイメージです。(※実際のプロパティ名やCLIオプションの詳細はリポジトリをご確認ください)

C# コードからの実行例

using ProjectAnalyzer.Core;
using ProjectAnalyzer.Core.Utils;

// 設定の読み込み
var settings = SettingsLoader.Load(
    projectPath: "C:\\path\\to\\your\\project",
    outputPath: "C:\\path\\to\\output", 
    // ...その他の設定...
    enableOcr: true // ★新機能:Officeファイル内の画像に対するOCRを有効化
);

using var analyzer = new Analyzer(settings);
AnalyzerResult result = analyzer.Analyze();

コマンドライン(CLI)からの実行例

# OCRを有効にして解析を実行する場合(オプションの例)
ProjectAnalyzer.Cli.exe --enable-ocr

🛠 実装の裏側:OCR処理とLinux環境の壁

今回のOCR対応にあたり、実装面で少し苦労した点がありましたので、技術的な背景も共有したいと思います。
画像からテキストを抽出する処理は ReadImageTextWithOcr というメソッドで行っていますが、実は内部でOS環境による処理の分岐を入れています。

実際のプログラム(ReadImageTextWithOcrメソッドの一部)

private string ReadImageTextWithOcr(byte[] imageBytes)
{
    // OS環境によってOCRの実行方法を分岐させる
    if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
    {
        // Windows環境:Tesseract.NET(同梱のDLL)を利用してテキスト抽出
        using var engine = new TesseractEngine(@"./tessdata", "jpn", EngineMode.Default);
        using var img = Pix.LoadFromMemory(imageBytes);
        using var page = engine.Process(img);
        return page.GetText();
    }
    else
    {
        // Linux環境等:DLLが使えないため、OS内部のtesseractコマンドを直接呼び出して処理
        return ExecuteInternalTesseract(imageBytes);
    }
}

📝 エラー調査録:なぜLinux環境でそのまま動かないのか?

開発中、Linux環境で実行した際にOCRの読み込み処理がエラーで落ちてしまう問題に直面しました。なぜこのエラーが起きたのか調査したところ、以下のことが分かりました。

🔍 調査結果:Tesseract.NETの仕組みとネイティブライブラリの依存

「Tesseract.NET」は、C#プログラムとTesseract本体とを繋ぐ「ラッパー(仲介役)」ライブラリです。

Windows環境であれば、NuGetパッケージの中にWindows用のネイティブファイル(.dll)が同梱されているためそのまま動くのですが、Linux環境の場合は、OSのシステム上にTesseract本体とLeptonica(画像処理エンジン)のネイティブライブラリがインストールされている必要があります。

つまり、プログラム自体やC#のコードは一切間違っておらず、OS側に必要なパーツが足りていない状態だったのが原因でした。

この問題を解決するため、Linux環境などではOSのシステム側にインストールされた内部の tesseract コマンドを叩くように分岐処理を組み込んでいます。クロスプラットフォーム対応ならではの罠でしたね。


🔗 まとめ

実際のプロジェクトでは、仕様書や設計書がOfficeファイルで作られており、さらにその中に大量のキャプチャ画像が含まれているケースが非常に多いと思います。
今回のアップデートにより、そういった「画像に埋もれた知識」も拾い上げてAIに渡せるようになりました。

AIを使ったコードリーディングやプロジェクト把握がさらに快適になるはずです。ぜひ新しいProject Analyzerを試してみてください!

▶ リポジトリはこちら:Project Analyzer (GitHub)

コメント

このブログの人気の投稿

Power Automateでファイル名から拡張子を取得

PowerAppsで座席表を作成する

Power AutomateでTeamsのキーワードをトリガーにする