はじめに
.NETプロジェクトの開発において、ローカルのHTMLファイルからプレーンテキストを抽出するニーズは頻繁に発生します。一般的なシナリオとしては、ドキュメント内容の解析、パブリックなテキストのクローリング、ローカルWebページのアーカイブ、インテリジェントなテキスト分析の前処理などが挙げられます。
Free Spire.Doc for .NET は無償ライブラリで、シンプルなソリューションを提供します。HTMLを構造化されたドキュメントオブジェクトモデルにパースし、数行のコードでクリーンなプレーンテキストを出力できます。
1. 環境準備
1.1 コンポーネントのインストール
Free Spire.Doc for .NET は NuGet パッケージマネージャー経由でのインストールを推奨します。
GUI でのインストール:Visual Studio でプロジェクトを右クリック → 「NuGet パッケージの管理」→ 「Free Spire.Doc」を検索 → インストール。
コマンドラインでのインストール:パッケージマネージャーコンソールで以下を実行:
Install-Package FreeSpire.Doc
1.2 名前空間のインポート
コードファイルの先頭に以下の名前空間をインポートします:
using Spire.Doc;
using Spire.Doc.Documents;
using System.IO;
2. コア実装
Free Spire.Doc は HTML を構造化されたオブジェクトモデルに変換します。<p>、<a>、<table> などの要素は、コードからアクセス可能なクラスにマッピングされます。主要なコンポーネントは以下の通りです:
- Document:パース後の HTML コンテンツのコンテナ
-
Section:コンテンツブロック(HTML の
<body>や<div>に相当) -
Paragraph:
<p>、<h1>、<li>などのブロックレベル要素に対応
このモデルに基づき、テキスト抽出には2つの代表的なシナリオがあります。
2.1 HTML文字列からのテキスト抽出
動的に生成される HTML フラグメント(リッチテキストエディターから渡されるコンテンツや API が返す HTML 文字列など)を処理する場合に適しています。
using Spire.Doc;
using Spire.Doc.Documents;
using System;
namespace ExtractTextFromHtml
{
class Program
{
static void Main(string[] args)
{
// 解析対象の HTML 文字列を定義
string htmlContent = @"
<html>
<body>
<h2>製品機能の紹介</h2>
<p>このコンポーネントはHTMLコンテンツの解析をサポートし、以下の利点があります:</p>
<ul>
<li>.NET プラットフォーム間での互換性</li>
<li>Office 環境に依存しない</li>
<li>テキストコンテンツの高速抽出</li>
</ul>
<p>公式サイト:<a href='https://example.com'>サンプルリンク</a></p>
</body>
</html>";
// Document オブジェクトを作成
Document doc = new Document();
// セクションをコンテナとして追加
Section section = doc.AddSection();
// 段落を追加
Paragraph paragraph = section.AddParagraph();
// HTML 文字列を段落にパース
paragraph.AppendHTML(htmlContent);
// すべての段落をループしてテキストを出力
Console.WriteLine("抽出されたプレーンテキスト:");
Console.WriteLine("---------------------");
foreach (Paragraph para in section.Paragraphs)
{
Console.WriteLine(para.Text);
}
// テキストファイルとして直接保存も可能
doc.SaveToFile("output.txt", FileFormat.Txt);
}
}
}
ポイント:AppendHTML() メソッドは HTML タグを対応する Spire.Doc オブジェクト(例:<h1> → 見出しスタイル、<ul> → リスト段落)に自動変換し、Paragraph.Text プロパティはすべてのタグを除去したプレーンテキストを返します。
2.2 HTMLファイルからのテキスト抽出
ディスク上に存在する HTML ファイル(ダウンロードした Web ページやローカルのテンプレートなど)を処理する場合に適しています。
using Spire.Doc;
using Spire.Doc.Documents;
namespace ExtractTextFromHtmlFile
{
class Program
{
static void Main(string[] args)
{
// Document オブジェクトを作成
Document doc = new Document();
// HTML ファイルを読み込み
doc.LoadFromFile("F:\\蝶.html", FileFormat.Html, XHTMLValidationType.None);
// 方法1:直接プレーンテキストファイルとして保存
doc.SaveToFile("Extract.txt", FileFormat.Txt);
// 方法2:ループでテキストコンテンツを取得
foreach (Section section in doc.Sections)
{
foreach (Paragraph paragraph in section.Paragraphs)
{
string text = paragraph.Text;
// 抽出したテキストに対して後続処理を実行
Console.WriteLine(text);
}
}
}
}
}
LoadFromFile() メソッドはファイルパスとフォーマットパラメーターを受け取り、FileFormat.Html は入力ファイルを HTML としてパースするようライブラリに指示します。SaveToFile() に FileFormat.Txt を指定すると、レンダリング後のコンテンツが自動的にすべての HTML タグを除去したプレーンテキストとして出力されます。
3. 注意事項
-
無償版の制限:Free Spire.Doc の無償版には一定の段落数およびテーブル数の制限(例:500 段落および 25 テーブル)があり、一部の複雑で高度な HTML タグの解析には制限があります。非常に大規模または構造が極めて複雑な HTML ドキュメントの場合は、無償版の許容範囲内かどうかを評価する必要があります。
-
HTML エンティティの自動変換:ライブラリは HTML エンティティ(例:
©、®)を対応するプレーンテキスト文字に自動変換します。 -
構造の保持:出力テキストには、改行やリストのインデントなどの論理的な書式が保持されます。
-
Office 環境は不要:このコンポーネントは Microsoft Office アプリケーションに依存せず、サーバーサイドでも正常に使用できます。
4. まとめ
Free Spire.Doc for .NET を使用して HTML テキストを抽出するコアフローは、以下の3ステップにまとめられます:
-
読み込み——
new Document()でドキュメントオブジェクトを作成し、AppendHTML()で文字列を処理するか、LoadFromFile()でファイルを読み込みます。 - パース——ライブラリが内部で HTML タグをオブジェクトモデルに自動マッピングします。
-
抽出——
Paragraph.Textで段落ごとにプレーンテキストを取得するか、SaveToFile(..., FileFormat.Txt)で直接出力します。
正規表現や手動によるタグ除去の方法と比較して、このアプローチはコードがより簡潔でメンテナンス性が高く、テキストの元の構造を適切に保持できます。日常的な HTML テキスト抽出のニーズに対して、軽量かつ実用的な技術選択肢と言えるでしょう。

