.NET で Open XML SDK を使用して PPT、PPTX、ODP ファイルからテキストを抽出する方法
Contents
[
Hide
]
Open XML SDK
Open XML SDK は、特に Open XML 標準に準拠した PPTX からプレゼンテーション ファイルのテキストを抽出するための、非常に構造化され効率的な方法を提供します。基になる XML へ直接アクセスできるため、従来の方法に比べてスライド コンテンツの処理がより高速かつ柔軟になります。
Direct XML Access
- Analyze Text Directly: Open XML SDK を使用すると、スライドをレンダリングせずに XML パーツからテキストを抽出できます。
- Structured Elements: テキストは明確に定義された XML タグに格納されているため、取得および処理が容易です。
Example: Extracting Text Directly from Slide XML Content
using (PresentationDocument presentation = PresentationDocument.Open("presentation.pptx", false))
{
var slidePart = presentation.PresentationPart.SlideParts.FirstOrDefault();
if (slidePart != null)
{
var textElements = slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>();
foreach (var text in textElements)
{
Console.WriteLine(text.Text);
}
}
}
Performance Advantages
- Faster Extraction: PowerPoint やその他の高レベル API を開くオーバーヘッドを回避します。
- Lower Memory Usage: 関連する XML パーツだけにアクセスするため、リソース消費が削減されます。
- No Microsoft PowerPoint Needed: 追加のインストール要件が不要になります。
Example: Efficiently Extracting Text Without Loading the Entire Presentation
using (PresentationDocument presentation = PresentationDocument.Open("presentation.pptx", false))
{
foreach (var slidePart in presentation.PresentationPart.SlideParts)
{
var texts = slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>().Select(t => t.Text);
Console.WriteLine(string.Join(" ", texts));
}
}
Identifying Text Elements
Specifics of Extracting Text from Presentations
プレゼンテーションからテキストを抽出する際は、以下の点に注意してください。
- Text May Reside in Different Sections: 通常スライド、マスタースライド、レイアウト、またはスピーカーノートに存在する可能性があります。
- Default Placeholders: マスタースライドやレイアウトには、実際のプレゼンテーション コンテンツではないプレースホルダー(例: “Click to edit Master title style”)が含まれることがあります。
- Filtering Empty or Hidden Text: 空の要素や表示されないテキストが含まれることがあります。
Tags Containing Text
PPTX ファイルでは、テキストは一般的に以下の要素に格納されます。
<a:t>要素(<a:p>(段落)内)<a:r>要素(段落内のテキスト セグメント)
Example: Extracting All Text Elements from a Slide
var textElements = slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Text>();
foreach (var text in textElements)
{
Console.WriteLine(text.Text);
}
ODP and PPT
Inability to Extract Text Directly
- PPTX と異なり、PPT(バイナリ形式)および ODP(OpenDocument Presentation)は Open XML SDK では サポートされていません。
- PPT は閉鎖的なバイナリ形式でコンテンツを保存しているため、テキスト抽出が困難です。
- ODP は OpenDocument XML に依存しており、構造が PPTX と異なります。
Workaround: Converting to PPTX
PPT または ODP からテキストを抽出する推奨手順は次のとおりです。
- Convert PPT → PPTX を PowerPoint またはサードパーティ ツールで実行します。
- Convert ODP → PPTX を LibreOffice または PowerPoint で実行します。
- 新しい PPTX から Open XML SDK を使用してテキストを抽出します。
Example: Converting ODP to PPTX via LibreOffice Command Line
soffice --headless --convert-to pptx presentation.odp
Supported Platforms and Frameworks
- Windows: .NET Framework 4.6.1 以上、.NET Core 2.1 以降、.NET 5/6/7。
- Linux/macOS: .NET Core 2.1 以降、.NET 5/6/7。
- Cloud Environments: Microsoft Azure Functions、AWS Lambda(.NET Core)、Docker コンテナ。
- Compatibility with Office Applications: Microsoft Office のインストールは不要です。
- Supported Programming Languages: Open XML SDK は C#、VB.NET、F# など、.NET がサポートする言語で使用できます。
Conclusion
Open XML SDK を利用した PPTX テキスト抽出 は、効率と明快さの両方を提供します。一方、PPT および ODP はスムーズな処理のために最初に変換ステップが必要です。このアプローチを採用することで、高性能、柔軟性、そして最新の .NET アプリケーションとの 広範な互換性 が確保されます。