コード例 #1
0
        public void FindWordsWhenMatchTheUnexistingLetters()
        {
            var wordList = new List <string>()
            {
                "AAAA", "AAAB", "ABAA"
            };
            var wf = new WordsFinder(wordList);

            var letterA = new Letter();

            letterA.Solve('A');

            var letterMinusB = new Letter();

            letterMinusB.DiscardPossibility('B');

            var word = new Word(new List <Letter>()
            {
                letterA,
                letterA,
                letterA,
                letterMinusB
            });

            var wordsSolutions = wf.GetWords(word);

            Assert.AreEqual(1, wordsSolutions.Count);
        }
コード例 #2
0
        public void FindWordsWhenMatchTheExistingLetters()
        {
            var wordList = new List <string>()
            {
                "AAAA", "AAAB", "ABAA"
            };
            var wf = new WordsFinder(wordList);

            var letterA = new Letter();

            letterA.Solve('A');

            var letter = new Letter();


            var word = new Word(new List <Letter>()
            {
                letterA,
                letterA,
                letterA,
                letter
            });

            var wordsSolutions = wf.GetWords(word);

            Assert.AreEqual(2, wordsSolutions.Count);
        }
コード例 #3
0
        public void ReturnEmptyStringListWhenNoWordIsFound()
        {
            var wf = new WordsFinder();

            var words = wf.GetWords("");

            Assert.AreEqual(0, words.Count);
        }
コード例 #4
0
        public void ReturnOneWordWhenItMatchesTheFilter()
        {
            var wordList = new List <string>()
            {
                "word", "hello"
            };
            var wf = new WordsFinder(wordList);

            var wordsSolutions = wf.GetWords("hello");

            Assert.AreEqual(1, wordsSolutions.Count);
        }
コード例 #5
0
        public void ReturnOneWordWhenThereIsOneWordInDictionaryAndEmptyFilter()
        {
            var wordList = new List <string>()
            {
                "word"
            };
            var wf = new WordsFinder(wordList);

            var words = wf.GetWords("");

            Assert.AreEqual(1, words.Count);
        }
コード例 #6
0
        public void FindTwoWordsOfFourCharacters()
        {
            var wordList = new List <string>()
            {
                "WORD", "HELLO", "ABCD"
            };
            var wf = new WordsFinder(wordList);

            var letter = new Letter();
            var word   = new Word(new List <Letter>()
            {
                letter,
                letter,
                letter,
                letter
            });

            var wordsSolutions = wf.GetWords(word);

            Assert.AreEqual(2, wordsSolutions.Count);
        }
コード例 #7
0
 public WordsFinderViewModel()
 {
     _wordsReader = new WordsReader();
     var wordList = _wordsReader.GetWordList();
     _wordsFinder = new WordsFinder(wordList);
 }
コード例 #8
0
        public List <OcrResults> Process(TextRecognitionSettings settings)
        {
            var results = new List <OcrResults>();

            if (settings.IsBinarizationEnable)
            {
                Binarize();
            }

            if (settings.IsNoiseRemovalEnable)
            {
                RemoveNoise();
            }

            if (settings.IsContrastAdjusmentEnable)
            {
                AdjustContrast();
            }

            if (settings.IsRotationEnable)
            {
                var angle = PredictTurningAngle();
                if (angle != 0)
                {
                    Rotate(angle);
                }
            }

            OcrImage(OcrEngines.Tesseract);

            if (settings.IsRotationEnable && !IsOCRedTextValid())
            {
                Rotate(180);
                OcrImage(OcrEngines.Tesseract);
            }

            var paragraphs = TextHelper.SplitTextIntoParagraphs(_ocredText);

            for (var i = 0; i < paragraphs.Length; i++)
            {
                if (settings.IsWordsCorrectionEnable)
                {
                    paragraphs[i] = CorrectOCRedText(@"Resources\EnglishDictionary.json", paragraphs[i]);
                }

                string[] typeKeyWords = new string[0];
                if (settings.IsTypeRecognitionEnable)
                {
                    var type = PredictType();
                    typeKeyWords = GetSpecialTypeKeyWords(type);
                }
                var ocrResult = new OcrResults {
                    FileName = _inputFileName
                };
                if (settings.KeyWords.Length > 0)
                {
                    ocrResult.KeyWords = WordsFinder.GetCountedKeyWordsFromText(paragraphs[i], settings.KeyWords);
                }

                if (typeKeyWords.Length > 0)
                {
                    var foundTypeKeyWords = WordsFinder.GetCountedKeyWordsFromText(paragraphs[i], typeKeyWords);
                    if (string.IsNullOrEmpty(ocrResult.KeyWords))
                    {
                        ocrResult.KeyWords = foundTypeKeyWords;
                    }
                    else
                    {
                        ocrResult.KeyWords += foundTypeKeyWords;
                    }
                }

                if (settings.KeyWords.Length > 0 && string.IsNullOrEmpty(ocrResult.KeyWords))
                {
                    continue;
                }
                else
                {
                    ocrResult.OcredText = paragraphs[i];
                }

                results.Add(ocrResult);
            }

            return(results);
        }