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(); }
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"); }
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)); }
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); }
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)); } }
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); }
public void Setup() { _timespan = new TimeSpan(); _rawResult = new Mock <RawAzureOcrResult>().Object; _imageContent = new Mock <IImageContent>(); }