swift39 downloads用手机扫码拍照,经 LLM 视觉模型把书本/公式/表格内容转成 Markdown,直接写入当前笔记光标处或另存为新笔记。
English: Scan book pages, formulas, and tables with your phone; a vision LLM converts them into structured Markdown written directly into your Obsidian notes (cursor position or new note). Desktop only. Supports Claude / Gemini / OpenAI / Qwen / GLM / Doubao / Kimi / ERNIE / Hunyuan. Your API key stays local; photos are sent only to your chosen LLM provider; no telemetry.
用手机扫码拍照,把书本、公式、表格等内容转成结构化 Markdown,直接写进 Obsidian 笔记。
手机和电脑连同一个 WiFi,在 Obsidian 里打开扫码面板 → 手机扫码进入拍照网页 → 拍摄或选择图片 → 插件调用视觉大模型转成 Markdown → 写入你当前打开的笔记(或另存为新笔记)。
仅支持桌面端 Obsidian(需要 Node 能力来跑本地 HTTP 服务器;移动端不支持)。 蓝牙不适合此场景(无法传输摄像头画面),统一走同一 WiFi。
$...$、块级 $$...$$),自动规范化常见定界符问题,确保在 Obsidian 正常渲染。手机浏览器 ──扫码──> 插件内置网页 (GET /)
│ getUserMedia 拍照 / 选图,canvas 压缩
▼ POST /api/upload(base64 + JSON,带一次性 token)
插件本地 HTTP 服务器(Node http,端口默认 43112)
│ requestUrl 调视觉模型 API
▼
视觉大模型 ──返回 Markdown──>
▼
Obsidian:插入当前笔记光标处 / 新建笔记
<vault>/.obsidian/plugins/scan2md/data.json),不会上传到任何第三方服务器,也不包含在插件源码里。0.0.0.0:<端口>(默认 43112)起一个本地服务器供手机访问,同一 WiFi 内的设备可连接。上传接口带启动时生成的一次性 token 校验。不建议在公共/不可信网络下开启;如需限制,可在防火墙关闭该端口的外部访问。requestUrl(手机端网页内用浏览器原生 fetch 上传到本地服务)。设置 → 服务商里选择。除 Claude / Gemini 外,其余均走 OpenAI 兼容接口:
| 服务商 | 说明 |
|---|---|
| Claude(Anthropic) | Anthropic Messages API |
| Gemini(Google) | Gemini generateContent |
| OpenAI | OpenAI 兼容 |
| 通义千问(阿里) | 百炼 DashScope 兼容 |
| 智谱 GLM | 智谱开放平台兼容 |
| 豆包(字节火山方舟) | 火山方舟兼容(需创建推理接入点) |
| Kimi(月之暗面) | Moonshot 兼容 |
| 文心(百度) | 千帆 OpenAI 兼容 v2 |
| 混元(腾讯) | 腾讯云混元兼容 |
| 自定义 OpenAI 兼容端点 | MiniMax / DeepSeek / Ollama / LM Studio 等 |
填入 API Key 后,点「模型名」右侧的刷新按钮可拉取该 API 当前支持的模型列表并在输入框搜索选取,无需手动查找模型名。
Obsidian 设置 → 第三方插件 → 浏览 → 搜索 "Scan to Markdown" → 安装并启用。
main.js、manifest.json、styles.css。<你的库>/.obsidian/plugins/scan2md/。npm install
npm run build # 生成 main.js
scan2MD: 打开扫码面板(或左侧 Ribbon 图标)。写入当前笔记模式下:拍照前请把光标放在目标位置;若当前没有打开的笔记,手机端会提示先打开一个。
getUserMedia 通常允许;若被拦截,网页会自动出现「从相册/拍照选择」按钮作为兜底。npm run dev:esbuild watch。npm run typecheck:类型检查。