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); } }
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) { } }
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"); }; }
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>()); } }
// 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); }
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); } }
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))); }
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"); }
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)); }
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(); }
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()); } }
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"; } }
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); }
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"); } }
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)); }
// 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); } }
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); }
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); } }
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); }
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"); }
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; } }
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); }
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!"); }