Ejemplo n.º 1
0
        private static void DetectTextGetJson()
        {
            var configuration = Construction.GetConfiguration();

            var bucketName = configuration["S3BucketName"];

            var imageFilePath = configuration["ImageFilePath"];
            var objectKey     = Construction.GetKeyNameFromFilePath(imageFilePath);

            using (var rekognitionClient = Construction.GetAmazonRekognitionClient())
            {
                rekognitionClient.AfterResponseEvent += RekognitionClient_AfterResponseEvent;

                var detectTextRequest = new DetectTextRequest
                {
                    Image = new Image
                    {
                        S3Object = new S3Object
                        {
                            Bucket = bucketName,
                            Name   = objectKey,
                        },
                    },
                };

                var detectTextResponse = rekognitionClient.DetectTextAsync(detectTextRequest).Result;

                JsonFileSerializer.Serialize(@"C:\Temp\temp.json", detectTextResponse);
            }
        }
Ejemplo n.º 2
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Console.WriteLine("show");
            string defaultURL = @"C:\Users\Admin\Desktop\images\anh-tra-sua.jpg";
            String photo      = txtURL.Text == string.Empty ? defaultURL : txtURL.Text;

            var client  = new AmazonRekognitionClient();
            var source  = ToByteStream(photo);
            var request = new DetectTextRequest()
            {
                Image = source
            };

            try
            {
                var response = client.DetectText(request);
                Console.WriteLine("Detected labels for " + photo);
                int count = 1;
                txtInfo.Text = string.Empty;
                foreach (var label in response.TextDetections)
                {
                    txtInfo.Text += count++ + "/" + label.DetectedText + " - " + label.Confidence + "\n";
                }
            }
            catch (Exception)
            {
            }
        }
Ejemplo n.º 3
0
    public async void SendImage(string bs4)
    {
        DetectTextRequest detectTextRequest = new DetectTextRequest()
        {
            Image = new Image()
            {
                Bytes = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(bs4))
            }
        };

        try
        {
            Debug.Log("starting detectText");
            //DetectTextResponse detectTextResponse = _rekClient.DetectText(detectTextRequest);
            DetectTextResponse detectTextResponse = await _rekClient.DetectTextAsync(detectTextRequest);

            Debug.Log("Response for Image: ");
            foreach (TextDetection text in detectTextResponse.TextDetections)
            {
                Debug.Log("Detected: " + text.DetectedText);
                Debug.Log("Confidence: " + text.Confidence);
                Debug.Log("Id : " + text.Id);
                Debug.Log("Parent Id: " + text.ParentId);
                Debug.Log("Type: " + text.Type);
            }
        }
        finally{
            Debug.Log("completed detectText");
        };
    }
Ejemplo n.º 4
0
        public List <string> TextDetectionNon(Bitmap b)
        {
            List <string> res = new List <string>();

            DetectTextRequest detectText = new DetectTextRequest()
            {
                Image = new Amazon.Rekognition.Model.Image()
                {
                    Bytes = new MemoryStream(ImageToBytes(b))
                }
            };

            try
            {
                DetectTextResponse detectTextResponse = rekognitionClient.DetectText(detectText);
                foreach (TextDetection text in detectTextResponse.TextDetections)
                {
                    if (text.Type == TextTypes.LINE)
                    {
                        res.Add(text.DetectedText);
                        Console.WriteLine("Left : " + text.Geometry.BoundingBox.Left);
                        Console.WriteLine("Top " + text.Geometry.BoundingBox.Top);
                        Console.WriteLine("Height " + text.Geometry.BoundingBox.Height);
                        Console.WriteLine("width " + text.Geometry.BoundingBox.Width);
                    }
                    Console.WriteLine("------------------------------------");
                }
                return(res);
            }
            catch
            {
                return(new List <string>());
            }
        }
Ejemplo n.º 5
0
        // For Image analysis
        public List <TextDetection> DetectText(MemoryStream stream, string target, out string message)
        {
            string            outMessage        = "";
            DetectTextRequest detectTextRequest = new DetectTextRequest()
            {
                Image = new Image()
                {
                    Bytes = stream
                }
            };

            DetectTextResponse response = _client.DetectTextAsync(detectTextRequest).Result;

            //Console.WriteLine($"Texts Found: {response.TextDetections.Count}");
            //Console.WriteLine();

            foreach (TextDetection text in response.TextDetections)
            {
                //Console.WriteLine("text: " + text.DetectedText);
                //Console.WriteLine("Confidence: " + text.Confidence);
                //Console.WriteLine("Type: " + text.Type);
                //Console.WriteLine();
                if (text.DetectedText.ToLower() == target.ToLower() || text.Type.ToString().ToLower() == target.ToLower())
                {
                    outMessage = "The Object '" + target.ToUpper() + "' in your watchlist has been found in live stream with '" + Convert.ToInt32(text.Confidence) + "%'  confidence";
                }
            }
            message = outMessage;

            LogResponse(JsonConvert.SerializeObject(response, Formatting.Indented), "DetectText");
            return(response.TextDetections);
        }
Ejemplo n.º 6
0
        private void FindText_Click(object sender, RoutedEventArgs e)
        {
            var source = ToBytesStream(@"C:\Users\A715-72\Desktop\cnm\AWS2_01\AWS2_01\img\page2\1.jpg");

            var client  = new AmazonRekognitionClient();
            var request = new DetectTextRequest
            {
                Image = source
            };

            var respone = client.DetectText(request);
            var n       = 360;

            foreach (var label in respone.TextDetections)
            {
                Label lb = new Label
                {
                    Content  = label.DetectedText,
                    FontSize = 15,
                    Margin   = new Thickness(100, n, 0, 0)
                };
                n = n + 20;
                canvas.Children.Add(lb);
            }
        }
Ejemplo n.º 7
0
        private void btnLoad1_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog op = new OpenFileDialog();

            op.Title  = "Select a picture";
            op.Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" +
                        "JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" +
                        "Portable Network Graphic (*.png)|*.png";
            if (op.ShowDialog() == true)
            {
                imgPhoto1.Source = new BitmapImage(new Uri(op.FileName));
            }

            String photo = imgPhoto1.Source.ToString().Substring(8);

            Amazon.Rekognition.Model.Image image = new Amazon.Rekognition.Model.Image();
            try
            {
                using (FileStream fs = new FileStream(photo, FileMode.Open, FileAccess.Read))
                {
                    byte[] data = null;
                    data = new byte[fs.Length];
                    fs.Read(data, 0, (int)fs.Length);
                    image.Bytes = new MemoryStream(data);
                }
            }
            catch (Exception)
            {
                return;
            }

            AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

            DetectTextRequest detectTextRequest = new DetectTextRequest()
            {
                Image = image,
            };

            try
            {
                DetectTextResponse detectTextResponse = rekognitionClient.DetectText(detectTextRequest);

                List <Moderation1> items = new List <Moderation1>();
                foreach (TextDetection text in detectTextResponse.TextDetections)
                {
                    items.Add(new Moderation1()
                    {
                        Confidence = text.Confidence, Detected = text.DetectedText, Type = text.Type
                    });
                }
                lvModeration1.ItemsSource = items;
            }
            catch (Exception)
            {
            }
        }
        public async Task <IEnumerable <Rectangle> > ExtractTextAsync()
        {
            if (_textResponse == null)
            {
                var textRequest = new DetectTextRequest()
                {
                    Image = _rekognitionImage
                };
                _textResponse = await _client.DetectTextAsync(textRequest);
            }

            return(ExtractText());
        }
        public async Task <(int, string)> ExtractNameAndCodeInS3Object(string s3ObjectPhotoToTest)
        {
            var detectTextRequest = new DetectTextRequest()
            {
                Image = GetImageDefinition(s3ObjectPhotoToTest)
            };

            try
            {
                DetectTextResponse detectTextResponse = await _client.DetectTextAsync(detectTextRequest);

                System.Diagnostics.Debug.WriteLine("Detected lines and words for " + s3ObjectPhotoToTest);
                var uniqueStrings = new HashSet <string>();
                foreach (TextDetection text in detectTextResponse.TextDetections)
                {
                    System.Diagnostics.Debug.WriteLine("Detected: " + text.DetectedText);
                    System.Diagnostics.Debug.WriteLine("Confidence: " + text.Confidence);
                    System.Diagnostics.Debug.WriteLine("Id : " + text.Id);
                    System.Diagnostics.Debug.WriteLine("Parent Id: " + text.ParentId);
                    System.Diagnostics.Debug.WriteLine("Type: " + text.Type);
                }

                var textWeCareAbout = detectTextResponse.TextDetections.Where(td => td.Confidence > 90);

                if (textWeCareAbout.Count() < 2)
                {
                    throw new Exception("Please make your id card more visible");
                }

                var uniqueTexts = textWeCareAbout.Select(td => td.DetectedText).ToHashSet();

                var probablyTheName           = uniqueTexts.OrderByDescending(td => td.Length).Take(1).Single();
                var probablyTheEmployeeNumber = uniqueTexts.SingleOrDefault(td => td.All(chr => Char.IsNumber(chr)));

                if (probablyTheEmployeeNumber == null)
                {
                    throw new Exception("Couldn't read the employee number");
                }

                int    employeeNumber            = int.Parse(probablyTheEmployeeNumber);
                string employeeNameWithoutSpaces = probablyTheName.Replace(" ", string.Empty);

                return(employeeNumber, employeeNameWithoutSpaces);
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine(e.Message);
                throw e;
            }
        }
        public IEnumerable <Rectangle> ExtractText()
        {
            if (_textResponse == null)
            {
                var textRequest = new DetectTextRequest()
                {
                    Image = _rekognitionImage
                };
                _textResponse = _client.DetectTextAsync(textRequest).Result;
            }

            return(_textResponse.TextDetections.Select(t => t.Geometry.Polygon)
                   .Select(p => AmazonRekognitionCoordinateTranslator.RelativePolygonToAbsolute(p, _width,
                                                                                                _height)));
        }
Ejemplo n.º 11
0
        private static void DetectLicensePlates(List <DMVDatabase> listOfEntries)
        {
            DMVDatabase driver     = new DMVDatabase();
            string      bucketName = "cs455final-images";
            // list of photos
            List <string> listOfPhotos = new List <string>();

            listOfPhotos.Add("Car1.jpg");
            listOfPhotos.Add("Car2.jpg");
            listOfPhotos.Add("Car3.jpg");
            listOfPhotos.Add("Car4.png");
            listOfPhotos.Add("Car5.jpg");

            AmazonRekognitionClient rekogClient = new AmazonRekognitionClient(Amazon.RegionEndpoint.USEast1);

            foreach (string photo in listOfPhotos)
            {
                DetectTextRequest textRequest = new DetectTextRequest
                {
                    Image = new Image
                    {
                        S3Object = new S3Object
                        {
                            Bucket = bucketName,
                            Name   = photo
                        }
                    }
                };

                DetectTextResponse textResponse = rekogClient.DetectText(textRequest);
                foreach (var textLabel in textResponse.TextDetections)
                {
                    if (textLabel.DetectedText.Contains('-'))
                    {
                        string licensePlate = textLabel.DetectedText;
                        foreach (DMVDatabase dbEntry in listOfEntries)
                        {
                            if (dbEntry.VehiclePlate.Equals(licensePlate) && dbEntry.HasViolation == false)
                            {
                                dbEntry.HasViolation = true;
                            }
                        }
                    }
                }
            }

            NotifyDriverOfViolation(listOfEntries);
        }
        /// <summary>
        /// This method is called for every Lambda invocation. This method takes in an S3 event object and can be used
        /// to respond to S3 notifications.
        /// </summary>
        /// <param name="evnt"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <string> FunctionHandler(S3Event evnt, ILambdaContext context)
        {
            var s3Event = evnt.Records?[0].S3;

            if (s3Event == null)
            {
                return(null);
            }

            try
            {
                AmazonRekognitionClient client = new AmazonRekognitionClient(RegionEndpoint.USEast1);
                // get the file's name from event
                string            imageTitle = s3Event.Object.Key;
                DetectTextRequest q          = new DetectTextRequest();
                // get the file from S3
                Image img = new Image()
                {
                    S3Object = getObject(imageTitle)
                };
                q.Image = img;
                // detect text from the image
                var task = client.DetectTextAsync(q, new System.Threading.CancellationToken());
                task.Wait();
                DetectTextResponse r     = task.Result;
                string             plate = "";
                // filter recognized text
                foreach (TextDetection t in r.TextDetections)
                {
                    if (isCapitaLettersNumbers(t.DetectedText))
                    {
                        plate = t.DetectedText;
                        //send message to plate's owner
                        sendMessage(plate);
                    }
                }
            }
            catch (Exception e)
            {
                context.Logger.LogLine($"Error getting object {s3Event.Object.Key} from bucket {s3Event.Bucket.Name}. Make sure they exist and your bucket is in the same region as this function.");
                context.Logger.LogLine(e.Message);
                context.Logger.LogLine(e.StackTrace);
                throw;
            }

            return("Lamda has returned");
        }
Ejemplo n.º 13
0
        public async Task <AwsOcrResponse> GetOcrResultWithoutCacheAsync(string filePath, string language = null, bool runAnywayWithBadLanguage = true)
        {
            MemoryStream ms = new MemoryStream();

            using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
            {
                fileStream.CopyTo(ms);
            }
            var request = new DetectTextRequest {
                Image = new Image()
                {
                    Bytes = ms
                }
            };
            DetectTextResponse result = await rekognitionClient.DetectTextAsync(request);

            return(AwsResponseMapper.Get(result));
        }
Ejemplo n.º 14
0
        static void Main(string[] args)
        {
            //string filePath = "banner.png";
            string filePath = "banner1.jpg";
            Image  image    = new Image();

            try
            {
                using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                {
                    byte[] data = null;
                    data = new byte[fs.Length];
                    fs.Read(data, 0, (int)fs.Length);
                    image.Bytes = new MemoryStream(data);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine("Failed to load file " + filePath);
            }

            AmazonRekognitionClient client  = new AmazonRekognitionClient(Amazon.RegionEndpoint.USEast1);
            DetectTextRequest       request = new DetectTextRequest
            {
                Image = image
            };

            try
            {
                DetectTextResponse response = client.DetectText(request);
                foreach (var text in response.TextDetections)
                {
                    Console.WriteLine(text.DetectedText);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadLine();
        }
Ejemplo n.º 15
0
        public async Task <DetectTextResponse> ConvertToTextAsync(MemoryStream data)
        {
            try {
                DetectTextRequest detectTextRequest = new DetectTextRequest()
                {
                    Image = new Image()
                    {
                        Bytes = data
                    }
                };

                return(await rekognitionClient.DetectTextAsync(detectTextRequest));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(new DetectTextResponse());
            }
        }
Ejemplo n.º 16
0
        private void btn_detectText_Click(object sender, EventArgs e)
        {
            var image = ToBytesStream($"{detectTextImgLocation}");

            txtDetectedText.Text = "";

            var client  = new AmazonRekognitionClient();
            var request = new DetectTextRequest
            {
                Image = image
            };

            var response = client.DetectText(request);

            txtDetectedText.Text = $"Found {response.TextDetections.Count} texts\n";

            foreach (var text in response.TextDetections)
            {
                txtDetectedText.Text += $"- {text.DetectedText}\n";
            }
        }
Ejemplo n.º 17
0
        public DetectTextResponse ImageToText()
        {
            Image image = new Image();

            using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                byte[] data = null;
                data = new byte[fs.Length];
                fs.Read(data, 0, (int)fs.Length);
                image.Bytes = new MemoryStream(data);
            }

            AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

            DetectTextRequest detectTextRequest = new DetectTextRequest()
            {
                Image = image,
            };

            DetectTextResponse detectTextResponse = rekognitionClient.DetectText(detectTextRequest);

            double width  = imgPictureFrame.Width;
            double height = imgPictureFrame.Height;

            foreach (TextDetection text in detectTextResponse.TextDetections)
            {
                bool isLine = true;
                if (text.Type != TextTypes.LINE)
                {
                    isLine = false;
                }

                BoundingBox boundingBox = text.Geometry.BoundingBox;
                BindingBox  bindingBox  = new BindingBox(width * boundingBox.Width, height * boundingBox.Height, height * boundingBox.Top, width * boundingBox.Left, text.Id.ToString(), isLine);
                gContainer.Children.Add(bindingBox);
                bindingBoxes.Add(bindingBox);
            }

            return(detectTextResponse);
        }
Ejemplo n.º 18
0
        public static async Task <string> MakeOCRRequest(string imageFilePath)
        {
            try
            {
                Image image = new Image();
                image.Bytes = ImageRequest.GetImageAsMemoryStream(imageFilePath);

                DetectTextRequest detectTextRequest = new DetectTextRequest()
                {
                    Image = image
                };

                DetectTextResponse detectTextResponse = await client.DetectTextAsync(detectTextRequest);

                string json = System.Text.Json.JsonSerializer.Serialize(detectTextResponse.TextDetections);
                return(json);
            }
            catch (Exception)
            {
                return("error");
            }
        }
Ejemplo n.º 19
0
        private static void DetectTextOnS3ObjectRequest()
        {
            var configuration = Construction.GetConfiguration();

            var bucketName = configuration["S3BucketName"];

            var imageFilePath = configuration["ImageFilePath"];
            var objectKey     = Construction.GetKeyNameFromFilePath(imageFilePath);

            using (var rekognitionClient = Construction.GetAmazonRekognitionClient())
            {
                var detectTextRequest = new DetectTextRequest
                {
                    Image = new Image
                    {
                        S3Object = new S3Object
                        {
                            Bucket = bucketName,
                            Name   = objectKey,
                        },
                    },
                };

                try
                {
                    var detectTextResponse = rekognitionClient.DetectTextAsync(detectTextRequest).Result;

                    Construction.DisplayDetectTextResponse(detectTextResponse);
                }
                catch (AmazonRekognitionException ex)
                {
                    Console.WriteLine($"{nameof(AmazonRekognitionException)}: {ex.Message}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"{nameof(Exception)}: {ex.Message}");
                }
            }
        }
        public IActionResult GetImageText()
        {
            string photo     = "image_2020_03_09T10_13_27_425Z.png";
            string bucket    = "imagebucket080304";
            string imageText = "";

            AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(RegionEndpoint.USEast2);

            DetectTextRequest detectTextRequest = new DetectTextRequest()
            {
                Image = new Image()
                {
                    S3Object = new S3Object()
                    {
                        Name   = photo,
                        Bucket = bucket
                    }
                }
            };

            try
            {
                var detectTextResponse = rekognitionClient.DetectTextAsync(detectTextRequest);
                var imageResponse      = detectTextResponse.Result;
                var image = imageResponse.TextDetections.Where(te => te.Type == "Line" && te.Confidence > 90).OrderByDescending(t => t.Confidence).FirstOrDefault();
                if (image != null)
                {
                    imageText = image.DetectedText;
                }
            }
            catch (Exception e)
            {
                imageText = $"exception occured { e.Message }";
            }


            return(Ok(imageText));
        }
Ejemplo n.º 21
0
        // snippet-start:[Rekognition.dotnetv3.DetectTextExample]
        public static async Task Main()
        {
            string photo  = "Dad_photographer.jpg"; // "input.jpg";
            string bucket = "igsmiths3photos";      // "bucket";

            var rekognitionClient = new AmazonRekognitionClient();

            var detectTextRequest = new DetectTextRequest()
            {
                Image = new Image()
                {
                    S3Object = new S3Object()
                    {
                        Name   = photo,
                        Bucket = bucket,
                    },
                },
            };

            try
            {
                DetectTextResponse detectTextResponse = await rekognitionClient.DetectTextAsync(detectTextRequest);

                Console.WriteLine($"Detected lines and words for {photo}");
                detectTextResponse.TextDetections.ForEach(text =>
                {
                    Console.WriteLine($"Detected: {text.DetectedText}");
                    Console.WriteLine($"Confidence: {text.Confidence}");
                    Console.WriteLine($"Id : {text.Id}");
                    Console.WriteLine($"Parent Id: {text.ParentId}");
                    Console.WriteLine($"Type: {text.Type}");
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Ejemplo n.º 22
0
        public async Task <bool> FunctionHandler(FileInfo fileInfo, ILambdaContext context)
        {
            DetectTextRequest request = new DetectTextRequest
            {
                Video = new Video
                {
                    S3Object = new S3Object
                    {
                        Bucket = fileInfo.Bucket,
                        Name   = fileInfo.Key
                    }
                },
                NotificationChannel = new NotificationChannel {
                    RoleArn = "arn:aws:iam::518495728486:role/hackathon-rek-role", SNSTopicArn = "arn:aws:sns:us-east-1:518495728486:AmazonRekognition-hackathon-2018"
                }
            };

            StartPersonTrackingResponse response = await rekClient.DetectTextAsync(request).ConfigureAwait(false);

            bool validLength = await ProcessVideoMessages(context, response);

            return(validLength);
        }
Ejemplo n.º 23
0
    public static void Example()
    {
        String photo  = "input.jpg";
        String bucket = "bucket";

        AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();

        DetectTextRequest detectTextRequest = new DetectTextRequest()
        {
            Image = new Image()
            {
                S3Object = new S3Object()
                {
                    Name   = photo,
                    Bucket = bucket
                }
            }
        };

        try
        {
            DetectTextResponse detectTextResponse = rekognitionClient.DetectText(detectTextRequest);
            Console.WriteLine("Detected lines and words for " + photo);
            foreach (TextDetection text in detectTextResponse.TextDetections)
            {
                Console.WriteLine("Detected: " + text.DetectedText);
                Console.WriteLine("Confidence: " + text.Confidence);
                Console.WriteLine("Id : " + text.Id);
                Console.WriteLine("Parent Id: " + text.ParentId);
                Console.WriteLine("Type: " + text.Type);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
Ejemplo n.º 24
0
        static void DetectText(string filename)
        {
            // Using USWest2, not the default region
            AmazonRekognitionClient rekoClient = new AmazonRekognitionClient("AKIAJ3MXTT4YJ5WCU2JA", "1Qgrgk01sRVzRkEhZ0VuB/9kO8FyZQI2qjSy76Ry", Amazon.RegionEndpoint.USWest2);

            DetectTextRequest dfr = new DetectTextRequest();

            // Request needs image butes, so read and add to request
            Amazon.Rekognition.Model.Image img = new Amazon.Rekognition.Model.Image();
            byte[] data = null;
            using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
            {
                data = new byte[fs.Length];
                fs.Read(data, 0, (int)fs.Length);
            }
            img.Bytes = new MemoryStream(data);
            dfr.Image = img;
            var outcome = rekoClient.DetectText(dfr);

            if (outcome.TextDetections.Count > 0)
            {
                foreach (var text in outcome.TextDetections)
                {
                    Console.WriteLine("Description:" + text.DetectedText + " - Confidence:" + text.Confidence);

                    //// Get the bounding box
                    //BoundingBox bb = fd.BoundingBox;
                    //Console.WriteLine("Bounding box = (" + bb.Left + ", " + bb.Top + ", " +
                    //    bb.Height + ", " + bb.Width + ")");
                }
            }
            else
            {
                Console.WriteLine(">>> No Text found");
            }
        }
        private void btnOCR_Click(object sender, EventArgs e)
        {
            if (textURL.Text == "")
            {
                MessageBox.Show("Vui lòng chọn hình ảnh để phân tích!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            Bitmap bmp = new Bitmap(textURL.Text);

            pb.Image    = bmp;
            pb.SizeMode = PictureBoxSizeMode.StretchImage;

            var source = ToByteStream(textURL.Text);

            var client  = new AmazonRekognitionClient();
            var request = new DetectTextRequest
            {
                Image = source
            };

            var response = client.DetectText(request);
            var tmp      = new StringBuilder();

            foreach (var item in response.TextDetections)
            {
                //MessageBox.Show(item.DetectedText);
                if (item.Type == "LINE") // LINE or WORD
                {
                    tmp.Append(item.DetectedText);
                    tmp.Append("\r\n");
                }
            }
            txtRes.Text = tmp.ToString();
            //MessageBox.Show(txtRes.Text);
        }
Ejemplo n.º 26
0
        public async Task <List <TextDetection> > ViaImage(ImageResult image)
        {
            Amazon.Rekognition.Model.Image img = new Amazon.Rekognition.Model.Image();
            MemoryStream stream = new MemoryStream(image.FileArray);

            img.Bytes = stream;

            DetectTextRequest detectTextRequest = new DetectTextRequest()
            {
                Image = img
            };

            try
            {
                Task <DetectTextResponse> detectTextResponseTask = _AWSProvider._rekognitionClient.DetectTextAsync(detectTextRequest);
                detectTextResponseTask.Wait();
                return(detectTextResponseTask.Result.TextDetections);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(null);
            }
        }
        public static void DoImageRecognition(string path)
        {
            if (File.Exists(path))
            {
                var options = new CredentialProfileOptions()
                {
                    AccessKey = "",
                    SecretKey = ""
                };

                var profile = new CredentialProfile("test", options)
                {
                    Region = RegionEndpoint.USEast2
                };
                var netSdkFile = new NetSDKCredentialsFile();
                netSdkFile.RegisterProfile(profile);


                AmazonRekognitionClient rekoClient = new AmazonRekognitionClient(RegionEndpoint.USEast2);
                MemoryStream            mStream;

                using (System.Drawing.Image image = System.Drawing.Image.FromFile($"{path}"))
                {
                    using (MemoryStream m = new MemoryStream())
                    {
                        image.Save(m, image.RawFormat);
                        mStream = m;
                    }
                }

                DetectTextRequest detectTextRequest = new DetectTextRequest()
                {
                    Image = new Image()
                    {
                        Bytes = mStream
                    }
                };

                try
                {
                    _stopwatch.Start();
                    DetectTextResponse detectTextResponse = rekoClient.DetectText(detectTextRequest);
                    foreach (TextDetection text in detectTextResponse.TextDetections)
                    {
                        CheckFoundSerial(text.DetectedText);
                    }

                    Console.WriteLine($"Query time {_stopwatch.ElapsedMilliseconds}ms");
                    if (foundSerial)
                    {
                        Console.WriteLine($"Serial number: {serialNumber}");
                    }
                    else
                    {
                        Console.WriteLine("Could not find any serial number");
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }

            _stopwatch.Reset();
            Console.WriteLine();
            Console.WriteLine("Press enter to show menu");
            Console.ReadKey();
            Console.Clear();
            Console.WriteLine("Press 0 for image processing using camera or 1-9 for stored images");
        }
Ejemplo n.º 28
0
        public Solicitudes DetectText(List <Tab_ConfigSys> Tab_ConfigSys, byte[] bytes, string Identificacion, int IdTipoIdentificacion, int?OPC)
        {
            string xClase   = string.Format("{0}|{1}", MethodBase.GetCurrentMethod().Module.Name, MethodBase.GetCurrentMethod().DeclaringType.Name);
            string xProceso = MethodBase.GetCurrentMethod().Name;

            bool resp  = false;
            var  param = new
            {
                UriFoto            = bytes,
                TipoIdentificacion = IdTipoIdentificacion,
                cedula             = Identificacion,
                OPCe = OPC
            };
            var dto_excepcion = new UTL_TRA_EXCEPCION
            {
                STR_CLASE      = xClase,
                STR_EVENTO     = xProceso,
                FEC_CREACION   = DateTime.Now,
                STR_PARAMETROS = JsonConvert.SerializeObject(param),
                STR_SERVIDOR   = System.Net.Dns.GetHostName(),
                STR_APLICATIVO = ConfigurationManager.AppSettings["APLICATIVO"].ToString()
            };
            Solicitudes _Solicitudes = new Solicitudes();

            _Solicitudes.Identificacion = Identificacion;
            ManagerSolcitudes managerSolcitudes = new ManagerSolcitudes();
            var FecVencCedula = managerSolcitudes.ConsultaFechaVencimientoCedula(_Solicitudes);

            var options = new CredentialProfileOptions
            {
                AccessKey = Tab_ConfigSys[0].llave_Config1,
                SecretKey = Tab_ConfigSys[0].llave_Config2
            };

            try
            {
                var profile = new Amazon.Runtime.CredentialManagement.CredentialProfile("AWSProfileName", options);
                profile.Region = RegionEndpoint.USWest1;
                var netSDKFile = new NetSDKCredentialsFile();
                netSDKFile.RegisterProfile(profile);

                using (AmazonRekognitionClient rekoClient = new AmazonRekognitionClient(Tab_ConfigSys[0].llave_Config1, Tab_ConfigSys[0].llave_Config2, RegionEndpoint.USEast1))
                {
                    Amazon.Rekognition.Model.Image img = new Amazon.Rekognition.Model.Image();

                    img.Bytes = new MemoryStream(bytes);

                    DetectTextRequest dfr = new DetectTextRequest();

                    dfr.Image = img;
                    var  outcome = rekoClient.DetectText(dfr);
                    bool dia     = false;
                    bool mes     = false;
                    bool anio    = false;
                    foreach (var texto in outcome.TextDetections)
                    {
                        string cedula = "";

                        cedula = texto.DetectedText;
                        cedula = cedula.Replace(" ", "").Trim();


                        var cedresp   = cedula.Split(':');
                        var respuesta = cedresp.Where(x => x.ToString().Equals(Identificacion) || cedula.Equals(Identificacion)).Any();
                        if (respuesta)
                        {
                            resp = respuesta;
                        }
                        if (FecVencCedula != null)
                        {
                            var resDia = cedresp.Where(x => x.ToString().Equals(Convert.ToString(FecVencCedula.Dia)) || cedula.Equals(Convert.ToString(FecVencCedula.Dia))).Any();
                            if (resDia)
                            {
                                dia = resDia;
                            }
                            var resMes = cedresp.Where(x => x.ToString().Equals(Convert.ToString(FecVencCedula.Mes)) || cedula.Equals(Convert.ToString(FecVencCedula.Mes))).Any();
                            if (resMes)
                            {
                                mes = resMes;
                            }
                            var resAnio = cedresp.Where(x => x.ToString().Equals(Convert.ToString(FecVencCedula.Anio)) || cedula.Equals(Convert.ToString(FecVencCedula.Anio))).Any();
                            if (resAnio)
                            {
                                anio = resAnio;
                            }

                            if (respuesta == true && dia == true && mes == true && anio == true)
                            {
                                break;
                            }
                        }
                        else
                        {
                            if (respuesta)
                            {
                                break;
                            }
                        }
                    }
                    var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(outcome.TextDetections.Select(x => x.DetectedText));


                    _Solicitudes.Result       = resp;
                    _Solicitudes.Dia          = Convert.ToInt32(dia);
                    _Solicitudes.Mes          = Convert.ToInt32(mes);
                    _Solicitudes.Anio         = Convert.ToInt32(anio);
                    _Solicitudes.DetectedText = jsonString;
                }
                //return outcome.TextDetections.Select(x => x.DetectedText).ToList();
                return(_Solicitudes);
            }
            catch (Exception ex)
            {
                dto_excepcion.STR_MENSAJE = ex.Message;
                dto_excepcion.IS_TELEGRAM = true;
                TwoFunTwoMe_DataAccess.Utility.guardaExcepcion(dto_excepcion, ConfigurationManager.ConnectionStrings["TwoFunTwoMeConnection"].ConnectionString);
                _Solicitudes.Mensaje = "ERR_Detect Text";
                throw;
            }
        }
Ejemplo n.º 29
0
        public async Task <NumberPlateTrigger> FunctionHandler(S3Event evnt, ILambdaContext context)
        {
            var s3Event = evnt.Records?[0].S3;

            context.Logger.LogLine("EVENT Received: " + JsonConvert.SerializeObject(s3Event));

            if (regExNumberPlate == null)
            {
                context.Logger.LogLine("regExNumberPlate is not yet populated. Calling getNumberPlateFromSecretsManager()...");
                regExNumberPlate = await getNumberPlateFromSecretsManager(context);

                context.Logger.LogLine("regExNumberPlate is " + regExNumberPlate);
            }

            //var response = await this.S3Client.GetObjectMetadataAsync(s3Event.Bucket.Name, s3Event.Object.Key);
            //return response.Headers.ContentType;

            NumberPlateTrigger result = new NumberPlateTrigger
            {
                bucket        = s3Event.Bucket.Name,
                key           = s3Event.Object.Key,
                contentType   = "",
                contentLength = s3Event.Object.Size,
                charge        = int.Parse(Environment.GetEnvironmentVariable("TollgateCharge")),
                numberPlate   = new NumberPlate()
                {
                    numberPlateRegEx = this.regExNumberPlate,
                    detected         = false
                }
            };

            recorder.BeginSubsegment("TollGantry::Detect Number Plate in Captured Image");
            recorder.AddMetadata("bucket", s3Event.Bucket.Name);
            recorder.AddMetadata("key", s3Event.Object.Key);
            recorder.AddMetadata("regex", this.regExNumberPlate);

            S3Object s3Object = new S3Object();

            s3Object.Bucket = s3Event.Bucket.Name;
            s3Object.Name   = s3Event.Object.Key;
            DetectTextRequest detectTextReq = new DetectTextRequest {
                Image = new Image {
                    S3Object = s3Object
                }
            };

            context.Logger.LogLine("Calling Rekognition ... ");
            DetectTextResponse detectTextResponse = await rekognitionClient.DetectTextAsync(detectTextReq);

            context.Logger.LogLine($"Response from Rekognition: {JsonConvert.SerializeObject(detectTextResponse)}");

            // Check if the a valid number was detected...
            foreach (var textItem in detectTextResponse.TextDetections)
            {
                if (!result.numberPlate.detected && textItem.Type.Value == "LINE" && textItem.Confidence > float.Parse(Environment.GetEnvironmentVariable("RekognitionTextMinConfidence")))
                {
                    Regex           regex   = new Regex(regExNumberPlate);
                    MatchCollection matches = regex.Matches(textItem.DetectedText);
                    context.Logger.LogLine($"Matches collection: {matches.Count}");
                    string plateNumber = "";
                    foreach (Match match in matches)
                    {
                        plateNumber += (match.Groups[1].Value + match.Groups[2].Value);
                    }
                    if (!string.IsNullOrEmpty(plateNumber))
                    {
                        result.numberPlate.detected          = true;
                        result.numberPlate.confidence        = textItem.Confidence;
                        result.numberPlate.numberPlateString = plateNumber;
                        context.Logger.LogLine($"A valid plate number was detected ({result.numberPlate.numberPlateString})");
                    }
                }
            }

            recorder.EndSubsegment();

            //
            // At this point, we either know it is a valid number plate
            // or it couldn't be determined with adequate confidence
            // so we need manual intervention
            //

            //
            // Kick off the step function
            //

            context.Logger.LogLine("Starting the state machine");
            //TODO: add code to start the state machine
            context.Logger.LogLine("State machine started");

            return(result);
        }
Ejemplo n.º 30
0
        private static async Task Main(string[] args)
        {
            const string AWS_ACCESS_KEY_ID     = "AWS_ACCESS_KEY_ID";
            const string AWS_SECRET_ACCESS_KEY = "AWS_SECRET_ACCESS_KEY";

            Console.WriteLine("Hello World!");

            var self = await File.ReadAllBytesAsync("assets\\self.jpg");

            var front = await File.ReadAllBytesAsync("assets\\front.png");

            var back = await File.ReadAllBytesAsync("assets\\back.png");

            var command = new AnalizeDocumentCommand {
                Self = self, Back = back, Front = front
            };

            var region = RegionEndpoint.USEast1;
            var client = new AmazonRekognitionClient(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, region);

            #region Analiza se é documento
            using (var stream = new MemoryStream(command.Back))
            {
                var request = new DetectLabelsRequest {
                    Image = new Image {
                        Bytes = stream
                    }
                };

                var response = await client.DetectLabelsAsync(request);

                var labels = response.Labels;

                foreach (var label in labels)
                {
                    var accuracy = Accuracy.GetAccuracy(label.Confidence);

                    if (DocumentTypes.IsValidDocument(label.Name))
                    {
                        if (accuracy.IsLow)
                        {
                            Console.WriteLine("Não é um documento");
                        }
                        if (accuracy.IsMedium)
                        {
                            Console.WriteLine("Pode ser que seja um documento");
                        }
                        if (accuracy.IsHigh)
                        {
                            Console.WriteLine("É muito provável que seja um documento");
                        }

                        break;
                    }
                }
            }
            #endregion

            #region Compara com a self
            using (var source = new MemoryStream(command.Self))
                using (var target = new MemoryStream(command.Front))
                {
                    var request = new CompareFacesRequest {
                        SourceImage = new Image {
                            Bytes = source
                        }, TargetImage = new Image {
                            Bytes = target
                        }
                    };

                    var response = await client.CompareFacesAsync(request);

                    var faces = response.FaceMatches;

                    if (faces.Count != 1)
                    {
                        Console.WriteLine("Resultado inconsistente");
                    }

                    var accuracy = Accuracy.GetAccuracy(faces.First().Similarity);

                    if (accuracy.IsLow)
                    {
                        Console.WriteLine("Esse documento não da mesma pessoa");
                    }
                    if (accuracy.IsMedium)
                    {
                        Console.WriteLine("Pode ser que este documento seja da mesma pessoa");
                    }
                    if (accuracy.IsHigh)
                    {
                        Console.WriteLine("É muito provável que este documento seja da mesma pessoa");
                    }
                }
            #endregion

            #region Verifica se é do portador válido
            using (var stream = new MemoryStream(command.Back))
            {
                var request = new DetectTextRequest {
                    Image = new Image {
                        Bytes = stream
                    }
                };

                var response = await client.DetectTextAsync(request);

                var texts = response.TextDetections;

                foreach (var text in texts)
                {
                    var accuracy = Accuracy.GetAccuracy(text.Confidence);

                    if ("CPF".Equals(text.DetectedText, StringComparison.InvariantCultureIgnoreCase))
                    {
                        if (accuracy.IsLow)
                        {
                            Console.WriteLine("não contém um número de CPF");
                        }
                        if (accuracy.IsMedium)
                        {
                            Console.WriteLine("Pode ser que contenha um número de CPF");
                        }
                        if (accuracy.IsHigh)
                        {
                            Console.WriteLine("É muito provável que contenha um número de CPF");
                        }

                        break;
                    }
                }
            }
            #endregion

            Console.WriteLine("That's all folks!");
        }