Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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());
        }