Handwriting → Notes → Flashcards + Quiz + Mind Maps
This project is an AI-powered study assistant that converts handwritten notes into structured learning material. It uses Qwen2.5-VL for handwriting OCR and Gemini for intelligent post-processing and study-tool generation.
- Upload notebook images.
- Uses Qwen2.5-VL to transcribe handwritten text.
- Preserves line breaks and document structure.
-
Optional Gemini-powered OCR cleanup.
-
Fixes:
- OCR mistakes
- Character substitutions
- Misspelled words
- Formatting issues
- Save extracted text as study notes.
- Persistent local storage using JSON.
- Delete individual notes.
- Clear all notes.
Generate AI-powered flashcards from saved notes.
Each flashcard contains:
- Front (question)
- Back (answer)
Useful for active recall and spaced repetition.
Generate multiple-choice quizzes from notes.
Each question contains:
- Question
- Four answer choices
- Correct answer
- Explanation
Gemini analyzes notes and identifies:
- Misconceptions
- Missing concepts
- Ambiguous explanations
- Areas needing clarification
Automatically creates a visual SVG mind map showing:
- Central topic
- Major concepts
- Subtopics
- Concept relationships
Built with Flask and a fully custom HTML/CSS/JavaScript frontend.
Notebook Image
│
▼
Qwen2.5-VL OCR
│
▼
Raw Text
│
▼
Gemini Correction
│
▼
Saved Notes
│
├── Flashcards
├── Quiz
├── Misconception Analysis
└── Mind Map
.
├── app.py
├── backend.py
├── inkwell_notes.json
├── README.md
└── requirements.txt
Recommended:
Python 3.10+pip install flask
pip install torch torchvision accelerate transformers
pip install bitsandbytes
pip install google-genai
pip install qwen-vl-utilsWindows:
set GEMINI_API_KEY=your_key_hereLinux / macOS:
export GEMINI_API_KEY=your_key_hereDefault:
Qwen/Qwen2.5-VL-7B-Instruct
Override:
export QWEN_MODEL_PATH=Qwen/Qwen2.5-VL-(2/3)B-Instructor
set QWEN_MODEL_PATH=Qwen/Qwen2.5-VL-(2/3)B-InstructStart the application:
python app.pyOpen the URL in your browser.
POST /api/ocrUpload:
image=<file>
Response:
{
"text": "...",
"stats": "..."
}GET /api/notesPOST /api/notesBody:
{
"text": "my note"
}DELETE /api/notes/<index>POST /api/notes/clearPOST /api/flashcardsPOST /api/quizPOST /api/misconceptionsPOST /api/mindmapAll notes are stored locally in:
inkwell_notes.json
Example:
[
{
"id": 0,
"title": "Introduction to Biology",
"text": "...",
"date": "Jun 13, 2026"
}
]Qwen2.5-VL
- Vision-language model
- Handwriting transcription
- Local inference
Gemini 2.5 Flash
Used for:
- OCR correction
- Flashcards
- Quizzes
- Misconception analysis
- Mind maps
- PDF upload support
- Spaced repetition scheduling
- User authentication
- Multi-user support
- Note search
- Study analytics dashboard
- Dark mode
- Mobile-responsive UI improvements