如果平时喜欢用 Obsidian 或者各类 Markdown 文件来保存自己资料的小伙伴,大概都会遇到一个问题:自己的笔记可以尽量使用 Markdown 来保存,但别人发来的东西,就由不得自己了,格式会千奇百怪了,而且很多历史遗留下来的归档文件也是各种格式。
比方说,Word 文档、 Excel 表格、几十页的 PPT,最常见的可能还是 PDF 文件。倒不是说不能打开它们,但是想把内容放进同一个笔记库,用来进行搜索、引用、修改,或者让 AI 来处理,就需要折腾一轮格式。而且即使 AI 能直接读取这些格式,效率也会大打折扣。
而这其中大多数都只是有结构性的文字材料而已,Markdown 完全可以胜任替换。
现在,Firecrawl 出了一款开源的 AnyDoc,带来了一个实用的文档转换功能:把 Word、Excel、PowerPoint、EPUB、PDF 等文档转换成 Markdown,方便后续处理。
对我个人来说,那些散落在文件夹里、只能偶尔打开看看的文档资料,有机会重新进入我们日常使用的工作流和笔记库中了。这对于 AI 搜索笔记也是极大的方便。
AnyDoc 支持哪些文件转换为 Markdown
AnyDoc 以 Rust 编写,采用 MIT 许可证,提供了浏览器、命令行以及不同编程语言的入口。
它的输入格式也相当实用。如果平时保存的资料当中有很多来自「上古时代」的遗产数据,这就用得上了。它支持的文件格式包括:
- 现代 Office 文档:常见的
.docx、.xlsx、.pptx - 老式 Office 文档:传统的
.doc、.xls、.ppt - 其他常见文档与电子书格式:OpenDocument、RTF、EPUB、CSV 和 PDF
我们知道,Markdown 并不能完全映射 Office 文档,所以转换结果中,虽然标题还是标题,列表还是列表,表格也能尽量保持行列关系,但也仅限于基本内容的准确性,肯定不能保证所有格式,尤其是一些 Office 专有功能的完整展现。什么 PPT 的动画、Excel 的交互计算、Word 的精细版式,仍然需要打开原来的文件才能展现。
不过这也足够了,我的主要目的也只是对基本内容进行文本转换,变成可检索的格式而已。也正因如此,我会把转换结果当成一份方便阅读和加工的副本,而原件则继续保留。
这对于批量整理尤其有用。假如每一种文件都用不同工具转换,最后得到的标题、表格、链接写法也可能各有习惯。等到资料汇总时,还得再做数据清洗。AnyDoc 的统一转换输出至少就能减少这一层麻烦。
最容易上手的方式:浏览器里的本地转换

是不是听起来很矛盾?又是浏览器,又是本地。
但实际上,有很多产品已经采用了这种「看似矛盾」的方式,浏览器只是下载了一段代码而已,真正运行的数据还是在你本地存储。具体来说,它使用了 WebAssembly,把格式转换程序放到浏览器的「虚拟机」中运行。
对于偶尔转换几份资料,可以先打开 AnyDoc 官网。网页加载转换组件后,就可以选择文件,查看结果,再复制内容或下载 .md 文件。页面还提供 RTF 和 CSV 示例,手边即使没有文档也能先可立刻看下输出的效果。
对于只临时想把一份 Word 转成 Markdown、放进笔记库的人,这个入口已经足够方便了。
PDF 转 Markdown,有潜在的麻烦
大多数 PDF 其实就像是一个标准的普通文档,转换也不费什么劲。但是,有些 PDF 文档其中夹杂的是扫描图像,但看起来像是普通的文字文档;还有一些文档中复合了一些复杂的表格或公式之类的内容,或者嵌入了一些其他格式的媒体。
一般对于嵌入扫描文字图片的 PDF,有专门的 OCR 转换工具来处理。AnyDoc 目前可以在本地轻松处理有可用文字层的 PDF。对于需要 OCR 的页面,本地转换器本身不提供 OCR,需要外接 OCR 插件才能执行。AnyDoc 接口提供可选的托管 OCR 服务。

需要注意的是,一旦使用外部 OCR 服务,文档就会上传到远程的服务器,从而脱离你的本地处理。
让 AI Agent 和 CLI 用 AnyDoc 读取 Word 和 PPT
AnyDoc 提供了一个 Agent Skill。它的作用,是告诉 AI 客户端,在需要读取办公文档时怎样调用转换工具。官方给出的安装入口是:
npx skills add firecrawl/anydoc
这个 Skill 最终使用的是 AnyDoc 命令行;如果你本来就愿意使用命令行,也可以直接用命令转换:
npx @firecrawl/anydoc report.docx -o report.mdnpx @firecrawl/anydoc slides.pptx -o slides.md
第一次运行需要下载相应程序包,准备好依赖后,普通文档的转换在本地完成。
这种命令接口的好处,完全符合我一直提倡的「工具链」思路,转换工具只负责转换,也可以嵌入工作流,和其它环节组合,完成某个工作任务。
比如,可以给 AI 一个具体任务,读取这些转换后的资料,找出几份不同来源或格式方案之间的共同要求,把分歧单独列出,并标明来自哪份文件。其中,前置环节由 AnyDoc 解析文件,转换成 Markdown,然后,AI 进行分析和比较,并将其中不同之处用 Markdown 输出。
最后:AnyDoc 本地转换体验与评测
AnyDoc 把很多原本停留在附件或者是归档文件夹里的内容,变成了可以继续使用的文本。
我这里已经做了一些转换,由于是本地处理,速度还是很快的:
- 处理速度极快:一般的 Office 文档几乎在一秒内完成。30 MB 的 PDF 也就用了 1~2 秒左右。
- PDF 扫描件需注意:当然 PDF 有多种问题,前面也说过了。尤其是其中嵌入含有需要 OCR 的图片、扫描件时尤其要注意。
- 表格排版受限:还有就是表格的排版,受限于 Markdown 本身限制,也不能期待太高。
- 电子书耗时略长:如果是一本书(EPUB)的转换,速度明显慢于 PDF(同等大小要慢几倍),有时要好几秒,另外还要注意一些书籍排版格式(页脚之类的格式)。
总的来说,AnyDoc 是一款轻量快速的 Markdown 文字转换工具,特别适合将历史材料转换后加入笔记库,供检索或 AI 处理。如果想要注重阅读体验,那还是要依赖于原文档格式,大家各取所需吧。

发表回复