Пример #1
0
        public ResultDTO CheckExam(int examID, List <AnswerPositionDTO> answerPositionsDTO)
        {
            Dictionary <int, int> bitmapsDictionary = new Dictionary <int, int>();
            int questions  = 0;
            var bitmapList = _examsDictionary[examID];

            foreach (var bitmap in bitmapList)
            {
                var pageNumber  = BitmapAnalyser.GetExamPage(bitmap);
                var pageAnswers = answerPositionsDTO.Where(x => x.PageNumber == pageNumber).OrderBy(x => x.Y).ToList();

                var standarizedBitmap = BitmapAnalyser.ResizeToStandard(bitmap);

                foreach (var answer in pageAnswers.OrderBy(x => x.Y))
                {
                    var answerBitmap = BitmapAnalyser.GetAnswerBitmap(standarizedBitmap, answer);
                    var answerValue  = BitmapAnalyser.CheckValue(answerBitmap);
                    if (bitmapsDictionary.ContainsKey(answer.AnswerDTO.QuestionID) == false)
                    {
                        questions++;
                        bitmapsDictionary.Add(answer.AnswerDTO.QuestionID, 1);
                    }
                    //check if value on paper is correct
                    if (!(answerValue == answer.AnswerDTO.IfCorrect))
                    {
                        bitmapsDictionary[answer.AnswerDTO.QuestionID] = 0;
                    }
                }
            }
            return(new ResultDTO()
            {
                Points = bitmapsDictionary.Select(x => x.Value).Sum(), MaxPoints = questions, GeneratedExamID = examID
            });
        }
Пример #2
0
        public DocumentValidator(List <Bitmap> bitmapList)
        {
            _bitmapList      = bitmapList;
            _examsDictionary = new Dictionary <int, List <Bitmap> >();
            _examIDs         = new List <int>();

            foreach (var bitmap in _bitmapList)
            {
                using (var excractedDocument = BitmapAnalyser.ExtractDocumentFromBitmap(bitmap))
                {
                    var binaryDocument = BitmapAnalyser.getBinarizedBitmap(excractedDocument);
                    var examID         = BitmapAnalyser.GetExamID(binaryDocument);
                    if (!_examsDictionary.ContainsKey(examID))
                    {
                        _examsDictionary.Add(examID, new List <Bitmap>()
                        {
                            binaryDocument
                        });
                    }
                    else
                    {
                        _examsDictionary[examID].Add(binaryDocument);
                    }
                    _examIDs.Add(examID);
                }
            }
        }