Worksheet Processing API

A powerful LLM-driven microservice that transforms educational worksheets into structured, accessible digital formats. Command-line wizardry meets modern API design.

What This Thing Actually Does

Imagine uploading a scanned worksheet—handwritten answers and all—and getting back pristine, structured HTML that looks like it was professionally designed. This API handles the messy bits: PDF parsing, handwriting removal, LLM-powered analysis, and multi-format output. It's like having a digital teaching assistant that never sleeps.

$
Processing worksheet_v2.pdf...
✓ Handwriting removed
✓ Structure extracted
✓ HTML generated
→ Ready in 3.2s

The Four Superpowers

What makes this API more than just another document processor

Conversion

PDFs, JPGs, PNGs → Beautiful HTML. Preserves typography, spacing, and design while removing student handwriting.

Analysis (WAT)

Compare worksheets against quality templates. Get actionable improvement suggestions with gap analysis and coverage metrics.

Extraction

6 data components: Summary, Goals, Content structure, Layout coordinates, Style guides, and Analysis results.

Generation

Regenerate and beautify HTML. A4 print-ready output with sanitized, accessible markup.

The Stack That Makes It Sing

Battle-tested technologies working in concert

FastAPI Python 3.11 MySQL 8.0 GPT-4o AsyncIO Docker PyMuPDF Pillow

Multi-provider LLM routing (OpenAI, Azure, DeepSeek, Replicate, Ollama), async throughout, structured logging, health monitoring, and cost tracking built right in.

Why This Is More Than Just Another API

Three reasons it stands apart from the crowd

Production-Ready Microservice

Containerized, health checks, comprehensive error handling, structured JSON logging, and auto-restart policies. It's not a weekend hack—it's built to run at scale.

LLM Agnostic By Design

Intelligent provider routing with automatic fallbacks. If OpenAI hiccups, it seamlessly switches to Azure, DeepSeek, or local Ollama models. Cost tracking per request.

Async Everything

Job-based processing with polling, non-blocking file operations, concurrent LLM calls. Speed through parallelism, not shortcuts.

A Peek Under the Hood

See the workflow in action

$ curl -X POST https://api.worksheets.ml/v1/upload \
-H "Authorization: Bearer $API_KEY" \
-F "options={\"extract\": true, \"analyze\": true}"
{"run_id": "run_abc123", "status": "queued"}
$ curl https://api.worksheets.ml/v1/runs/run_abc123
{"status": "running", "progress": 65}
{"status": "succeeded", "html_url": "...", "metadata": {...}}

Fully documented with OpenAPI/Swagger. Grab the SDK and start building.

Built for Educators, Developers, and Anyone Tired of Manual Data Entry

This isn't just document conversion—it's a bridge between physical and digital education. From worksheet to structured data in minutes, not hours.

Currently: API Ready & Tested