예제 #1
0
 public string GetState(OCRRawDataModel.RawDataItem value)
 {
     if (DataConstants.usStateAbbriviations.Contains(value.Value))
     {
         return(value.Value);
     }
     return(string.Empty);
 }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }