返回博客列表

Switch to MD:让 AI Agent 理解所有文件格式

将任意文件格式转换为 Markdown,让 AI Agent 完美理解所有内容。一行代码搞定,支持云端 & 本地模型。

#TypeScript#Tools#AI#Markdown#Document Processing

项目概述

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