Beispiel #1
0
        public string OcrImage(string img)
        {
            string        res  = String.Empty;
            List <string> wrds = new List <string>();

            try
            {
                if (File.Exists(img))
                {
                    using (Image <Bgr, byte> i = new Image <Bgr, byte>(img))
                    {
                        if (OcrEngine != null)
                        {
                            OcrEngine.Recognize(i);
                            res = OcrEngine.GetText().TrimEnd();

                            wrds.AddRange(res.Split(new string[] { " ", "\r", "\n" },
                                                    StringSplitOptions.RemoveEmptyEntries).ToList());

                            this.Words = wrds?.ToArray();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            return(res);
        }
Beispiel #2
0
        public HttpResponseMessage Post([FromBody] AuthorizationModel model)
        {
            var plateText = string.Empty;

            if (!string.IsNullOrEmpty(model.CarPlate))
            {
                var dataPath  = HttpContext.Current.Server.MapPath(@"~/tessdata");
                var image     = ConvertImageFromBase64String(model.CarPlate);
                var ocrEngine = new OcrEngine(dataPath);

                plateText = ocrEngine.GetText(new Bitmap(image));

                if (plateText == null)
                {
                    return(MakeResponse(UnauthorizedPlateMessage, string.Empty, 0, HttpStatusCode.Unauthorized));
                }
            }

            bool  controler = false; // true - usado para placa , false - usado pra tag
            Plate plate     = BusinessManager.Instance.Plates.Find(plateText);
            Tag   tag       = BusinessManager.Instance.Tags.Find(model.TagId);

            if (tag == null && plate == null)
            {
                return(MakeResponse(UnauthorizedPlateMessage, string.Empty, 0, HttpStatusCode.Unauthorized));
            }

            if (plate != null)
            {
                controler = true;
            }

            Parking parking = BusinessManager.Instance.Parkings.Find(model.ParkingCNPJ);

            if (parking == null)
            {
                return(MakeResponse(UnauthorizedParkingMessage, string.Empty, 0, HttpStatusCode.Unauthorized));
            }


            if (controler)
            { // is plate
                if (!plate.Client.Parkings.Any(p => p.CNPJ == model.ParkingCNPJ))
                {
                    return(MakeResponse(UnauthorizedPlateMessage, string.Empty, 0, HttpStatusCode.Unauthorized));
                }
            }
            else
            { //is tag
                if (!tag.Client.Parkings.Any(p => p.CNPJ == model.ParkingCNPJ))
                {
                    return(MakeResponse(UnauthorizedTagMessage, string.Empty, 0, HttpStatusCode.Unauthorized));
                }
            }


            bool isNew;
            byte control;

            try
            {
                if (controler)
                {
                    BusinessManager.Instance.AddOrUpdateRecord(plate, parking, out isNew);
                }
                else
                {
                    BusinessManager.Instance.AddOrUpdateRecord(tag, parking, out isNew);
                }
            }
            catch (FullParkingException)
            {
                return(MakeResponse(FullParkingMessage, string.Empty, 0, HttpStatusCode.BadRequest));
            }

            control = Convert.ToByte(isNew);

            if (controler)
            {
                return(MakeResponse(SuccessMessage, plate.Client.FirstName, control, HttpStatusCode.OK));
            }
            else
            {
                return(MakeResponse(SuccessMessage, tag.Client.FirstName, control, HttpStatusCode.OK));
            }
        }