public string GetState(OCRRawDataModel.RawDataItem value) { if (DataConstants.usStateAbbriviations.Contains(value.Value)) { return(value.Value); } return(string.Empty); }
public object Any(OCRRequest request) { OCRResponse myResponse = new OCRResponse(); if (request.Base64UploadFile == null || string.IsNullOrWhiteSpace(request.Base64UploadFile.ToString())) { myResponse.jsonResponse = "There was no file attached or no file name was specified."; return(myResponse); } try { // get the image data and save to local storage string base64ImgStr = request.Base64UploadFile.ToString().Split(',')[1]; byte[] tmpBytes = Convert.FromBase64String(base64ImgStr); Image image = (Bitmap)((new ImageConverter()).ConvertFrom(tmpBytes)); // now do the OCR junk here var ocr = new Tesseract(); ocr.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.,/"); ocr.Init(@"C:\source\innovation\Content\tessdata", "eng", false); var resizedImage = (Bitmap)Resize(image, (3000), (3000), false); resizedImage.SetResolution(300, 300); var blackAndWhiteImage = BlackAndWhite(resizedImage, new Rectangle(0, 0, resizedImage.Width, resizedImage.Height)); var result = ocr.DoOCR(blackAndWhiteImage, Rectangle.Empty); OCRRawDataModel dataItems = new OCRRawDataModel(); dataItems.DataList = new List <OCRRawDataModel.RawDataItem>(); foreach (Word word in result) { var item = new OCRRawDataModel.RawDataItem(); item.Value = word.Text; item.Confidence = (int)word.Confidence; item.LineIndex = word.LineIndex; dataItems.DataList.Add(item); } var mapper = new IdentificationCardMapper(); var mappedObjects = mapper.MapDriversLicenseData(dataItems); myResponse.jsonResponse = JsonConvert.SerializeObject(mappedObjects); // cleanup image.Dispose(); resizedImage.Dispose(); ocr.Dispose(); } catch (Exception ex) { // i don't know what to do here... myResponse.jsonResponse = ex.Message; } return(myResponse); }
public DateTime GetBirthday(OCRRawDataModel.RawDataItem value) { DateTime date; var tempDate = value.Value.Replace("O", "0"); var isValidDate = DateTime.TryParse(tempDate, out date); if (isValidDate && ((DateTime.Now.Year - date.Year) > 16)) { return(date); } return(DateTime.MinValue); }