项目概述
Switch to MD 是一个将任意文件格式转换为结构化 Markdown 的库,让 AI Agent 能够完美理解所有文档内容。核心思路是将转换过程抽象为"嗅探 → 路由 → 适配 → 规范化"流水线,支持通过插件接入本地或云端模型进行 OCR 与语义分析。
核心特性
- 一行代码搞定:
convert('file.pdf') - 轻量核心:~500KB,无模型依赖
- 灵活配置:环境变量 / 配置文件 / 代码配置
- Agent 友好:结构化 MD 输出,带 frontmatter
安装
# 核心包(文档类直接可用)
npm i switch-to-md
# 图片处理(可选)
npm i @switch-to-md/vision-openai # OpenAI Vision
npm i @switch-to-md/vision-local # 本地 Tesseract
# 音频处理(可选)
npm i @switch-to-md/audio-openai # OpenAI Whisper
npm i @switch-to-md/audio-local # 本地 Whisper快速开始
import { convert } from 'switch-to-md';
// 转换 PDF
const md = await convert('report.pdf');
// 转换 Word
const md = await convert('document.docx');
// 输出到文件
await convert('report.pdf', { output: 'report.md' });
// 批量转换
const results = await convert(['a.pdf', 'b.docx']);支持的格式
| 类别 | 格式 | 说明 |
|---|---|---|
| 文档 | PDF, DOCX, XLSX, PPTX, TXT, HTML, EPUB | 无需配置 |
| 图片 | PNG, JPG, GIF, BMP, TIFF, WebP | 需要视觉插件 |
| 音频 | MP3, WAV, FLAC, OGG, M4A | 需要音频插件 |
| 代码 | JSON, YAML, XML, CSV, 多语言源码 | 无需配置 |
| 矢量 | SVG | 无需配置 |
配置方式
import { configure } from 'switch-to-md';
// OpenAI
configure({
provider: 'openai',
apiKey: process.env.OPENAI_API_KEY,
});
// 本地模型
configure({
vision: { provider: 'local', model: 'tesseract' },
});CLI 使用
# 转换文件
npx switch-to-md convert report.pdf
# 批量转换
npx switch-to-md convert ./docs/**/*.pdf -o ./output/
# 设置向导
npx switch-to-md setup输出格式
---
source: report.pdf
type: PDF
pages: 12
extracted_at: 2026-04-29T00:00:00Z
backend: pdf-parse
---
# Document Title
## Body
[内容]
## Tables
| Col1 | Col2 |
|------|------|
| Data | Data |转换流水线
嗅探 (Sniff) → 路由 (Route) → 适配 (Adapt) → 规范化 (Normalize)
↓ ↓ ↓ ↓
检测文件类型 选择处理器 执行转换 统一输出格式
当前状态
已完成核心实现,支持 PDF/Word/Excel/PPT/图片/音频等主流格式的 Markdown 转换。
相关链接
最后更新: 2026-04-29