DOCおよびDOCXファイルのフォルダがあり、書式ではなく可読テキスト本文が必要 — 全文インデックス作成、検索エンジンへの取り込み、NLPおよび機械学習パイプライン、eDiscoveryレビュー、長期アーカイブ用 — な場合。各ファイルをWordで開いてプレーンテキストとして保存する方法は数ファイルを超えるとスケールせず、Wordの書式アーティファクトを残します。Total Doc Converter Xは、GUIなし、Microsoft Wordのインストールも不要で、コマンドラインからWord書式を取り除きクリーンなUTF-8またはANSIテキストをバッチで書き出します。Windowsサーバーにインストールし、スクリプトやActiveX経由で呼び出して、無人で実行できます。
*.docx)を指定するだけで、一致するすべてのファイルを一回の実行で処理
(30日間、メール登録不要)
(サーバーライセンス、永続版)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
DOCとDOCXは人間の読書と編集向けに構築されたMicrosoft Word形式です。DOCXファイルはXMLパーツ、埋め込みメディア、スタイル、改訂履歴、コメント、変更履歴を含むZIPコンテナです。検索エンジン、インデクサー、LLMトークナイザー、eDiscoveryパイプラインはこれらに関心がありません — 関心があるのは可読テキストです。これらのシステムを生のWordファイルに向けると、すべてのコンシューマーが独自のDOC/DOCXパーサーを持たなければならず、エッジケースで意見が分かれます。
TXTは最小公倍数です。すべての検索インデクサー、すべてのNLPツールキット、すべてのgrepスタイルツール、すべてのdiffユーティリティはプレーンテキストを同じように読み取ります。Wordをサーバーで一度TXTに変換すれば、すべての下流コンシューマーが同じクリーンな入力を得ます。テーブルはタブ区切りの行または改行にフラット化されます。画像は除外されます。ヘッダーとフッターはフラグに応じて保持または削除できます。残るのは本文コンテンツであり、インデックス作成や特徴抽出に使えます。
| DOC / DOCX | TXT | |
|---|---|---|
| コンテンツ | テキスト + 書式 + メディア | テキストのみ |
| ファイルサイズ | 数十〜数百KB | 通常、元のサイズの5〜20% |
| インデックス作成 | DOC/DOCXパーサーが必要 | あらゆるインデクサーやトークナイザーで動作 |
| テーブル | 構造化セル | タブ区切り行にフラット化 |
| 画像 | 埋め込み | 削除 |
| 対象者 | レビュアー、エディター | 検索、NLP、アーカイブ、eDiscovery |
上のリンクからインストーラーをダウンロードし、Windowsサーバーまたはワークステーションで実行します。セットアップは1分以内で完了します。Microsoft Word、LibreOffice、ブラウザのインストールは不要です — コンバーターは独自エンジンでDOCとDOCXを直接解析し、指定したエンコーディングでプレーンテキストを書き出します。
cmd.exeまたはPowerShellを開きます。コンバーターの実行ファイルはDOCConverter.exeで、インストールフォルダ(通常はC:\Program Files\CoolUtils\TotalDocConverterX\)にあります。システムPATHに追加するか、コマンドでフルパスを使用してください。
最もシンプルなコマンドは、フォルダ内のすべてのDOCXファイルをTXTに変換します:
DOCConverter.exe C:\Docs\*.docx C:\Output\ -c TXT -Encoding UTF-8
このコマンドはC:\Docs\内のすべての.docxファイルを処理し、変換後のTXTファイルをC:\Output\に保存します。各Wordファイルから同じベース名のTXTが1つ生成されます。レガシーのWord 97〜2003ドキュメントには*.docを、両方を同時にキャッチするには*.do*を使用してください。
追加のフラグでTXT出力を制御します:
DOCConverter.exe C:\Docs\*.docx C:\Output\ -c TXT -Encoding UTF-8 -BOM 0 -log C:\Logs\word2txt.log
-Encoding UTF-8 — 出力エンコーディング(UTF-8、UTF-16、ANSI、1251、1252など)-BOM 0 — UTF-8のバイト順マークを抑制。-BOM 1で書き出し-LineBreaks CRLF — Windows形式の\r\nまたはLFでUnix形式の\n-log C:\Logs\word2txt.log — 検証用の変換ログを出力コマンドを.batファイルに保存し、Windowsタスクスケジューラでスケジュールします:
@echo off "C:\Program Files\CoolUtils\TotalDocConverterX\DOCConverter.exe" C:\Incoming\*.docx C:\Archive\TXT\ -c TXT -Encoding UTF-8 -BOM 0 -log C:\Logs\word2txt.log
これにより、毎晩(または設定した任意の間隔で)変換が実行され、結果を検証できるログファイルが出力されます。出力フォルダを検索インデクサーまたはNLP取り込みジョブとペアリングすれば、パイプラインは手動ステップなしで端から端まで実行されます。
Total Doc Converter Xには完全なActiveXインターフェースが含まれています。.NET、VBScript、PHP、Python、Ruby、ASPなど、あらゆるCOM互換環境からコンバーターを呼び出せます。これにより、コマンドラインプロセスを外部起動することなく、独自のウェブアプリケーション、eDiscoveryプラットフォーム、ドキュメントワークフローにWord-to-Text変換を組み込めます。
例(C#/.NET):
DOCConverterX Cnv = new DOCConverterX();
Cnv.Convert("C:\\Docs\\contract.docx", "C:\\Output\\contract.txt", "-c TXT -Encoding UTF-8 -BOM 0 -log c:\\Logs\\doc.log");
例(PHP):
$c = new COM("DOCConverter.DOCConverterX");
$c->convert("C:\\Docs\\contract.docx", "C:\\Output\\contract.txt", "-c TXT -Encoding UTF-8 -BOM 0 -log c:\\Logs\\doc.log");
同じ呼び出しがASP.NET、VBScript、Python、Ruby、Perl、JavaScript(Windows Script Host)でも動作します。ウェブアプリケーションでアップロードされたWordファイルを受け取り、リアルタイムでクリーンなUTF-8テキストをインデクサー、LLMエンドポイント、ストレージ層に返すことができます。
| 機能 | オンラインコンバーター | Total Doc Converter X |
|---|---|---|
| バッチ処理 | 一度に1ファイルのみ | バッチあたりファイル数無制限 |
| ファイルのプライバシー | サードパーティサーバーにアップロード | ファイルは自分のマシンから外に出ない |
| エンコーディング制御 | UTF-8のみ、BOM強制 | UTF-8、UTF-16、ANSI、コードページ、BOMオン/オフ |
| 多言語コンテンツ | CJK、RTLスクリプトで不安定 | 完全Unicode保持 |
| 自動化 | 手動のみ | コマンドライン、.bat、タスクスケジューラ、ActiveX |
| サーバー展開 | 不可 | サーバー向け設計、GUI不要 |
| Wordのインストール必須 | 該当なし | 不要 |
| インターネット必要 | はい | いいえ |
コンバーターはDOCとDOCXを直接解析します。サーバーにMicrosoft Office、LibreOffice、その他のワードプロセッサをインストールする必要はありません。これによりライセンスコストを回避し、無人シナリオでのWord自動化のよく知られた不安定さを回避できます。
Total Doc Converter Xは無人運用向けに設計されています。GUIウィンドウ、ダイアログボックス、確認プロンプトはありません。コマンドラインから、またはサービスの一部としてサイレントに実行されます — 本番サーバーに必要なものそのものです。
検索インデクサー、NLPフレームワーク、レガシーアーカイブにはそれぞれ独自のエンコーディングルールがあります。Total Doc Converter XはBOMありまたはなしのUTF-8、UTF-16 LEまたはBE、Windows ANSIコードページ1251および1252、その他システムに登録されているコードページを書き出します。キリル契約、日本語の製品マニュアル、アラビア通信、ドイツ語の技術文書はすべて変換をそのまま生き残ります — コンバーターはソースDOC/DOCXをUnicodeとして読み取り、選択した出力エンコーディングを不可逆なトランスリテレーションなしで書き出します。.batファイルで-Encodingを一度設定すれば、出力は下流コンシューマーにバイト単位で一致します。
同じコマンドラインツールでWordをPDF、HTML、RTF、XLS、TIFF、JPEGなどに変換できます。1回のインストールですべてのWord変換ニーズに対応します。-c TXTを-c PDFに変更するだけで、同じバッチ機能と自動化機能でPDF出力が得られます。
(30日間、メールやクレジットカード不要)
(サーバーライセンス、永続版)
Windows 7/8/10/11 • Server 2008/2012/2016/2019/2022
"案件ごとに数千のDOCおよびDOCX証拠を処理しています。Total Doc Converter XはeDiscoveryサーバー上で夜間バッチとして実行され、キーワード検索と概念クラスタリング用のUTF-8テキストコピーを生成します。テキスト本文はクリーンで — Wordアーティファクトなし、ヘッダー/フッターのノイズなし、テーブルはタブにフラット化されます。-BOM 0を設定したことが、当社のインデクサーが初回試行で動作した小さな決め手でした。"
Caroline Whitford Litigation Support Specialist, Mid-Atlantic Law Group
"検索拡張のために契約コーパスを埋め込みパイプラインに供給しています。パイプライン内でDOCXを解析するのは遅く脆弱で、python-docxはテーブルセルでWordと意見が分かれていました。DOCConverter.exeでプレーンTXTに事前変換することで両方の問題を解消しました。.batファイルはタスクスケジューラに常駐し、埋め込みジョブはTXTを読み取り、Word XMLとの戦いをやめました。"
Devansh Iyer NLP Engineer
"コンプライアンスから、長期アーカイブのために臨床ドキュメントごとにオリジナルとともにプレーンテキストコピーを保持するよう求められました。Total Doc Converter Xを選んだのは、ファイルサーバーにWordが不要だからです。エンコーディングフラグでアーカイブ全体でBOMなしUTF-8に標準化できました。テーブルフラット化のルールに関するドキュメントはもう少し詳細にしてほしいですが、サポートは当日に質問に答えてくれました。"
Margaret Holloway Records Manager, Regional Health Network
DOCConverter.exe C:\Docs\*.docx C:\Output\ -c TXT -Encoding UTF-8 です。ソースフォルダ内のすべてのWordファイルをTXTに変換します。レガシーのWord 97〜2003ファイルには*.doc、DOCとDOCXの両方を1回でキャッチするには*.do*を使用してください。-Encodingに続けてターゲットエンコーディングを渡します。サポートされる値にはUTF-8、UTF-16、UTF-16BE、ANSI、システムに登録されているWindowsコードページ(例えばキリルWindowsの1251、西ヨーロッパの1252)が含まれます。出力バイトは下流のインデクサーやパーサーが期待するものに正確に一致します。-BOM 0を追加して、バイト順マークなしのクリーンなUTF-8ストリームを書き出します。-BOM 1でBOMを出力します。一部の検索インデクサーやJSONパーサーはBOMで始まるファイルを拒否しますが、一部のWindowsネイティブツールはBOMを必要とします — このフラグで後処理なしにどちらにも対応できます。-Encoding UTF-8を選択するか、アーカイブ標準が要求するならコードページを選んでください。-IncludeHeaders 0、保持するには-IncludeHeaders 1を使用してください。TXTにはページの概念がないため、ページ番号は削除されます。DOCConverter.DOCConverterX)として登録されます。.NET、PHP、Python、VBScript、ASP、Ruby、Perl、その他のCOM互換環境から呼び出せます。ウェブアプリケーションはアップロードされたDOC/DOCXファイルを受け取り、リアルタイムでインデクサーやLLMエンドポイントにUTF-8テキストを返すことができます。
string src = @"C:\test\Source.docx";
string dest = @"C:\test\Dest.pdf";
var cnv = new DocConverterX();
cnv.Convert(src, dest, "-cPDF -log c:\\test\\Doc.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\DocConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.docx";
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("DocConverter.DocConverterX")
C.Convert "c:\source.docx", "c:\dest.pdf", "-cPDF -log c:\doc.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("DocConverter.DocConverterX")
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.docx", "C:\www\ASP", "-cpdf -log c:\doc.log")
set C = nothing
$src="C:\\test\\test.docx";
$dest="C:\\test\\test.pdf";
if (file_exists($dest)) unlink($dest);
$c= new COM("DocConverter.DocConverterX");
$c->convert($src,$dest, "-cPDF -log c:\\test\\Doc.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('DocConverter.DocConverterX')
src = "C:\\test\\test.docx"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\Doc.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("DocConverter.DocConverterX")
src = "C:\\test\\test.docx"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\Doc.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('DocConverter.DocConverterX');
c.Convert('c:\test\source.docx', 'c:\test\dest.pdf', '-cPDF -log c:\test\Doc.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("DocConverter.DocConverterX");
c.Convert("C:\\test\\source.docx", "C:\\test\\dest.pdf", "-cPDF");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.docx"; my $dest = "C:\\test\\test.pdf"; my $c = CreateObject Win32::OLE 'DocConverter.DocConverterX'; $c->convert($src, $dest, "-cPDF -log c:\\test\\Doc.log"); print $c->ErrorMessage if -e $dest;
無料トライアルをダウンロードして、ファイルを数分で変換。
クレジットカードもメールアドレスも不要。