Jhe57 downloadsConvert physical handwritten notes into structured .canvas whiteboards via Vision AI.
Convert physical handwritten note photos, whiteboard sketches, and mind maps into native, structured Obsidian
.canvaswhiteboards with Vision AI.
English README | 繁體中文說明文件
Vision2Canvas bridges the gap between analog handwritten thinking and digital Obsidian knowledge bases. Using multimodal Vision Large Language Models (Vision MLLMs like Google AI Studio Gemini, OpenAI, Claude, or OpenClaw), this Obsidian plugin not only extracts text OCR but also:
(x, y) coordinates and card dimensions.nodes, edges, and groups.Spatial Bounding Box Mapping
Maps handwritten columns, bullet points, and margin notes to Canvas nodes with proper spacing and color categorization.
Smart Arrow & Hierarchy Detection
Automatically detects connecting arrows, labels them, and attaches them to the best attachment sides (top, bottom, left, right).
OpenAI & Google AI Studio Compatible API
Seamlessly connects to Google AI Studio (Gemini), OpenAI API, or local MLLM gateways.
Multi-Channel Desktop Triggers
Convert Clipboard Image to Canvas..png, .jpg, .jpeg, .webp) in Obsidian file explorer → Convert to Obsidian Canvas Whiteboard.┌─────────────────────────────────────────────────────────────────────────┐
│ Input Triggers │
│ ┌─────────────────────┐ ┌───────────────┐ │
│ │ Clipboard Screenshot│ │ Vault Image │ │
│ └──────────┬──────────┘ └───────┬───────┘ │
└──────────────────────┼──────────────────────────┼───────────────────────┘
│ │
▼ ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Vision2Canvas Plugin Core │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ VisionClient (Google AI Studio / OpenAI Compatible Vision API) │ │
│ └──────────────────────────────────┬────────────────────────────────┘ │
│ │ (Spatial OCR + JSON Schema Output)│
│ ┌──────────────────────────────────▼────────────────────────────────┐ │
│ │ CanvasBuilder & CanvasValidator │ │
│ │ - Coordinate Normalization (scaleX, scaleY) │ │
│ │ - Edge Connection Sides calculation (top, bottom, left, right) │ │
│ └──────────────────────────────────┬────────────────────────────────┘ │
└─────────────────────────────────────┼───────────────────────────────────┘
│
▼
┌───────────────────────────────┐
│ Obsidian Vault (.canvas File) │
└───────────────────────────────┘
# Clone repository into your vault's plugin directory
cd /path/to/your/vault/.obsidian/plugins/
git clone https://github.com/yourname/vision2obsidian.git
cd vision2obsidian
# Install dependencies and compile bundle
npm install
npm run build
Then in Obsidian: Settings → Community Plugins → Enable Vision2Canvas.
In Obsidian Settings → Vision2Canvas:
https://generativelanguage.googleapis.com/v1beta/openai (or https://api.openai.com/v1)YOUR_API_KEYgemini-flash-latest (or gpt-4o)Run the included standalone test script to test converting ref/sample.jpeg into output_sample.canvas:
npm run test:sample
Output:
--- TEST RESULTS ---
Generated 15 nodes and 4 edges.
Saved output canvas to: /Users/user/projects/vision2obsidian/output_sample.canvas
MIT License © 2026 beno66edu