Auto-Grading for Paper Exams

Upload scanned answer sheets, get per-question scores in seconds. Handles multiple students per upload, returns cropped images for any answer the AI couldn't read.

How it works

  1. Upload one or more scanned student papers (image or PDF) plus an answer key (image, PDF, or structured JSON).
  2. Our vision AI OCRs every answer and matches them against the key.
  3. Each question is graded — exact match, semantic, or partial credit (your choice).
  4. For any answer the AI couldn't read with confidence, you get back a cropped image of the student's writing area + the expected answer, so a teacher can fix it in seconds.
  5. Manual override updates the score automatically.

Highlights

  • Multi-student uploads — one PDF can stack 30 student papers. Three split modes: per-file, fixed pages, or AI auto-detection.
  • Confidence-aware — anything below 60% confidence is flagged unreadable, never silently mis-scored.
  • Per-question crops — cropped PNG returned for every unreadable question, ready to display in a review UI.
  • Manual override API — fix a reading, score recomputes automatically.
  • Separate quota — your package controls how many questions you can grade per period; only successfully read questions are charged.
  • Per-job limits — packages can cap students per job, pages per job.

Quick start (cURL)

curl -X POST https://aiquestions.intrazero.com/api/v1/grading/jobs \
  -H "Authorization: Bearer $API_KEY" \
  -F "student_papers[]=@alice.pdf" \
  -F "student_papers[]=@bob.pdf" \
  -F "answer_key=@key.pdf" \
  -F "rubric=semantic"

Example response

{
  "job_id": "uuid",
  "status": "needs_review",
  "submissions_count": 2,
  "submissions": [
    {
      "student_name": "Alice",
      "score": 18, "max_score": 20,
      "status": "needs_review"
    }
  ]
}

Then fetch /jobs/{id}/submissions/{sid} for the per-question breakdown — every unreadable question carries a crop_url you can render in your review UI.

When the AI can't read an answer

Each unreadable question returns:

  • The expected answer from the key
  • A cropped PNG of just the student's answer region
  • A reason code: low_confidence_ocr, blank, or missing

Your reviewer fixes the reading via PATCH .../questions/{n} and the submission's score recomputes immediately.

Pricing

Auto-grading is a separate add-on. Your package controls graded_questions_included. Speak to sales to add it to your plan.

Contact sales →