Beispiel #1
0
        public OcrTests()
        {
            var ocrElem = new OcrElement {
                Id = 1, UserId = System.Guid.NewGuid().ToString()
            };

            var store = new Mock <IUserStore <IdentityUser> >();

            userManager = new Mock <UserManager <IdentityUser> >(store.Object, null, null, null, null, null, null, null, null);
            userManager.Setup(x => x.GetUserId(It.IsAny <ClaimsPrincipal>())).Returns(ocrElem.UserId);

            var dbOptions = new DbContextOptionsBuilder <ApplicationDbContext>()
                            .UseInMemoryDatabase(databaseName: System.Guid.NewGuid().ToString())
                            .Options;

            dbContext = new ApplicationDbContext(dbOptions);
            dbContext.AwsAccesses.Add(awsAccess);
            dbContext.OcrElements.Add(ocrElem);
            dbContext.SaveChanges();

            _ocrController = new OcrController(userManager.Object, dbContext);
            _ocrController.ControllerContext             = new ControllerContext();
            _ocrController.ControllerContext.HttpContext = new DefaultHttpContext();
            _ocrController.TempData = new TempDataDictionary(_ocrController.ControllerContext.HttpContext, Mock.Of <ITempDataProvider>());
        }
Beispiel #2
0
        private IEnumerable <ExtractionResult> ExtractValueFromAnchor(FieldOption option, IEnumerable <OcrElement> elements)
        {
            var items = new List <OcrElement>();

            foreach (var pattern in option.FieldAnchor.Patterns)
            {
                OcrElement element      = null;
                var        matchedLines = elements.Where(i => Regex.IsMatch(i.Text, pattern)).ToList();
                if (matchedLines.Any())
                {
                    if (option.FieldAnchor.ExpectedIndex > 0)
                    {
                        if (matchedLines.Count < option.FieldAnchor.ExpectedIndex)
                        {
                            throw new IndexOutOfRangeException(string.Format("Index provided {0} is out of range for field {1}",
                                                                             option.FieldAnchor.ExpectedIndex, option.FieldName));
                        }
                        element = matchedLines[option.FieldAnchor.ExpectedIndex];
                    }
                    else if (option.FieldAnchor.UseLast)
                    {
                        element = matchedLines.Last();
                    }
                    else
                    {
                        element = matchedLines.First();
                    }
                    items.Add(element);
                }
            }
            if (!items.Any())
            {
                return new[] { new ExtractionResult()
                               {
                                   Option = option, Value = null
                               } }
            }
            ;
            return(ExtractValue(option, items));
        }
Beispiel #3
0
        public async Task <IActionResult> Edit(int id, OcrElement input)
        {
            if (id == 0)
            {
                TempData["ResultMessage"] = "File not found";
                return(RedirectToAction("History"));
            }

            var userId = userManager.GetUserId(HttpContext.User);
            var result = dbContext.OcrElements.Where(x => x.UserId == userId && x.Id == id).FirstOrDefault();

            if (result == null)
            {
                TempData["ResultMessage"] = "File not found";
                return(RedirectToAction("History"));
            }

            result.OcrText = input.OcrText;
            dbContext.OcrElements.Update(result);
            await dbContext.SaveChangesAsync();

            TempData["ResultMessage"] = "Success";
            return(RedirectToAction("History"));
        }