public async Task<string> ExtraerkeyPhrasesFromPDFAsync(TraceWriter log, string PDFNameGuid) { string Horainicio = string.Format("{0:HH:mm:ss tt}", DateTime.Now); log.Info(Horainicio.ToString()); Stopwatch sw = new Stopwatch(); sw.Start(); var result = new StringBuilder(); string keyPhrasesGoogle = string.Empty; string classifyTextGoogle = string.Empty; string textoPagina; string keyPhrases = string.Empty; int numeroPagina = 1; string separador = ","; string jsonRegistro; int cantidadLlamadasAPI = 0; var TiempoEspera = Environment.GetEnvironmentVariable("CustomTrheadSleep"); var TiempoEsperaInt = Convert.ToInt32(TiempoEspera); log.Info("Tiempo Espera: " + TiempoEsperaInt.ToString()); foreach (PdfSharp.Pdf.PdfPage page in doc.Pages) { result.Length = 0; ExtractText(ContentReader.ReadContent(page), result); textoPagina = AnalizadorTexto.RemoveSpecialCharacters(result.ToString()); Dictionary<int, string> subPaginas = splitPagina(textoPagina); foreach (KeyValuePair<int, string> entry in subPaginas) { try { if (cantidadLlamadasAPI == 3) { Thread.Sleep(TiempoEsperaInt); cantidadLlamadasAPI = 0; } else { cantidadLlamadasAPI = cantidadLlamadasAPI + 1; MultiLanguageBatchInput classifyTextGoogleML = new MultiLanguageBatchInput( new List<MultiLanguageInput>() { new MultiLanguageInput("es", numeroPagina.ToString(), entry.Value.ToString()) }); var texto = classifyTextGoogleML.Documents[0].Text.ToString(); //try { classifyTextGoogle = AnalizadorTexto.Clasificador(texto.Replace(".", ""), log);} //catch (Exception ex) { log.Info("Error en API Google Classify: " + ex.Message.ToString()); } try { keyPhrasesGoogle = AnalizadorTexto.ProcesarGoogle(texto.Replace(".", ""), log); } catch (Exception ex) { log.Info("Error en API Google Process: " + ex.Message.ToString()); } //TODO: DEJAR SOLO ANALISIS ENTIDADES EN ESPAÑOLS //try { keyPhrases = AnalizadorTexto.AnalizarTextoJson(entry.Value.ToString(), numeroPagina.ToString(), log); } //catch (Exception ex) { log.Info("Error en API AnalizarTextoJson: " + ex.Message.ToString()); } Thread.Sleep(TiempoEsperaInt); } //keyPhrases = AnalizadorTexto.AnalizarTexto(entry.Value.ToString(), numeroPagina.ToString(), log); //este se usa cuando el resultado va a una DB } catch (Exception ex) { log.Info(ex.Message); } var idPDF = PDFNameGuid.ToString() + "-" + doc.Guid.ToString(); keyPhrases = ""; classifyTextGoogle = ""; Pliego pliego = new Pliego(idPDF, numeroPagina, entry.Key, keyPhrases, keyPhrasesGoogle ,classifyTextGoogle); await InsertarKeyPhrase(pliego, log); //GuardarClasificador(pliego, log); log.Info("Se procesó el bloque : " + entry.Key.ToString() + " de la página " + numeroPagina.ToString() + ". Total de páginas: " + doc.PageCount.ToString() ); } numeroPagina++; } //InsertarEnTxt(result1.ToString()); EjecutarSPEliminarVacios(log); string HoraFin = string.Format("{0:HH:mm:ss tt}", DateTime.Now); sw.Stop(); var tiempoPasado = sw.Elapsed; log.Info(tiempoPasado.ToString()); return result.ToString(); }
public async Task <string> ExtraerkeyPhrasesFromPDF(TraceWriter log) { var result = new StringBuilder(); string keyPhrases = string.Empty; string keyPhrasesGoogle = string.Empty; string classifyTextGoogle = string.Empty; int numeroPagina = 1; string separador = ","; int cantidadLlamadasAPI = 0; foreach (var page in doc.Pages) { ExtractText(ContentReader.ReadContent(page), result); Dictionary <int, string> subPaginas = splitPagina(result.ToString()); foreach (KeyValuePair <int, string> entry in subPaginas) { try { if (cantidadLlamadasAPI == 3) { Thread.Sleep(400); cantidadLlamadasAPI = 0; } else { cantidadLlamadasAPI = cantidadLlamadasAPI + 1; classifyTextGoogle = AnalizadorTexto.Clasificador(entry.Value.ToString().Replace(".", "")); keyPhrasesGoogle = AnalizadorTexto.ProcesarGoogle(entry.Value.ToString().Replace(".", "")); keyPhrases = AnalizadorTexto.AnalizarTexto(entry.Value.ToString().Replace(".", ""), numeroPagina.ToString()); Thread.Sleep(400); } } catch (Exception ex) { log.Info("exception 2 " + ex.Message + " // String Entry Value: " + entry.Value.ToString().Replace(".", "")); } log.Info("Se procesó el bloque : " + entry.Key.ToString() + " de la página " + numeroPagina.ToString() + ". Total de páginas: " + doc.PageCount.ToString()); log.Info(keyPhrases.Length.ToString()); var guardarKeys = GuardarKeys(doc.Guid.ToString(), numeroPagina, entry.Key, keyPhrases, keyPhrasesGoogle.ToString(), log); var guardarClasificador = GuardarClasificador(doc.Guid.ToString(), classifyTextGoogle, log); if (guardarKeys && guardarClasificador) { log.Info("Guardó Ok"); } else { log.Info("Error"); } } numeroPagina++; } // InsertarEnTxt(result1.ToString()); return(result.ToString()); }