免费在线将 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—— 而且在信件的第二句话出现之前,还有大约四 KB 这种东西。

RTF 是文本,但是被一门标记语言包裹着的文本,想把文字取出来,就得真正解析那些控制字,而不是 对着反斜杠碰运气写正则。这个页面干的就是这个。从 RTF 文件提取文本,你得到的 是按阅读顺序排列的正文,别无其他。免费、免注册、上限 50 MB,我们这边什么都不存。

为什么简单粗暴的剥离会翻车

写一个二十行的函数,把反斜杠开头的东西全删掉——这种诱惑很大。它在前三个文件上管用,然后 悄悄毁掉剩下的所有文件。就算你永远不写那个函数,这些具体的翻车方式也值得了解,因为它们正是 一个真正的解析器必须处理的事情:

  • 头部各组不是内容。字体表、颜色表、样式表和修订表全在文件顶部的花括号里 待着。只删控制字、却留下这些组里的文本,你的输出就会以一串字体名开场。
  • 花括号是有含义的。组会嵌套,并限定格式的作用域。有些组—— \*\generator\info、嵌入对象数据——应该整组丢弃,而不是拆开。
  • 转义序列长得像内容。\'92 是一个真实的字符,不是该删的控制字。 删了它,全文档的撇号就从单词中间集体消失。
  • 二进制藏在里面。图片以 \pict 组的形式存在,是一长串十六进制 数字,在傻瓜过滤器眼里和普通文本一模一样。于是一封信中间就冒出四万个字符的 0100090000
  • 段落标记很重要。\par 必须变成换行,而不是变成空气,否则整份 文档到手就是一个没头没尾的超长段落。

RTF 会成批出现的地方

没有人只有三个 RTF 文件。人们有的是三千个,因为某个系统从 2004 年起就在源源不断地吐它们。 惯犯名单:

  • 法律取证与案卷。从案件管理系统导出的笔录、诉状和往来函件,常常堆在一个 平铺的目录里,文件名让人摸不着头脑。
  • 临床文书。口述病历、出院小结和转诊信,以 RTF 块的形式存在电子病历系统的 表里——通常是因为厂商 2003 年选了它,此后没有任何东西逼它改。
  • 政府档案。选它的理由和法院一样:一份开放、稳定、三十年后照样打得开的 规范。
  • 老邮件归档。Outlook 的富文本模式骨子里就是 RTF,所以做 MSG 邮件提取时它会 不断掉出来。
  • 老应用的导出。凡是 Web 编辑器时代之前带富文本字段的 CRM、工单或业务 系统,几乎肯定在某一列里存着 RTF。
  • 写字板文档。几十年来,人们用 Windows 默认打开的那个软件随手存下的笔记 和流程,全在这儿。

共同点是:这些都是你想搜索、想索引、想跨着提问的归档——而这正是纯文本的本职工作。

真正咬人的是编码

现实中大多数 RTF 问题是字符编码问题,不是结构问题。这个格式设计于 Unicode 尘埃落定之前, 老文件身上都带着那段历史。

文件头会声明一个代码页——最常见的是代表 Windows 西欧的 \ansicpg1252,但你也会 遇到西里尔文的 \ansicpg1251、中欧的 \ansicpg1250,以及出身经典 Macintosh 的 \mac。非 ASCII 字符随后以 \'92\'e9 这类 十六进制转义出现,含义完全取决于那条声明。声明弄错了,é 就变成一个西里尔字母,弯撇号就变成 一个方框。

较新的文件用 \uN?——一个 Unicode 码点,后面跟一个给老旧阅读器用的回退字符。 解析得当,你拿到真正的字符;解析马虎,你拿到回退字符,而它往往就是一个问号。那些每个破折号 和弯引号都变成 ? 的文档,根子就在这里。

所以:把一批文件正式入库之前,打开两三个转换结果,专门盯着撇号、引号、破折号和任何带音符的 人名看。这四样东西能告诉你编码有没有读对。如果错了,错得会很一致,对整批做一次查找替换就能 一次修完。

文本还是 Markdown?决定性的问题

归根到底就一个问题:文档里有没有你在乎的表格。

RTF 的表格是用 \trowd\cellx 显式定义的,所以要 Markdown 的话, 它们能干干净净地重建成竖线表格。压平成文本,数值一个不丢,但每个数值属于哪一列就没了—— 一张账单表变成一串用空白隔开的数字,怎么调提示词都找不回列。如果你的文档是这样的,用 RTF 转 Markdown。 本页顶部的格式切换按钮可以直接切过去,并保留你已经选好的文件。

其余一切——信件、笔记、笔录、备忘、往来函件,也就是 RTF 实际被用来干的大部分事——文本是 更好的输出。全文搜索索引要它,embedding 流水线默认按它切块,grep 读它,分类器 也预期它。Markdown 的星号和竖线只会是你下一步又要剥掉的字符。

大批量处理的过法

  • 把文件夹打成 zip。ZIP 转文本 一趟转完归档里所有支持的文件,比一个个上传强太多。留意 50 MB 上限——RTF 不压缩,带嵌入 图片的文件比字数暗示的大得多。
  • 先抽样,再下手。先转五个不同年份的文件。编码问题按年代和生成工具扎堆, 抽样能在你处理三千个之前就把规律亮出来。
  • 把文件名当元数据留下。一旦成了扁平文本,文件名可能是你仅存的出处信息。 和每条记录存在一起。
  • 做好样板文字的心理准备。信头、页脚和固定的结尾敬语在语料库的每个文件里 重复。任何词频或主题分析里它们都会成为虚假高频词,看出规律后剥掉。
  • 提防截断。不少工具吐出的 RTF 略不合规范、花括号不配对。转换结果如果在 句子中间戛然而止,是源文件坏了,不是转换悄悄失败——拿文本编辑器打开原件,通常一眼就能 看到坏在哪。
  • 看 token 数。输出下方的计数器在你把文档贴到任何地方之前就告诉你它的 开销,在决定一个归档能塞进一条提示词多少时很好用。

RTF、DOCX,该转哪个

同一份文档两种格式都有的话,选 DOCX。它带着正经的样式层级和更丰富的语义, Word 转文本就是本页更 现代的对应物。

但对批量文本提取,RTF 有一个实打实的优势,而且不是怀旧:它是一条线性的流,没有压缩层。没有 会损坏的 zip 容器,没有互相引用的 XML 部件。出了问题,你可以用任何编辑器打开文件,亲眼读到 原因。面对几千个来路不明的文件,这种可预期性值钱得超乎想象。

常见问题

怎么从 RTF 文件里提取文本?

.rtf 拖进上方的转换器。控制字会被正规解析,你拿到的是按阅读顺序排列、不带任何标记的正文。免费、免注册、单文件 50 MB,什么都不存。可下载为 .txt,也可以直接复制。

为什么不能直接用文本编辑器打开 RTF?

能打开,然后你会看到 {\rtf1\ansi\deff0{\fonttbl{\f0\froman Times New Roman;}},后面还有好几 KB,信件的第二句话才姗姗来迟。RTF 是 ASCII,但那是被一门标记语言包裹的 ASCII。文字就在里面,和字体表、颜色表和控制字交错在一起,必须解析,而不是用模式匹配抹掉。

为什么我自己剥反斜杠会得到坏掉的输出?

因为控制字的分隔并不统一,而且有些控制字携带着你必须保留的数据。一条删掉反斜杠后面所有东西的正则,也会删掉 \'e9——RTF 就是用它编码带音符的字符——于是每个带变音符的人名都在悄悄掉字母。它在前三个文件上管用,然后悄悄毁掉其余的。

带音符的字符和非英文字符能保住吗?

能,前提是文件正确声明了自己的编码——多数文件都做到了。RTF 把非 ASCII 字符转义成与声明代码页挂钩的十六进制序列,正规解析会把它们还原成真正的 Unicode。这是手搓剥离方案最常见的失败点,也是对人名地址数据集破坏最大的一个。

RTF 文档里的表格会转换吗?

单元格内容会过来,但是以顺排文字而非网格的形式——纯文本没办法表达"列"这个概念。如果这份文档是围绕表格搭起来的报告,RTF 转 Markdown 会把行列保留成竖线表格。

工具箱的其余部分

RTF 是支持的十三种格式之一。懒得挑页面的话, File2Txt 一次上传通吃。 近邻页面:固定版式文档有 PDF 转文本,电子书有 EPUB 转文本,存下来的 网页有 HTML 转文本, 另一种遗留交换格式有 XML 转文本

在弄代码或抓网页?这里有 GitHub 仓库转文本转换器GitLab 版本本地文件夹转换器,以及抓取 网址的 Web2Txt为 LLM 准备文档的指南 讲的是这件事的通用版本。

Repo2Txt 由 v12hero 开发和维护,那是一位独立开发者,专做隐私优先的原生应用和 Web 应用。