public static async Task RunAsync([BlobTrigger("resumeuploadcontainer/{name}", Connection = "AzureWebJobsStorage")] Stream myBlob, string name, Uri uri, TraceWriter log) { log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes"); string[] spiltfilenamewithext = name.Split('.'); string filenamewithoutextension = spiltfilenamewithext[0]; if (IsValidExtension(spiltfilenamewithext[spiltfilenamewithext.Length - 1])) { PdfReader pdfReader = new PdfReader(myBlob); ResumeDocModel resumeDocModel = new ResumeDocModel { DocumentName = filenamewithoutextension, DocumentUri = uri.AbsoluteUri }; CognitiveTextAnalytics.TextAnalytics(pdfReader, log, resumeDocModel); string[] resumeKeysArray = ResumeKeyWords.Split(new string[] { "," }, StringSplitOptions.None); bool isResumeDoc = false; foreach (string keys in resumeKeysArray) { isResumeDoc = resumeDocModel.keyPhraseBatchResult.KeyPhrases.Any(s => s.IndexOf(keys, StringComparison.OrdinalIgnoreCase) >= 0); if (isResumeDoc) { resumeDocModel.docType = DocType.Resume; break; } } if (!isResumeDoc) { resumeDocModel.docType = DocType.Others; } List <CloudBlockBlob> cloudBlocks = DocumentExtraction.ExtractImageUploadToAzure(pdfReader, myBlob, log, filenamewithoutextension, resumeDocModel); if (cloudBlocks.Count > 0) { log.Info("===== Computer Vision Analysis Started ======"); ImageBatchResult imageBatchResult = new ImageBatchResult(); foreach (CloudBlockBlob cloudBlockBlob in cloudBlocks) { string blobUrlWithSAS = AzStorage.GetBlobSasUri(cloudBlockBlob); await CognitiveComputerVision.VisionAnalyticsAsync(log, blobUrlWithSAS, imageBatchResult); } resumeDocModel.imageBatchResult = imageBatchResult; log.Info("===== Computer Vision Analysis Completed ======"); } else { log.Info("The Document doesn't not have any Images to analyze"); } CosmosDB cosmosDB = new CosmosDB(); cosmosDB.CreateDocumentDB().Wait(); await cosmosDB.UpdInsResumeDocumentAsync(resumeDocModel); } else { log.Info("Please upload the valid Document in " + string.Join(",", _validExtensions) + " Extension"); } }
public static List <CloudBlockBlob> ExtractImageUploadToAzure(PdfReader pdfReader, Stream blob, TraceWriter log, string name, ResumeDocModel resumeDocModel) { RandomAccessFileOrArray raf = new RandomAccessFileOrArray(blob); List <CloudBlockBlob> cloudBlockBlobs = new List <CloudBlockBlob>(); AzureStorageModel azureStorageModel = AzStorage.GetBlobDirectoryList(name); if (azureStorageModel.IblobList.Count() > 0) { foreach (IListBlobItem listBlobItem in azureStorageModel.IblobList) { CloudBlockBlob cloudBlob = listBlobItem as CloudBlockBlob; cloudBlob.DeleteIfExists(); } } try { for (int pageNumber = 1; pageNumber <= pdfReader.NumberOfPages; pageNumber++) { PdfDictionary pg = pdfReader.GetPageN(pageNumber); List <Image> IlistImages = GetImagesFromPdfDict(pg, pdfReader); EncoderParameters parms = new EncoderParameters(1); parms.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 90L); var encoder = ImageCodecInfo.GetImageEncoders().First(c => c.FormatID == ImageFormat.Jpeg.Guid); foreach (Image image in IlistImages) { MemoryStream ms = new MemoryStream(); CloudBlockBlob cloudBlob = azureStorageModel.Container.GetBlockBlobReference(name + "/" + Guid.NewGuid() + ".jpeg"); image.Save(ms, encoder, parms); ms.Seek(0, SeekOrigin.Begin); // otherwise you'll get zero byte files cloudBlob.UploadFromStream(ms); cloudBlockBlobs.Add(cloudBlob); resumeDocModel.imageDetails.imageURLList.Add(cloudBlob.Uri.ToString()); } } } catch { throw; } finally { pdfReader.Close(); } return(cloudBlockBlobs); }