RTF を テキスト にオンラインで無料で変換

オンラインで RTF ファイルを テキスト に無料で変換します。ファイルをアップロードすると、クリーンで LLM 対応の出力が即座に得られます。サインアップなし、ファイルあたり 50 MB、何も保存されません。

RTF をテキストに変換する:制御語を捨てて中身だけ取り出す

RTF の面倒さは、たいてい痛い目に遭ってから分かります。.rtf ファイルが詰まったフォルダがあって、 中身をデータベースに入れたいとします。形式としては素の ASCII なので、そのまま読み込めば済むはずだと考えます。 ところが読み込んだ結果を見ると {\rtf1\ansi\deff0{\fonttbl{\f0\froman Times New Roman;}}{\colortbl;\red0\green0\blue0;}\viewkind4\uc1\pard\f0\fs24 Dear Sir,\par で、 手紙の 2 文目にたどり着くまでにこれが 4 キロバイトほど続きます。

RTF はテキストですが、マークアップ言語に包まれたテキストです。中の文章を取り出すには、バックスラッシュを頼りに 正規表現を当てるのではなく、制御語をきちんとパースする必要があります。このページがやっているのはそれです。 RTF ファイルからテキストを抽出すれば、読む順に並んだ本文だけが手に入ります。 無料、登録不要、50 MB まで、こちら側には何も保存しません。

RTF ファイルを開いて自力で剥がすと壊れる理由

バックスラッシュで始まるものを全部消す 20 行の関数を書きたくなります。最初の 3 ファイルではうまくいって、 残りを静かに壊します。どう壊れるかは、その関数を書く予定がなくても知っておく価値があります。 まともなパーサが処理しなければならないものと同じだからです。

  • ヘッダーのグループは本文ではありません。 フォントテーブル、カラーテーブル、スタイルシート、 リビジョンテーブルはすべてファイル冒頭の波括弧の中にあります。制御語だけを消してグループ内のテキストを 残すと、出力の先頭が書体名の一覧になります。
  • 波括弧には意味があります。 グループは入れ子になり、書式のスコープを決めます。 \*\generator\info、埋め込みオブジェクトのデータのように、 中を展開せず丸ごと捨てるべきグループもあります。
  • エスケープは本文に見えます。 \'82\'a0 は実在の文字であって、 消してよい制御語ではありません。これを削ると文書中の日本語が文字単位で虫食いになります。
  • バイナリが紛れ込んでいます。 画像は \pict グループの中に長い 16 進数の 並びとして入っていて、雑なフィルタからは普通のテキストと見分けがつきません。手紙の途中に 0100090000 が 4 万文字続く、という事態はこうして起きます。
  • 段落マーカーは捨てられません。 \par は改行に変換する必要があります。 何もしなければ、文書全体がひと続きの巨大な段落として出てきます。

RTF がまとまって出てくる場所

RTF ファイルが 3 個だけ、という人はいません。2004 年ごろから動き続けている何かのシステムが吐き続けた結果、 3000 個あります。ありがちな出どころは次のとおりです。

  • 訴訟対応と事件記録。 事件管理システムから書き出された調書、申立書、往復文書。 たいていは意味の読めないファイル名でひとつのフォルダに平積みされています。
  • 診療記録。 口述の記録、退院サマリ、紹介状が電子カルテのテーブルに RTF の塊として 入っています。2003 年にベンダーがそう決めて、以来それを変える理由がなかったというだけの話です。
  • 行政文書。 裁判所が選んだ理由とまったく同じです。仕様が公開されていて安定しており、 30 年後でも開けます。
  • 古いメールアーカイブ。 Outlook のリッチテキスト形式は中身が RTF なので、 MSG メールの抽出からは絶えず出てきます。
  • 業務アプリからのエクスポート。 Web エディタが実用になる前のリッチテキスト欄を持つ CRM、 ヘルプデスク、業務ツールは、まず間違いなくカラムに RTF を格納しています。
  • WordPad の文書。 Windows が既定で開くものをそのまま使った人たちが、 何十年ぶんものメモや手順書を残しています。

共通しているのは、検索したい、索引を張りたい、横断して質問したいアーカイブだという点です。 それはまさにプレーンテキストの仕事です。

実際に刺さるのはエンコーディング

現場で出くわす RTF の問題は、構造の問題ではなく文字エンコーディングの問題がほとんどです。この形式は Unicode が固まる前に設計されていて、古いファイルはその歴史をそのまま抱えています。

ヘッダーにはコードページが宣言されています。Windows 西欧向けの \ansicpg1252 が世界的には いちばん多く、日本語環境で作られたファイルなら \ansicpg932、中欧なら \ansicpg1250、クラシック Macintosh 生まれのファイルなら \mac に出会います。 非 ASCII 文字はそのうえで \'82\'a0\'e9 のような 16 進エスケープとして現れ、 その意味はこの宣言だけに依存します。取り違えれば「あ」が別の文字に化け、é がキリル文字になります。

新しめのファイルは \uN? を使います。Unicode のコードポイントに、それを扱えない古いリーダー向けの 代替文字が続く形式です。正しくパースすれば本来の文字が得られますが、雑に扱うと代替文字のほうが残ります。 それはたいていリテラルの疑問符です。ダッシュや引用符がすべて ? になった文書は、これが原因です。

なので、バッチをまとめてデータベースに投入する前に、変換済みのファイルを 2、3 個開いて、引用符、ダッシュ、 アクセント付きの名前、それに日本語なら濁点付きの仮名と全角記号を重点的に見てください。ここが無事なら エンコーディングは正しく読めています。ずれているときは一貫してずれているので、 バッチ全体の一括置換で一度に片が付きます。

テキストか Markdown か、判断の分かれ目

結局は、残したい表があるかどうかに尽きます。

RTF の表は \trowd\cellx で明示的に定義されているので、Markdown を選べば パイプ表としてきれいに再構成されます。テキストに潰すと値そのものは残りますが、どの列に属していたかは 失われます。請求明細の表は空白区切りの数字の羅列になり、あとからどうプロンプトを工夫しても列は戻りません。 そういう文書なら RTF から Markdown を使ってください。ページ上部の形式トグルで切り替えても、選択済みのファイルはそのまま引き継がれます。

それ以外の文書、つまり手紙、メモ、調書、社内文書といった RTF が実際に使われている用途のほとんどでは、 テキストのほうが良い出力です。全文検索の索引が求めるのもテキストですし、埋め込みのパイプラインが既定で 分割するのもテキスト、grep が読むのもテキスト、分類器が期待するのもテキストです。 Markdown のアスタリスクやパイプは、次の工程で結局また剥がす文字にしかなりません。

大量の RTF をテキストに変換するときの進め方

  • フォルダごと ZIP にします。 ZIP からテキスト はアーカイブ内の対応ファイルを一度にすべて変換するので、1 個ずつアップロードするよりはるかに楽です。 ただし 50 MB の上限には注意してください。RTF は無圧縮で、画像を埋め込んだファイルは文字数から 想像するよりずっと大きくなります。
  • 先にサンプルを見ます。 まず年代の違う 5 個を変換してみてください。エンコーディングの 問題は年代ごと、生成したツールごとに固まって出るので、3000 個を流す前にサンプルで傾向が見えます。
  • ファイル名をメタデータとして残します。 プレーンテキストにしてしまうと、来歴を示す 手がかりはファイル名しか残らないことがあります。レコードごとに一緒に保存しておいてください。
  • 定型文が混ざる前提で考えます。 レターヘッド、フッター、結びの定型句はコーパス内の すべてのファイルで繰り返されます。頻度分析やトピック分析では見かけ上やたら頻出する語彙になるので、 パターンが見えた時点で落としてください。
  • 途中で切れていないか確認します。 波括弧の対応が崩れた、仕様に厳密でない RTF を吐く ツールは珍しくありません。変換結果が文の途中で止まっていたら、変換が黙って失敗したのではなく元ファイルが 壊れています。元をテキストエディタで開けば、たいていどこでおかしくなったか目で分かります。
  • トークン数を見ます。 出力の下のカウンタが、その文書を貼り付ける前にコストを教えて くれます。アーカイブのどこまでを 1 回のプロンプトに入れられるか決めるときに役立ちます。

RTF と DOCX、どちらを変換するか

同じ文書が両方の形式であるなら、DOCX を取ってください。まともなスタイル階層と豊かな意味情報を持っていますし、 このページの現代版に近いのは Word からテキスト のほうです。

とはいえ RTF にも、大量のテキスト抽出に限れば本物の利点が一つあります。懐古趣味ではありません。 圧縮層のない単一の線形ストリームだという点です。壊れる ZIP コンテナもなければ、互いを参照し合う XML パーツも ありません。何かおかしくなったときは、任意のエディタでファイルを開いて自分の目で原因を読めます。 素性の分からないファイルが数千個ある状況では、この予測可能性が意外なほど効きます。

よくある質問

RTF ファイルからテキストを抽出するには

上の変換ツールに .rtf をドロップしてください。制御語はきちんとパースされ、マークアップのない本文が読む順に出てきます。無料、登録不要、1 ファイル 50 MB まで、保存はしません。.txt としてダウンロードするか、そのままコピーできます。

RTF ファイルをテキストエディタで開くだけではだめですか

開けます。そして {\rtf1\ansi\deff0{\fonttbl{\f0\froman Times New Roman;}} が見え、手紙の 2 文目に届くまでにさらに数キロバイト続きます。RTF は ASCII ですが、マークアップ言語に包まれた ASCII です。本文は確かに入っているものの、フォントテーブルやカラーテーブル、制御語と交互に並んでいて、パターンマッチで消すのではなくパースしなければ取り出せません。

自分でバックスラッシュを削ると出力が壊れるのはなぜですか

制御語の区切りが一様ではなく、残さなければならないデータを持つものがあるからです。バックスラッシュ以降を消す正規表現は \'82\'a0 も消しますが、これは RTF が「あ」を表す書き方です。結果として日本語の本文が黙って虫食いになります。最初の 3 ファイルではうまくいって、残りを静かに壊すたぐいの処理です。

日本語やアクセント付きの文字は残りますか

ファイルがエンコーディングを正しく宣言していれば残りますし、ほとんどのファイルは宣言しています。RTF は非 ASCII 文字を、宣言されたコードページに紐づく 16 進シーケンスとしてエスケープするので、正しくパースすれば本来の Unicode に戻ります。手書きの除去処理でいちばん多い失敗がここで、氏名や住所のデータセットにいちばん大きな損害を与えるのもここです。

RTF 文書の表は変換されますか

セルの中身は出てきますが、格子ではなく流れる文章としてです。プレーンテキストに列を表現する手段はありません。表を軸に組み立てられたレポートなら、RTF から Markdown のほうが行と列をパイプ表として保ちます。

ほかのツール

RTF は対応している 13 形式のうちの一つです。ページを選ぶのが面倒なら、 File2Txt が 1 回のアップロードで すべてを処理します。近いものでは、レイアウト固定の文書に PDF からテキスト、電子書籍に EPUB からテキスト、保存した Web ページに HTML からテキスト、 そしてもう一方の古い交換形式に XML からテキストがあります。

コードや生きた Web が相手なら、 GitHub リポジトリをテキストに変換するツールGitLab 版ローカルフォルダの変換、URL を取得する Web2Txt があります。一般的な考え方は LLM 向けに文書を用意するガイド で扱っています。

Repo2Txt を開発・運用しているのは v12hero、 プライバシーを最優先にしたネイティブアプリと Web アプリを作る独立開発者です。