HTMまたはHTMLファイルのフォルダ — スクレイピングされたページ、アーカイブされた公報、エクスポートされたヘルプファイル、イントラネットのスナップショット — があり、マークアップなしの可読テキストを必要とする下流のパイプラインがある場合。検索インデクサーは<div>のノイズを欲しがりません。NLPトークナイザーはインラインスクリプトで詰まります。法務レビューはCSSではなく散文を求めています。Total HTML Converter Xは、GUIなし、ブラウザエンジンも不要で、コマンドラインからHTMマークアップを除去しクリーンなUnicodeテキストをバッチで書き出します。Windowsサーバーにインストールし、スクリプトやActiveX経由で呼び出して、インデクサー、モデル、アーカイブにデータを供給できます。
*.htm)を指定するだけで、一致するすべてのファイルを一回の実行で処理
(30日間、メール登録不要)
(サーバーライセンス、永続版)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
HTM(およびHTML)はブラウザ向けのマークアップ言語です。ファイルには散文、タグ、属性、インラインスタイル、JavaScript、外部アセットへの参照が混在しています。生のHTMを取り込む検索インデクサーは、実際のコンテンツと並んで<script>ブロックやCSSクラス名にスコアを付けることになります。LLMトークナイザーはノイズにコンテキストを浪費します。HTMアーカイブに対するgrepは、本文ではなく属性内の一致を返します。
Unicode TXTはUTF-8またはUTF-16のプレーンテキストです。タグなし、マークアップなし、書式なし — ドキュメントの可読文字だけです。検索エンジン、NLPツールキット、ログアナライザー、アーカイブユーティリティはどれも前処理なしで取り込みます。変換は意図的に不可逆です:画像、レイアウト、スタイルは消えます。残るのはテキストコンテンツで、正しい論理順序で、元の文字セットがそのまま保持されます。
| HTM | Unicode TXT | |
|---|---|---|
| コンテンツ | マークアップ、スクリプト、スタイル、散文 | 散文のみ |
| インデックス可能なノイズ | 多い(タグ、クラス、スクリプト) | なし |
| エンコーディング | <meta>で宣言、しばしば不一致 | 明示的なUTF-8またはUTF-16 |
| トークナイザー対応 | 先にパーサーが必要 | はい、すぐに使用可能 |
| grep / awk適性 | 低い(タグ内の一致) | 優れている |
| 対象者 | ブラウザ | 検索、NLP、分析、アーカイブ |
上のリンクからインストーラーをダウンロードし、Windowsサーバーまたはワークステーションで実行します。セットアップは1分以内で完了します。ブラウザ、Microsoft Office、Javaランタイムは不要です — コンバーターは独自エンジンでHTMを解析し、Unicodeテキストを直接書き出します。
cmd.exeまたはPowerShellを開きます。コンバーターの実行ファイルはHTMLConverter.exeで、インストールフォルダ(通常はC:\Program Files\CoolUtils\TotalHTMLConverterX\)にあります。システムPATHに追加するか、コマンドでフルパスを使用してください。
最もシンプルなコマンドは、フォルダ内のすべてのHTMファイルからマークアップを除去し、UTF-8テキストを書き出します:
HTMLConverter.exe C:\Pages\*.htm C:\Output\ -c TXT -Encoding UTF-8
このコマンドはC:\Pages\内のすべての.htmファイルを処理し、変換後の.txtファイルをC:\Output\に保存します。各HTMファイルから同じベース名のTXTが1つ生成され、本文がUTF-8で書き出されます。
テキストの消費先に合わせて出力を調整します:
HTMLConverter.exe C:\Pages\*.htm C:\Output\ -c TXT -Encoding UTF-16 -BOM 1 -log C:\Logs\htm2txt.log
-Encoding UTF-8 — デフォルト。ほとんどの検索とNLPパイプラインに対応-Encoding UTF-16 — ワイド文字を期待するレガシーWindowsツールに便利-BOM 1または-BOM 0 — バイト順マークを書き込むかスキップ。多くのインデクサーはBOMなしを好む-log C:\Logs\htm2txt.log — 処理されたすべてのファイルと解析警告を記録コマンドを.batファイルに保存し、Windowsタスクスケジューラでスケジュールします:
@echo off "C:\Program Files\CoolUtils\TotalHTMLConverterX\HTMLConverter.exe" C:\Incoming\*.htm C:\Archive\TXT\ -c TXT -Encoding UTF-8 -BOM 0 -log C:\Logs\htm2txt.log
これは毎晩(または設定した任意の間隔で)実行され、検索インデクサー、NLPジョブ、grepベースの監査が取り込めるようにアーカイブフォルダにUTF-8テキストを格納します。
Total HTML Converter Xは完全なActiveXオブジェクトとして登録されます。.NET、VBScript、PHP、Python、Ruby、ASPなど、あらゆるCOM互換環境から呼び出せます。これにより、コマンドラインプロセスを外部起動することなく、独自の取り込みサービス、イントラネットポータル、NLPパイプラインにHTM-to-Unicode-text抽出を組み込めます。
例(C#/.NET):
HTMLConverterX Cnv = new HTMLConverterX();
Cnv.Convert("C:\\Pages\\report.htm", "C:\\Output\\report.txt", "-c TXT -Encoding UTF-8 -BOM 0 -log c:\\Logs\\htm.log");
例(PHP):
$c = new COM("HTMLConverter.HTMLConverterX");
$c->convert("C:\\Pages\\report.htm", "C:\\Output\\report.txt", "-c TXT -Encoding UTF-8 -BOM 0 -log c:\\Logs\\htm.log");
同じ呼び出しがASP.NET、VBScript、Python、Ruby、Perl、JavaScript(Windows Script Host)でも動作します。サービスはHTMアップロードを受け取り、同じリクエスト内でクリーンなUnicodeテキストを呼び出し元に返すことができます。
| 機能 | オンラインコンバーター | Total HTML Converter X |
|---|---|---|
| バッチ処理 | 一度に1ファイルのみ | バッチあたりファイル数無制限 |
| ファイルのプライバシー | サードパーティサーバーにアップロード | ファイルは自分のマシンから外に出ない |
| エンコーディング制御 | 通常UTF-8のみ | UTF-8、UTF-16 LE/BE、BOM切替 |
| 非ラテン文字 | 不安定(CJK、アラビアで文字化け) | 完全Unicode対応、BIDI保持 |
| 自動化 | 手動のみ | コマンドライン、.bat、タスクスケジューラ、ActiveX |
| サーバー展開 | 不可 | サーバー向け設計、GUI不要 |
| スループット | アップロード速度が制約 | ローカルI/O、毎時数千ファイル |
| インターネット必要 | はい | いいえ |
class属性やJavaScript文字列内の一致が返されます。抽出されたTXTをgrepすれば、実際の散文内の一致のみが返されます — 監査人が望む答えです。出力は本物のUTF-8またはUTF-16です。キリルはキリル、CJKはCJK、アラビアとヘブライは文字を論理順序で保持します。トランスリテレーション、文字の脱落、疑問符への置換はありません — HTMで読めたものはTXTでも読めます。
Total HTML Converter Xは無人運用向けに構築されています。GUIウィンドウ、ダイアログボックス、確認プロンプトはありません。コマンドラインから、またはサービスの一部としてサイレントに実行されます — インデックスジョブ、NLPパイプライン、アーカイブワーカーに必要なものそのものです。
検索エンジン、NLPツールキット、レガシーシステムはそれぞれ異なるバイトシーケンスを期待します。コンバーターはエンコーディングとBOMをコマンドラインフラグとして公開しているため、Elasticsearch向けにBOMなしUTF-8、Windows専用ツール向けにBOM付きUTF-16 LE、Notepadベースのレビュアー向けにBOM付きUTF-8を、同じインストールから書き出せます。
同じコマンドラインツールでHTMをPDF、DOC、XLS、TIFF、JPEG、RTFなどに変換できます。1回のインストールでサーバー上のすべてのHTM抽出ニーズに対応します。-c TXTを-c PDFに変更するだけで、同じバッチ機能と自動化機能でアーカイブ用PDF出力が得られます。
(30日間、メールやクレジットカード不要)
(サーバーライセンス、永続版)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"埋め込みモデルが実際のテキストを見る前に、生のHTMタグでコンテキストトークンを浪費していました。Total HTML Converter Xは、毎時クリーンなUTF-8を取り込みバケットに格納します。キリルとデーヴァナーガリーのページはそのまま残り、BIDIランは論理順序で出力され、トークナイザーは満足しています。マークアップを供給するのをやめたら、同じコーパスでパープレキシティが下がりました。"
Priya Krishnamurthy NLP Engineer, Conversational AI Startup
"当社のElasticsearchクラスターは9言語にわたる230万のアーカイブHTM公報をインデックス化しています。このコンバーターでプレーンUTF-8を事前抽出することで、インデックスサイズを約40%削減し、フレーズクエリがCSSクラス名ではなく実際に関連するヒットを返すようになりました。.batとタスクスケジューラのセットアップはServer 2019で無人実行され、6か月間一度も失敗していません。"
Stefan Holzer Search Architect, EU Public Sector Portal
"リーガルホールド用に顧客向け通信のHTMコピーを保持しています。レビュアーはキーワード検索のためにgrepしやすいテキスト版を必要としていました。コンバーターはeDiscoveryプラットフォームが期待する通りBOMなしUTF-8を生成し、ログファイルは監査証跡を満たすのに十分詳細です。BOMフラグに関するドキュメントはもう少し明確にしてほしいですが、質問した日にサポートが説明してくれました。"
Margaret Whitlock Compliance Lead, Insurance Holding Group
HTMLConverter.exe C:\Pages\*.htm C:\Output\ -c TXT -Encoding UTF-8 です。すべてのHTMファイルからマークアップを除去し、プレーンUTF-8テキストを書き出します。-Encoding UTF-16、-BOM 0、-logなどを追加して出力を制御できます。-Encoding UTF-8、ワイド文字を期待するレガシーWindowsツールには-Encoding UTF-16を使用してください。デフォルトはBOMなしUTF-8で、Elasticsearch、Solr、その他のほとんどのモダンな消費先に適しています。-BOM 1はファイル先頭にBOMを書き込みます(UTF-8ではEF BB BF、UTF-16 LEではFF FE)。-BOM 0はBOMを省略します。ほとんどの検索とNLPツールチェーンはBOMなしを好みますが、一部のWindows専用ビューアーやSQLバルクインポートツールはBOMを必要とします。<script>、<style>、HTMLコメントはテキストが書き出される前に削除されます。出力には可読の本文コンテンツのみが含まれます — レイアウトを除いて、ブラウザで人間が見るものです。これは検索インデクサーやLLMトークナイザーが望むものそのものです。HTMLConverter.HTMLConverterX)として登録されます。.NET、PHP、Python、VBScript、ASP、Ruby、Perlから呼び出せます。サービスはHTMアップロードを受け取り、同じリクエスト内でUnicodeテキストを返します — コマンドラインのシェル起動は不要です。
string src = @"C:\test\Source.html";
string dest = @"C:\test\Dest.pdf";
var cnv = new HTMLConverterX();
cnv.Convert(src, dest, "-cPDF -log c:\\test\\HTML.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Converter\HTMLConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.html";
var outPath = Path.GetTempFileName() + ".pdf";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"\"{srcPath}\" \"{outPath}\" -cPDF";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
sbLogs.AppendLine("Conversion complete.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("HTMLConverter.HTMLConverterX")
C.Convert "c:\source.html", "c:\dest.jpg", "-cJPG -log c:\html.log"
C.Convert "https://www.coolutils.com/", "c:\URL Page.pdf", "-cPDF -log c:\html.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("HTMLConverter.HTMLConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=test.pdf"
Response.BinaryWrite C.ConvertToStream("C:\www\ASP\Source.html", "C:\www\ASP", "-cpdf -log c:\html.log")
set C = nothing
$src="C:\\test\\test.html";
$dest="C:\\test\\test.pdf";
if (file_exists($dest)) unlink($dest);
$c= new COM("HTMLConverter.HTMLConverterX");
$c->convert($src,$dest, "-cPDF -log c:\\HTML.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('HTMLConverter.HTMLConverterX')
src = "C:\\test\\test.html"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\HTML.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("HTMLConverter.HTMLConverterX")
src = "C:\\test\\test.html"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\HTML.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('HTMLConverter.HTMLConverterX');
c.Convert('c:\test\source.html', 'c:\test\dest.pdf', '-cPDF -log c:\test\HTML.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("HTMLConverter.HTMLConverterX");
c.Convert("C:\\test\\source.html", "C:\\test\\dest.pdf", "-cPDF");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.html"; my $dest = "C:\\test\\test.pdf"; my $c = CreateObject Win32::OLE 'HTMLConverter.HTMLConverterX'; $c->convert($src, $dest, "-cPDF -log c:\\test\\HTML.log"); print $c->ErrorMessage if -e $dest;
無料トライアルをダウンロードして、ファイルを数分で変換。
クレジットカードもメールアドレスも不要。