Why Canvas can’t read your PDF directly
Canvas does not parse .pdf files. Its “Import Course Content” flow only understands structured interchange formats — most commonly QTI 1.2, delivered as a .zip (or .imscc) archive of XML files. A PDF is just a fixed-layout document: text, vectors, or — in the case of a scan — a flat picture of a page. None of that tells Canvas “this is question 20, these are its five options, and the correct answer is E.”
That gap is the whole problem. To move questions from a PDF into Canvas you must translate the document into QTI’s question model. The reliable way to do that is a two-stage conversion: first normalize your questions into a flat, predictable CSV, then compile that CSV into a Canvas-ready QTI 1.2 package. And if the PDF is a scan, an OCR step reads the page first.
The workflow at a glance
- PDF → structured CSVExtract every question into one tidy row with a fixed column layout. Scanned pages are read with OCR first.
- CSV → QTI 1.2 packageCompile the rows into the XML bundle Canvas expects, packaged as an importable
.zip. - QTI → CanvasUpload the package via Settings › Import Course Content and the quizzes appear in your course.
Step 1 — Turn your PDF questions into a structured CSV
The CSV is the contract between your source document and the QTI builder. Each row is one question. ExamParser’s CSV uses a compact, fixed column order. Here are two real rows — one single-answer, one multi-answer:
MC,,5,Q20,5,a,b,c,d,e
MR,,5,Q21,"2,4",a,b,c,d,e
Both rows describe a 5-point question with five options (a through e). The first is a single correct answer (E); the second has two correct answers (B and D). Here is what every field means:
| Position | Field | Meaning | Example |
|---|---|---|---|
| 1 | Type | Question type. MC = Multiple Choice (exactly one correct answer). MR = Multiple Response (more than one correct answer). | MC, MR |
| 2 | Group / reserved | Optional. Usually left blank. Can carry a question-bank group or section tag when you want questions organized on import. | (empty) |
| 3 | Points | The score assigned to the question in Canvas. | 5 |
| 4 | Title | The question reference/name shown in Canvas (handy for tracking). | Q20, Q21 |
| 5 | Answer key | 1-based index of the correct option(s). For MC, a single number. For MR, a quoted comma-separated list of indices. Quoting is required because the list itself contains commas. | 5 → option E; "2,4" → options B & D |
| 6…N | Options | The answer choices, in order. a=1, b=2, … The answer key points at these positions. | a,b,c,d,e |
MC,,5,Q20,5,a,b,c,d,e, the 5 in the answer field means the 5th option — e — is correct. In MR,,5,Q21,"2,4",a,b,c,d,e, "2,4" means the 2nd and 4th options — b and d.What if the PDF is a scanned (image-only) document?
This is the common case with old exam papers: the “PDF” is really just a photo of each page, with no selectable text. A normal text extractor sees nothing. The fix is OCR (optical character recognition): the page image is analyzed and the printed characters are turned back into text. Once OCR recovers the question stems, options, and the marked answer, the same CSV layout above applies.
So the only difference for a scan is an extra front-end step — OCR — before the CSV is built. The output is still plain text questions in the QTI-ready CSV; scans are supported as an input format, not as embedded image questions.
How do you actually get the PDF into this CSV?
Doing it by hand — re-typing hundreds of questions from a printout — is slow and error-prone. The practical move is to let a converter read the PDF (running OCR when needed) and emit this exact CSV. ExamParser does exactly that: upload the PDF, and it detects each question, its options, and the marked correct answer — scans included — then outputs the QTI-ready CSV you can spot-check.
Step 2 — Convert the CSV into a Canvas-ready QTI 1.2 package
The cleanest way to run this stage is a single tool: ExamParser. You upload your PDF at examparser.com and it produces both outputs in one pass — the QTI-ready CSV you can review and the final QTI 1.2 .zip for Canvas. Grab the CSV to audit the questions, or go straight to the package and import.
Step 3 — Import the QTI package into Canvas
- In your course, open Settings › Import Course Content.
- Choose QTI .zip file as the content type.
- Select the
.zipfrom Step 2 and click Import. - Wait for the job to finish, then find the quizzes under Quizzes (Classic Quizzes).
If your institution uses New Quizzes, import into Classic Quizzes first, then use Canvas’s built-in migration to convert the item bank or quiz to New Quizzes.
One tool for the whole pipeline: ExamParser
ExamParser is built for this exact job — PDF to Canvas, scans included. Upload your PDF (native or scanned) and it returns both the QTI-ready CSV and the Canvas-importable QTI 1.2 package at the same time. For scans, OCR runs automatically before extraction. Use the CSV to review questions and answer keys; use the .zip to import. No sub-tools, no copy-paste, no re-typing.
Convert your PDF — even a scan — into a Canvas QTI package
Upload a PDF or scanned exam and get a QTI 1.2 .zip ready for Canvas. OCR handles scans automatically.
Try ExamParser →Common pitfalls (and how to avoid them)
- Mis-indexed answers. Remember the answer key is 1-based over the option columns only. Spot-check the first few rows against your source.
- Unquoted multi-answer lists.
MRanswers with more than one index must be quoted ("2,4"); an unquoted comma splits the row. - Poor scans. OCR is only as good as the source. Aim for a clean, upright scan at ~300 DPI or higher; skewed or low-resolution pages produce recognition errors.
- Two-column layouts. Dense, multi-column exam pages can confuse reading order. The extractor handles most, but review the CSV when a page looks unusual.
- Handwritten text. Printed scans convert reliably; handwritten answer keys may need a quick manual fix in the CSV.
- Mixed question types in one file. That’s fine — the type column per row drives the builder. Just keep the column order identical for every row.
Can Canvas import a PDF file directly?
No. Canvas does not parse PDF files. It imports assessments through a QTI 1.2 package (an .zip or .imscc archive of structured XML). You must first convert the PDF content into that QTI format, which is what ExamParser does automatically.
Does it work with scanned (image-only) PDFs?
Yes. Scanned PDFs contain no selectable text — just page images. ExamParser runs OCR (optical character recognition) on the pages to read the questions, options, and answer keys, then builds the same structured CSV and QTI package. Printed, clean scans work best; very low-resolution or handwritten pages may need a clearer copy.
What is QTI 1.2 and why does Canvas use it?
QTI (Question and Test Interoperability) 1.2 is an IMS open standard for exchanging quiz and question data as XML. Canvas’s “Import Course Content” flow accepts a QTI 1.2 .zip and rebuilds the questions, options, points, and answer keys inside your course.
How are multiple correct answers represented in the CSV?
Use the MR (Multiple Response) type and put the correct option indices in the answer field as a quoted, comma-separated list, e.g. "2,4" meaning the 2nd and 4th options are correct. Quoting is required because the list itself contains commas.
Does the QTI package work with New Quizzes?
The QTI 1.2 export targets Classic Quizzes. After importing, Canvas lets you migrate Classic Quizzes to New Quizzes with its built-in migration tool if your institution uses New Quizzes.
CanvasQTI 1.2PDF to QTIScanned PDFOCRExamParser