{
  "fetched_at": "2026-10-19T07:33:36Z",
  "source_url": "https://www.kaggle.com/competitions/cse-464-mcqcorrector/data",
  "pages": [
    {
      "name": "data-description",
      "content": "<h2>File descriptions</h2>\r\n<ul>\r\n<li><strong>train.<g class=\"gr_ gr_28 gr-alert gr_spell gr_run_anim ContextualSpelling ins-del multiReplace\" id=\"28\" data-gr-id=\"28\">csv</g></strong> - the training set containing information about training data.</li>\r\n<li><strong>test.<g class=\"gr_ gr_29 gr-alert gr_spell gr_run_anim ContextualSpelling ins-del multiReplace\" id=\"29\" data-gr-id=\"29\">csv</g></strong> - the test set file names to be corrected.</li>\r\n<li><strong>Sample Submission.csv</strong> - a sample submission file in the correct format.</li>\r\n<li><strong>ModelAnswer.pdf</strong> - contains the correct answer for the 45 questions in the exam.</li>\r\n<li><strong>test.zip</strong> - the test answer sheets files to be corrected with unknown marks, you'll be evaluated based on your score on this.</li>\r\n<li><strong>train.zip</strong> - the actual answer sheets files with known marks that you'll use to build your pipeline and make sure it's working.</li>\r\n</ul>\r\n<h2>Data fields (CSV fields interpretation)</h2>\r\n<ul>\r\n<li><strong>FileName</strong> - unique file name for the answer sheet located at either train/test folders.</li>\r\n<li><strong>Mark</strong> - the correct mark for the scanned answer sheet.</li>\r\n<li><strong>BenchMark </strong>- our ASU algorithm correction result to compare yourself with, whenever we have any uncertainty we mark an image to be revised manually, this field will be usually less than or equal the actual mark, as our algorithm ignores some questions for manual revision and only corrects questions that it's 100% sure it knows how the student answered it.</li>\r\n<li><strong>CornerCases</strong> - this's a column to help you get the best result, it contains a list of question numbers that need to be revised when our benchmark algorithm doesn't know with 100% accuracy if the question isn't answered, or if the question have been answered with multiple answers, or if the student didn't fill the answer sheet correctly, so it needs manual revision, you're required to handle these corner cases with your algorithm, mainly this is the hardest part, you can use this column to filter hard cases to work on separately.</li>\r\n<li><strong>StudentID </strong>- student ID read from the answer sheet.</li>\r\n</ul>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "<h2>Challenges:</h2>\r\n<p>Manually correcting a huge amount of data is a very time-consuming task, also creating an intelligent system without being 100% accurate won't be a usable solution, as we can't accept that a student doesn't get what he/she deserves, that's why we're not targeting only high accuracy, but we're targeting a perfect solution.</p>\r\n<p>The challenges you'll face during building your automatic solution are usually due to students not following the rules:</p>\r\n<ul>\r\n<li>They are required to use a 2B Pen, but some students use a lighter pen:</li>\r\n</ul>\r\n<p><img src=\"https://storage.googleapis.com/kaggle-media/competitions/inclass/6244/media/kagglenot2p.PNG\" alt=\"\" width=\"197\" height=\"127\" style=\"display: block; margin-left: auto; margin-right: auto;\" /></p>\r\n<ul>\r\n<li>They're required to fully fill the circle of the answer, but some students just don't:</li>\r\n</ul>\r\n<p><img src=\"https://storage.googleapis.com/kaggle-media/competitions/inclass/6244/media/kaggledon'tfill.PNG\" alt=\"\" width=\"193\" height=\"88\" style=\"display: block; margin-left: auto; margin-right: auto;\" /></p>\r\n<ul>\r\n<li>They're required to have only one answer per question, but some students just don't, so this should be considered a mistake even if any of the two filled answers is correct:</li>\r\n</ul>\r\n<p><img src=\"https://storage.googleapis.com/kaggle-media/competitions/inclass/6244/media/kagglemultipleanswers.PNG\" alt=\"\" width=\"218\" height=\"59\" style=\"display: block; margin-left: auto; margin-right: auto;\" /></p>\r\n<ul>\r\n<li>They're required to use the same fill level all over the answer sheet, but you'll find someone who doesn't fill the circles consistently across his/her answer sheet:</li>\r\n</ul>\r\n<p><img src=\"https://storage.googleapis.com/kaggle-media/competitions/inclass/6244/media/kaggle1.PNG\" alt=\"\" width=\"172\" height=\"198\" style=\"display: block; margin-left: auto; margin-right: auto;\" /></p>\r\n<ul>\r\n<li>They're required that if they changed their answers, they should erase the mistake completely, but some don't fully erase it, though this case should be considered as a correct answer if the black answer is correct if and only if there's a clear difference between intensity levels of the marked answers like in Q35 answers:</li>\r\n</ul>\r\n<p><img src=\"https://storage.googleapis.com/kaggle-media/competitions/inclass/6244/media/kaggle3.PNG\" alt=\"\" width=\"247\" height=\"104\" style=\"display: block; margin-left: auto; margin-right: auto;\" /></p>\r\n<ul>\r\n<li>They're required not to do anything in the answer sheet except only filling the circles, but you'll find some random noise in the answer sheet apparently due to the eraser, also they may leave a question not answered, though they may have a chance randomly getting it correct:</li>\r\n</ul>\r\n<p><img src=\"https://storage.googleapis.com/kaggle-media/competitions/inclass/6244/media/kaggle5.PNG\" alt=\"\" width=\"236\" height=\"69\" style=\"display: block; margin-left: auto; margin-right: auto;\" /></p>\r\n<ul>\r\n<li>Last challenge is the scanning process, which doesn't align the images vertically, so you may find a scanned image slightly rotated to the right or left, you'll need to handle this in your preprocessing system.</li>\r\n</ul>\r\n<p>These are mainly the challenges that you'll need to handle while building your correction algorithm.</p>\r\n<p>Good luck to all of you.</p>\r\n<h2>Acknowledgements</h2>\r\n<p>We'd like to thank CSE011 Professors for giving us access to the dataset.</p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "<p>The evaluation metric for this competition is <a href=\"https://en.wikipedia.org/wiki/Mean_absolute_error\">Mean Absolute Error</a>. The Mean Absolute Error score, In our case, will represent the deviation from the actual mark that the student should take.</p>\r\n<p>In statistics, the mean absolute error (MAE) is a quantity used to measure how close forecasts or predictions are to the eventual outcomes. The mean absolute error is given by</p>\r\n<p>$$<br />\\mathrm{MAE} = \\frac{1}{n}\\sum_{i=1}^n \\left| y_i - \\hat{y_i}\\right| =\\frac{1}{n}\\sum_{i=1}^n \\left| e_i \\right|.<br />$$</p>\r\n<p>Where <br />$$ AE = |e_i| = |y_i-\\hat{y_i}| $$<br />$$ Actual Mark = y_i $$<br />$$ Corrected Mark = \\hat{y_i} $$</p>\r\n<h2>Submission Format</h2>\r\n<p><strong>One submission file needs to be submitted</strong>, submission file should contain two columns: FileName and Mark. Mark should be the calculated score for each scanned answer sheet, and it should range from 0 to 45, and FileName should be the corresponding filename for the calculated mark.</p>\r\n<p>The file should contain a header and have the following format:</p>\r\n<pre><span style=\"font-size: 14px; line-height: 1.4em;\">FleName,Mark<br />S_1_hppscan1.png,32<br />S_1_hppscan112.png,36<br />S_1_hppscan113.png,33<br />S_1_hppscan114.png,31<br />S_1_hppscan115.png,34<br /></span><span style=\"font-size: 14px; line-height: 1.4em;\">etc.</span></pre>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "<h3>One account per participant</h3>\r\n<p>You cannot sign up to Kaggle from multiple accounts and therefore you cannot submit from multiple accounts.</p>\r\n<h3>No private sharing outside teams</h3>\r\n<p>Privately sharing code or data outside of teams is not permitted. It's okay to share code if made available to all participants on the forums.</p>\r\n<h3>No Image Processing Code sharing through forums</h3>\r\n<p>This competition is part of a term project for \"CSE 464: Image Processing and Pattern Recognition\" course for Ain Shams University students, so you're all required not to share codes about any part of your correction pipeline, though you can share tooling tools, related to programming in general.</p>\r\n<h3>Team Mergers</h3>\r\n<p>Team mergers are not allowed in this competition.</p>\r\n<h3>Team Limits</h3>\r\n<p>There is no maximum team size.</p>\r\n<h3>Submission Limits</h3>\r\n<p>You may submit a maximum of 2 entries per day.</p>\r\n<p>You may select up to 2 final submissions for judging.</p>\r\n<h3>Competition Timeline</h3>\r\n<p>Start Date: Wed 1 Mar 2017</p>\r\n<p>Merger Deadline: <strong>None</strong></p>\r\n<p>Entry Deadline: <strong>None</strong></p>\r\n<p>End Date: Sun 25 Jun 2017<strong> 12:00 AM UTC</strong></p>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}