RTF 转 Markdown:从 1987 年的格式里挖出结构
用文本编辑器打开一个 .rtf,你会看到类似
{\rtf1\ansi\deff0{\fonttbl{\f0 Times New Roman;}}\b Heading\b0\par 的东西。这就是
富文本格式的全部戏法:纯 ASCII,中间撒满控制字。\b 开粗体,
\b0 关粗体,\par 结束段落,花括号圈定作用域。微软在八十年代末设计了
它,好让不同厂商的文字处理器能交换文档,此后设计几乎没变过。
这让 RTF 转 Markdown 转换器做的是一桩相当本分的翻译活。两种格式都是行内
标记。粗体变成 **bold**,斜体变成 *italic*,列表还是列表,表格变成
竖线表格。把文件拖到上方,几秒钟就有 Markdown——免费、免注册、上限 50 MB,什么都不存。
为什么现在还有人塞给你 RTF
2026 年没有人主动选 RTF。但它照样会送上门来,而且几乎总是出自这几处:
- 法院与法律系统。电子立案门户、笔录服务和案件管理软件都倚重 RTF,因为它是 一份开放、稳定、人人可读的规范,对方用 2009 年的软件打开也不会坏。
- 医疗记录。临床记录、出院小结和口述转写结果以 RTF 块的形式待在电子病历 数据库里,比外行想象的常见得多。
- 政府与公共部门的文件交换。理由和法院相同——长期可读性压倒格式新潮。
- 写字板。它几十年的默认保存格式就是 RTF,海量随手写下的文档因此都存成了 它。
- 邮件附件与富文本正文。Outlook 的富文本模式产出的就是 RTF,从 MSG 邮件文件里 提取内容时它会冒出来。
- 老 CRM 和工单备注字段。Web 编辑器成熟之前带富文本输入框的任何应用, 八成都在数据库某一列里存着 RTF。
控制字与真正的内容
转换的全部工作就是把这两者区分开。RTF 文件以一个头部组开场,里面有字体表,通常还有颜色表, 有时有样式表。这些都不是内容——它们是文档自己的配置,一份短备忘里它们能轻松占掉三分之一的 字节。
头部之后是正文,控制字和文本交错。有些控制字能干净地映射到 Markdown:
- 字符格式。
\b、\i、\ul变成粗体、 斜体——而下划线嘛,Markdown 没有,通常降级成强调或直接丢掉。如果文档用下划线标出定义 术语(法律文书常这么干),这是实打实的损失。 - 段落与换行。
\par和\line变成段落和换行。 直截了当。 - 列表。
\pntext和较新的\listtable机制变成项目 符号和编号,源文件正确声明层级的话嵌套也保留。 - 表格。
\trowd、\cellx和\cell显式 定义行与单元格边界,所以能可靠地重建成 Markdown 竖线表格。这是选 Markdown 而不是 RTF 转纯文本的头号 理由——把表格压平,每个值属于哪一列就永远没了。
麻烦的是标题。RTF 在 \stylesheet 里有具名段落样式,作者用了的话,"Heading 1"
映射到 #,你得到一份真正的文档大纲。但 RTF 也允许直接排格式——把一行调成 18 磅
加粗,完事——而现实中的大量文件就是这么写的。转出来的 RTF 一片扁平、该是标题的地方只有几行
粗体字,原因就在这儿。源文件从没说过"这是标题",它只说了"又大又粗"。
嵌入对象过不来
RTF 能内嵌二进制载荷:图片以十六进制编码的 \pict 组存在,OLE 嵌入——一段链接的
Excel 区域、一张 Visio 图、一个公式对象——则是 \object 组。这就是为什么一个带
三张截图的 RTF 能有 12 MB 的"文本"。
这些统统变不成文字。这里没有 OCR,表格的截图仍然是截图。嵌入的电子表格对象只会留下当初随它 存储的那份纯文本渲染,可能不完整——数字重要的话,找来源工作簿,改跑 Excel 转 Markdown。 脚注和批注通常能以文本形式活下来,但会落在文本流末尾而不是原来的锚点处,依赖它们之前先确认 位置。
RTF 真的比 DOCX 更可预期
DOCX 是一个 zip 归档,里面装着 XML 文档,外加关系文件、样式部件、编号定义和内容类型清单。 结构同时住在好几个地方,还互相引用。它转换得不错,但零件实在多。
RTF 是一条从头读到尾的线性流。没有压缩,没有会损坏的 zip 层,没有关系图。转换结果怪怪的时候, 你可以用文本编辑器打开文件看出原因——现代办公格式没有一个做得到这一点。这份透明正是强监管 行业一直用它的原因。
代价是 RTF 的结构词汇更贫瘠。没有语义分节,样式约束更弱,值得一提的跟踪元数据也没有。同一份 文档两种格式都有的话,DOCX 通常给出更丰满的标题树—— Word 转 Markdown 是更现代的对应物,有得选时选它。
老文件里的编码怪相
RTF 比"Unicode 已成定局"这件事更古老,大约 2000 年代中期以前写的文件都带着痕迹。几种值得 认识的模式:
- 代码页声明。文件头里带着类似
\ansicpg1252(Windows 西欧)的 声明。出身经典 Mac、或用西里尔文、中欧代码页写的文件会声明别的东西;声明错了或缺失, 带音符的字符就整个变成别的字母。 - 十六进制转义。非 ASCII 字符以
\'92这类转义出现——这一个在 CP1252 里正是右弯撇号,也是老文档转换后冒出怪字符的头号来源。 - 带回退的 Unicode。较新的文件用
\uN?,数字是 Unicode 码点, 尾随字符是给读不懂它的老软件的替身。处理得当你得到真字符;处理马虎你得到那个回退问号。 - 伪 RTF。不少工具吐出的 RTF 并不完全守规矩——花括号不配对、自造控制字、 残缺的组。多数转换器能恢复,但畸形文件可能提前结束,只给你半份文档。输出在句子中间断掉, 先怀疑文件。
实用建议:在转换出的 Markdown 里扫一眼引号、破折号和带音符的人名的位置有没有变成问号和方框。 五秒钟,就能知道剩下的部分可不可信。
它实际被用在哪儿
- 法律文书审阅。编号条款在 Markdown 里保持编号,你可以问模型某一具体条款, 得到引用真实条文而非转述的回答。
- 迁移一套老文档。一个文件夹的 RTF 流程文档转成 Markdown,直接放进 git 仓库,头一回变得可 diff、可评审。
- 临床记录。表格化的观测数据以表格形式存活,总结时各部分泾渭分明,不会被 搅在一起。
- 连同代码喂给助手。把遗留规格文档转出来,配上你的 GitHub 仓库文本,模型就能同时 看到需求和实现。
- 贴之前看看大小。输出下方的 token 计数器告诉你一份长文档的开销,总比从 截断报错里发现要强。
本页顶部的格式切换按钮在 Markdown 和纯文本之间切换,并保留你已经选好的文件,两种都产出再 对比只是一次点击的事。
常见问题
怎么把 RTF 文件转成 Markdown?
把 .rtf 传到上方,凡是能干净映射的格式都会保留——粗体、斜体、列表,表格转成竖线表格。免费,单文件 50 MB,免注册。可下载为 .md。
RTF 的结构信息够不够让 Markdown 值得转?
比 DOCX 少,比纯文本多。RTF 记录的是格式而非语义:它知道某一行是 18 磅加粗,不知道那是"标题 1"。所以标题是从外观推断的,推断难免有瑕疵。粗体、斜体、列表和表格映射可靠;文档大纲则是尽力而为。
我的标题能被正确识别吗?
有时候能。标题字号在视觉上前后一致的文档,通常能产出合理的大纲。作者凭手感乱调字号、或在段落中间用粗体正文做强调的文档,会在没打算当标题的地方冒出标题。读一读输出的开头,手动把大纲修一修——比听起来快,而且只用做一次。
为什么 2026 年还会冒出 RTF?
大多是遗留系统的导出。案件管理系统、医疗记录软件、老会计软件和政府文档管道仍在产出 RTF,因为它是一种有文档、稳定、不绑定任何应用的格式,随便哪个文字处理器都打得开。也正因如此,"转换一整个文件夹的 RTF"至今仍是一份真实存在的活儿。
RTF 该选 Markdown 还是纯文本?
当文件是一份你想保持可读的排版文档——信件、报告、模板——选 Markdown。当你在批量处理许多文件、只想要文字本身时,选纯文本——考虑到这些文件通常来自哪里,后者才是更常见的情形。
工具箱的其余部分
RTF 是这里处理的十三种格式之一。 File2Txt 一次上传通吃。 值得知道的相关页面:固定版式文档有 PDF 转 Markdown, 电子书有 EPUB 转 Markdown, 存下来的网页有 HTML 转 Markdown, 整个归档的老文件要一口气过完的话,有 ZIP 转 Markdown。
代码和网页方面有 GitLab 转换器、 本地文件夹转换器,以及抓取 在线页面的 Web2Txt。 为 LLM 准备文档的指南 讲的是整套思路。
Repo2Txt 由 v12hero 开发和维护,那是一位独立开发者,专做隐私优先的原生应用和 Web 应用。