Exemplo n.º 1
0
        private static List <Answer> GetAnswers(Bitmap bitmap, List <string> resultWordList)
        {
            Answer a = new Answer
            {
                Bitmap = bitmap.Clone(new Rectangle(85, 540, 580, 85), bitmap.PixelFormat)
            };

            a.Bitmap.ToBlackWhite(blackWhiteConvertGradeForAnswers);
            a.Bitmap.Save(imageFilePath.Split('.')[0] + "_A.png");

            Answer b = new Answer
            {
                Bitmap = bitmap.Clone(new Rectangle(85, 680, 580, 85), bitmap.PixelFormat)
            };

            b.Bitmap.ToBlackWhite(blackWhiteConvertGradeForAnswers);
            b.Bitmap.Save(imageFilePath.Split('.')[0] + "_B.png");

            Answer c = new Answer
            {
                Bitmap = bitmap.Clone(new Rectangle(85, 820, 580, 85), bitmap.PixelFormat)
            };

            c.Bitmap.ToBlackWhite(blackWhiteConvertGradeForAnswers);
            c.Bitmap.Save(imageFilePath.Split('.')[0] + "_C.png");

            List <Answer> answerList = new List <Answer>()
            {
                a, b, c
            };

            var advancedOcrForAnswers = new AdvancedOcr
            {
                Language = Turkish.OcrLanguagePack
            };
            OcrResult advancedResultForAnswers = advancedOcrForAnswers.ReadMultiThreaded(new List <Bitmap>()
            {
                a.Bitmap, b.Bitmap, c.Bitmap
            });

            a.OcrPage = advancedResultForAnswers.Pages[0];
            b.OcrPage = advancedResultForAnswers.Pages[1];
            c.OcrPage = advancedResultForAnswers.Pages[2];

            foreach (Answer answer in answerList)
            {
                if (answer.OcrPage != null && answer.OcrPage.Words != null)
                {
                    foreach (OcrWord word in answer.OcrPage.Words)
                    {
                        word.Text     = word.Text.ToLower();
                        answer.Count += resultWordList.Count(x => x == word.Text);
                    }
                }
            }
            answerList.ForEach(answer => Console.WriteLine(answer.Text + " - " + answer.Count.ToString()));
            return(answerList);
        }