private static void ProcessLine(GMLine line, ICollection <double> anglesDetected)
        {
            var suitableWords = line.Words().Where(IsWordValidForAngleDetection).ToList();

            // To detect direction of given line we have to have at least two words in the line
            if (suitableWords.Count < 2)
            {
                return;
            }

            //var firstWord = suitableWords[0];
            double sum = 0;

            for (var idx = 1; idx < suitableWords.Count; idx++)
            {
                //var secondWord = suitableWords[idx];
                //var angle = DetectAngle(firstWord, secondWord);
                var angle = DetectAngle(suitableWords[idx - 1], suitableWords[idx]);
                sum += angle;
                //Console.Out.WriteLine("Angle: {0:N4}", Angles.RadToDeg(angle));
                anglesDetected.Add(angle);
            }
            //var avAngle = sum / (suitableWords.Count - 1);
            // Console.Out.WriteLine("Average angle: {0:N4}", Angles.RadToDeg(avAngle));
        }
Example #2
0
        public GMLine AddLine([NotNull] BoundingBox boundingBox)
        {
            var line = new GMLine(boundingBox);

            lines.Add(line);
            return(line);
        }
        private static GMTextBlock RemoveEmptyElements(this GMTextBlock textBlock)
        {
            var textBlockNew = new GMTextBlock(textBlock.BoundingBox);

            foreach (var paragraph in textBlock.Paragraphs())
            {
                var paragraphNew = new GMParagraph(paragraph.BoundingBox);
                foreach (var line in paragraph.Lines())
                {
                    var lineNew = new GMLine(line.BoundingBox);
                    foreach (var word in line.Words())
                    {
                        if (word.Text.Trim().Length > 0)
                        {
                            var wordNew = new GMWord(word.BoundingBox, word.Text, word.Accuracy);
                            lineNew.AddWord(wordNew);
                        }
                    }
                    if (lineNew.Words().Any())
                    {
                        paragraphNew.AddLine(lineNew);
                    }
                }
                if (paragraphNew.Lines().Any())
                {
                    textBlockNew.AddParagraph(paragraphNew);
                }
                foreach (var word in textBlock.StandaloneWords())
                {
                    if (word.Text.Trim().Length > 0)
                    {
                        var wordNew = new GMWord(word.BoundingBox, word.Text, word.Accuracy);
                        textBlockNew.AddStandaloneWord(wordNew);
                    }
                }
            }
            return(textBlockNew);
        }
Example #4
0
 public void AddLine(GMLine line)
 {
     lines.Add(line);
 }