public void GivenRegions_WhenCallingGetAsPlainText_ThenTextOfAllWordsAreReturned()
        {
            //Arrange
            var regions = new[]
            {
                new Region
                {
                    Lines = new List <Line>()
                    {
                        new Line {
                            Words = new List <Word>()
                            {
                                new Word {
                                    Text = "Test A"
                                }, new Word {
                                    Text = "Test B"
                                }
                            }
                        },
                        new Line {
                            Words = new List <Word>()
                            {
                                new Word {
                                    Text = "Test C"
                                }
                            }
                        }
                    }
                },
                new Region
                {
                    Lines = new List <Line>()
                    {
                        new Line {
                            Words = new List <Word>()
                            {
                                new Word {
                                    Text = "Test D"
                                }, new Word {
                                    Text = "Test E"
                                }
                            }
                        },
                    }
                }
            };


            var target = new RawAzureOcrResult()
            {
                Regions = regions
            };

            //Act
            var result = target.GetAsPlainText();

            //Assert
            result.Should().Be("Test A Test B Test C Test D Test E");
        }
 public List <Line> Execute(RawAzureOcrResult ocrOutput)
 {
     if (ocrOutput == null)
     {
         throw new ArgumentNullException(nameof(ocrOutput));
     }
     return(ocrOutput.Regions?.ToList().SelectMany(x => x.Lines).OrderBy(x => x.Rectangle.Top).ToList());
 }
        public void GivenEmptyRawResult_WhenInvokingExecute_ThenNullIsReturned()
        {
            //Arrange
            var ocrResult = new RawAzureOcrResult();

            //Act
            var orderedLines = _target.Execute(ocrResult);

            //Assert
            orderedLines.Should().BeNull();
        }
        public void GivenNoRegions_WhenCallingGetAsPlainText_ThenEmptyStringIsReturned()
        {
            //Arrange
            var target = RawAzureOcrResult.CreateFrom(_resultMock.Object);

            //Act
            var result = target.GetAsPlainText();

            //Assert
            result.Should().BeEmpty();
        }
        public void GivenNoRegions_WhenCallingTextFound_ThenFalseIsReturned()
        {
            //Arrange
            var target = RawAzureOcrResult.CreateFrom(_resultMock.Object);

            //Act
            var result = target.TextFound();

            //Assert
            result.Should().BeFalse();
        }
        public void GivenAProjectOxfordOcrResult_WhenInvokingCreateFrom_ThenPropertiesAreSetCorrectly()
        {
            //Arrange / Act
            var result = RawAzureOcrResult.CreateFrom(_resultMock.Object);

            //Assert
            Assert.AreEqual(_language, result.Language);
            Assert.AreEqual(_orientation, result.Orientation);
            Assert.AreEqual(_regions, result.Regions);
            Assert.AreEqual(_textAngle, result.TextAngle);
        }
        public void GivenRegions_WhenCallingTextFound_ThenTrueIsReturned()
        {
            //Arrange
            _resultMock.Object.Regions = new [] { new Region() };
            var target = RawAzureOcrResult.CreateFrom(_resultMock.Object);

            //Act
            var result = target.TextFound();

            //Assert
            result.Should().BeTrue();
        }
Esempio n. 8
0
        public void GivenEmptyOcrResult_WhenInvokingExecute_ThenGetLinesAndSortIntoLogicalLinesAndTransformIntoSentencesAreCalledAnImageContentIsReturned()
        {
            //Arrange
            var rawResult = new RawAzureOcrResult();
            int height = 100, width = 100;

            _getLinesOrderedByTopPosition.Setup(x => x.Execute(rawResult)).Returns((List <Line>)null);

            //Act
            var imageContent = _target.Execute(rawResult, height, width);

            //Assert
            imageContent.Should().NotBeNull();
            imageContent.Sentences.Should().BeEmpty();
        }
        public void GivenRegions_WhenCallingGetAsPlainText_ThenTextOfAllWordsAreReturned()
        {
            //Arrange
            _resultMock.Object.Regions = new[]
            {
                new Region
                {
                    Lines = new[]
                    {
                        new Line {
                            Words = new[] { new Word {
                                                Text = "Test A"
                                            }, new Word {
                                                Text = "Test B"
                                            } }
                        },
                        new Line {
                            Words = new[] { new Word {
                                                Text = "Test C"
                                            } }
                        }
                    }
                },
                new Region
                {
                    Lines = new[]
                    {
                        new Line {
                            Words = new[] { new Word {
                                                Text = "Test D"
                                            }, new Word {
                                                Text = "Test E"
                                            } }
                        },
                    }
                }
            };
            var target = RawAzureOcrResult.CreateFrom(_resultMock.Object);

            //Act
            var result = target.GetAsPlainText();

            //Assert
            result.Should().Be("Test A Test B Test C Test D Test E");
        }
Esempio n. 10
0
        public ImageContent Execute(RawAzureOcrResult ocrOutput, int height, int width)
        {
            if (ocrOutput == null)
            {
                throw new ArgumentNullException(nameof(ocrOutput));
            }

            var azureLines = _getLinesOrderedByTopPosition.Execute(ocrOutput);

            if (azureLines == null)
            {
                return(new ImageContent(new List <ISentence>()));
            }

            var lines     = _sortIntoLogicalLines.Execute(azureLines);
            var sentences = _transformLinesIntoSentences.Execute(height, width, lines);

            return(new ImageContent(sentences));
        }
Esempio n. 11
0
        public void GivenRawResult_WhenInvokingExecute_ThenOrderedLinesAreReturned()
        {
            //Arrange
            var topLine1 = new Line {
                BoundingBox = "0,5,0,0"
            };
            var topLine2 = new Line {
                BoundingBox = "0,200,0,0"
            };
            var topLine3 = new Line {
                BoundingBox = "0,201,0,0"
            };

            var ocrResult = new RawAzureOcrResult()
            {
                Regions = new[]
                {
                    new Region {
                        Lines = new List <Line>()
                        {
                            topLine2, topLine3
                        }
                    },
                    new Region {
                        Lines = new List <Line>()
                        {
                            topLine1
                        }
                    }
                }
            };

            //Act
            var orderedLines = _target.Execute(ocrResult);

            //Assert
            orderedLines.Should().NotBeNull();
            orderedLines.Count.Should().Be(3);
            orderedLines[0].Should().Be(topLine1);
            orderedLines[1].Should().Be(topLine2);
            orderedLines[2].Should().Be(topLine3);
        }
Esempio n. 12
0
        private async Task <AzureOcrResult> DoOcr(Stream imageAsStream, FileFormatEnum fileFormatEnum, DateTime start)
        {
            try
            {
                var preprocessedResult = _ocrPreProcessing.AjustOrientationAndSize(imageAsStream, fileFormatEnum);
                using (var stream = preprocessedResult.ImageFileStream)
                {
                    ValidateImageProportions(preprocessedResult.NewImageHeight, preprocessedResult.NewImageWidth);
                    var entries = await _azureVisionApi.Execute(stream);

                    var rawAzureOcrResult = RawAzureOcrResult.CreateFrom(entries);
                    var content           = _azureOcrParser.Execute(rawAzureOcrResult, preprocessedResult.NewImageHeight,
                                                                    preprocessedResult.NewImageWidth);
                    return(AzureOcrResult.CreateSuccesResult(DateTime.Now.Subtract(start), content, rawAzureOcrResult));
                }
            }
            catch (Exception e)
            {
                return(AzureOcrResult.CreateErrorResult(DateTime.Now.Subtract(start), e));
            }
        }
Esempio n. 13
0
        public void GivenOcrResult_WhenInvokingExecute_ThenGetLinesAndSortIntoLogicalLinesAndTransformIntoSentencesAreCalledAnImageContentIsReturned()
        {
            //Arrange
            var rawResult = new RawAzureOcrResult();
            int height = 100, width = 100;

            var azureLines = new List <Line>();

            _getLinesOrderedByTopPosition.Setup(x => x.Execute(rawResult)).Returns(azureLines);

            var logicalLines = new Mock <IOrderedEnumerable <KeyValuePair <Point, List <Line> > > >().Object;

            _sortIntoLogicalLines.Setup(x => x.Execute(azureLines)).Returns(logicalLines);

            var sentences = new List <ISentence>();

            _transformLinesIntoSenteces.Setup(x => x.Execute(height, width, logicalLines)).Returns(sentences);

            //Act
            var imageContent = _target.Execute(rawResult, height, width);

            //Assert
            Assert.AreEqual(sentences, imageContent.Sentences);
        }
Esempio n. 14
0
 public void Setup()
 {
     _timespan     = new TimeSpan();
     _rawResult    = new Mock <RawAzureOcrResult>().Object;
     _imageContent = new Mock <IImageContent>();
 }