返回今日日报

一个命令,让任何办公文档变成干净 Markdown

anydoc 是一个把 Word、PPT、PDF 转成 Markdown 的开源工具,纯 Rust 写的,本地跑,不调云端服务。它解决的是所有非程序员整理资料时都会撞上的那堵墙:从同事发来的 .doc 里复制表格,格式全乱;从 PDF 里抠一段文字,换行符散得到处都是;想把 PPT 里的讲稿整理成博客,手动敲一遍。这些事你干过,就知道有多耗时间。

现在的做法是打开文档、全选、复制、粘贴到 Markdown 编辑器,然后花十分钟修表格、调标题、补链接。遇到老格式 .doc 或者带合并单元格的表格,粘贴结果基本不能看,得手动重排。更麻烦的是图片,复制过来要么丢要么变成一堆 base64 乱码。anydoc 把这条路砍成一步:文件丢进去,Markdown 出来,结构完整。

具体到画面:你手上有一份 2003 年的 .doc 文件,里面有个三行四列、带合并单元格的表格,还有脚注和交叉引用。用 anydoc 转完,表格还是表格,合并单元格还在,脚注变成标准 Markdown 脚注,标题带锚点,链接可点击。图片如果是外链,直接变成普通 Markdown 图片;如果是内嵌的,会以 alt 文本形式留在 Markdown 里,原始字节还挂在文档模型上,需要时能取出来。整个过程在本地完成,不上传文件。

它最值钱的设计是「所有格式共用一套输出模型」。不管是 2003 年的 .doc 还是昨天的 .pptx,解析后都进同一个文档模型,再由同一个 Markdown 序列化器输出。这意味着转义规则、表格渲染、标题锚点、脚注格式,在所有格式间完全一致。你不需要针对不同格式学不同的转换规则,一个输出标准通吃。这个设计还带来一个附带好处:格式检测基于文件内容本身,文件名后缀错了也能正确识别。

速度上,纯 Rust 实现,没有机器学习模型,不依赖外部服务,中位转换时间在 5 毫秒以内。Node.js 环境下转换跑在 libuv 线程池,不阻塞事件循环;Python 环境下会释放 GIL,其他线程照常运行。PDF 支持是内置的,文本型 PDF 本地转换,不需要 OCR 服务。它还打包成 Agent Skill,一条命令就能让 Claude 或 Cursor 这类工具直接读取办公文档。

装完就能用,不需要配置环境。适合两类人:一是经常要把同事发的办公文档转成 Markdown 写博客或做笔记的人;二是搭了 AI 工作流、需要让 Agent 读文档的人。它把「打开文档、复制、粘贴、修格式」这套动作压缩成一条命令,省下的时间够你多写两段正文。唯一要注意的是,涉及转换前最好备份原始文件,虽然它不改动原文件,但转换结果总归要检查一遍。这一步做得糙的地方是内嵌图片不会自动导出成文件,需要从文档模型里手动取,对不熟悉代码的人有点门槛。

如果你感兴趣但不会装,评论区或私信喊我一声。