A tool that reads any text or PDF and generates a set of Q&A flashcards — saved as JSON and ready to import into Anki or any flashcard app.
Read plain text or extract from a PDF.
import PyPDF2
def load_text(path):
if path.endswith(".pdf"):
with open(path, "rb") as f:
reader = PyPDF2.PdfReader(f)
return "\n".join(p.extract_text() for p in reader.pages)
with open(path, "r", encoding="utf-8") as f:
return f.read()
text = load_text("notes.pdf") # or "notes.txt"
print(f"Loaded {len(text)} characters")
Ask Gemini to return structured JSON flashcards.
import google.generativeai as genai, json, re
genai.configure(api_key="YOUR_GEMINI_API_KEY")
model = genai.GenerativeModel("gemini-1.5-flash")
prompt = f"""
You are a study assistant. Read the text below and generate 10 flashcards.
Return ONLY a JSON array, where each item has:
- "question": a clear, specific question
- "answer": a concise but complete answer (1-3 sentences)
TEXT:
{text[:10000]}
"""
response = model.generate_content(prompt)
json_str = re.search(r'\[.*\]', response.text, re.DOTALL).group()
cards = json.loads(json_str)
for i, card in enumerate(cards, 1):
print(f"Q{i}: {card['question']}")
print(f"A: {card['answer']}\n")
Q1: What is supervised learning? A: Supervised learning is a type of ML where the model is trained on labelled data... Q2: What is the difference between classification and regression? A: Classification predicts discrete labels; regression predicts continuous values...
Export so they can be imported into Anki, Quizlet, or your own app.
import json
with open("flashcards.json", "w", encoding="utf-8") as f:
json.dump(cards, f, indent=2, ensure_ascii=False)
print(f"Saved {len(cards)} flashcards to flashcards.json")
# Preview
print("\nSample card:")
print(json.dumps(cards[0], indent=2))
Saved 10 flashcards to flashcards.json
Sample card:
{
"question": "What is supervised learning?",
"answer": "Supervised learning is a type of ML where the model learns from labelled training data..."
}You now have an AI study assistant that converts any document into flashcards in seconds. Point it at a chapter before an exam and save hours.
Spotted a bug, broken code, or something that doesn't look right? Tell us what's off and we'll fix it.