跳到正文
发现
anymd:本地文档转 Markdown 的 MCP 工具
命令行工具开发者工具

anymd:本地文档转 Markdown 的 MCP 工具

把 PDF、Office、网页、图片和音视频转成干净 Markdown 的本地 MCP 服务器与 CLI。

admin
发布于 2026-10-31
浏览
2
访问
0
下载
0
版本
v8.5.7
平台
Windows、macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

anymd 是一个用 Rust 编写的本地 MCP 服务器和命令行工具,把 PDF、Word、PowerPoint、Excel、EPUB、HTML/网页、图片、音频和视频转换成适合 AI Agent 阅读的 Markdown。它无需 API key,文件不会上传;项目前身为 pdf-reader-mcp。

主要功能

  • 多格式统一读取:一个 read 工具即可处理上述格式,也接受网页 URL 和整个目录;search 可跨文件、目录和 URL 搜索。
  • 版面与表格还原:版面引擎根据字形间距重建单词,把双栏论文按阅读顺序排列,并恢复表格(包括无边框表格),尽量保持原文文字。
  • 面向 Agent 的输出:返回带引用锚点、简短 front-matter 和紧凑表格的 Markdown;支持 pages、max_tokens 和 cursor 控制大文档的上下文占用。
  • 四个 MCP 工具:outline 浏览标题树;read 把文件、URL 或文件夹转成 Markdown;search 查找文本,精确匹配不到时回退到 BM25 排序;inspect 对 PDF 做渲染页面、区域提取、OCR、结构分析、比较等深入操作。
  • CLI 转换:同一个二进制可作为命令行转换器,支持文件、多个文件、网页、标准输入和 OCR。
  • 本地隐私:OCR 使用本机安装的 doc-VLM 模型或 tesseract,转录使用 ffmpeg 和随附的 Qwen3-ASR;OCR 安装和 ASR 模型下载需要显式确认。

在 AgentDocBench 的 38 份文档上,README 给出的 anymd 总耗时 11.5 秒、总体得分 96.4,表格单元格 F1 为 92.2,阅读顺序为 98.8;作为对比,docling 总耗时 2,432.4 秒、markitdown 75.6 秒。具体结果和复现方式见项目基准目录与文档。

安装与使用

通过 npm 运行需要 Node.js 18+。把 anymd 添加到本机所有支持的 MCP 客户端(Claude Code、Codex、Cursor、VS Code、Claude Desktop、Windsurf、Gemini CLI):

npx -y @sylphx/anymd setup

可加 --dry-run 预览,--remove 撤销。手动配置时,所有 MCP 客户端统一使用命令 npx -y @sylphx/anymd。

安装 CLI:

npm install -g @sylphx/anymd

常用转换:

anymd report.pdf > report.md
anymd deck.pptx notes.docx budget.xlsx
anymd https://example.com/article
cat scan.png | anymd - --ocr
anymd paper.pdf --pages 1-3 --max-tokens 4000

OCR 需先一次性安装引擎与本地模型(约 2 GB):

anymd setup ocr
anymd scan.png --ocr vlm

注意事项

  • macOS、Linux 也可用 brew install sylphxai/tap/anymd,或从 crates.io 执行 cargo install anymd 本地编译;后者需要 Rust 1.95+、CMake 和 C++ 编译器。
  • Python 包目前仍在等待 PyPI 发布,当前没有可用的 pip/uvx 安装方式。
  • README 说明图片 OCR 的 OmniDocBench 分数是历史数据,并非当前 OCR 模型成绩;视频基准衡量内嵌字幕提取,不代表视觉理解或 ASR。
  • 项目文档:https://sylphxai.github.io/anymd/

本作品整理自 GitHub 开源项目 SylphxAI/anymd,原作者 @SylphxAI,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v8.5.7当前版本

    修复任一输入转换失败时覆盖 `--output` 文件的问题;支持用 `--` 分隔以 `-` 开头的输入路径;更新文档并标注 Python 包等待 PyPI 发布。

评论