예제 #1
0
        /// <summary>
        /// Ejecuta patrones los extracción de textos
        /// almacenados.
        /// </summary>
        /// <param name="pdf"></param>
        /// <returns></returns>
        public PdfTagExtractionResult Extract(PdfUnstructuredDoc pdf)
        {
            PdfTagExtractionResult result = new PdfTagExtractionResult()
            {
                Pdf          = pdf,
                MetadataType = Type.GetType(MetadataName)
            };

            _Converters = new Dictionary <Type, object>();

            IHierarchySet hierarchySet = GetHierarchySet();

            foreach (var page in pdf.PdfUnstructuredPages)
            {
                ExtractFromRectangles(page.WordGroups,
                                      result.MetadataType, hierarchySet, result);

                ExtractFromRectangles(page.Lines,
                                      result.MetadataType, hierarchySet, result, "LinesInfos");

                ExtractFromText(result.MetadataType, result, page, hierarchySet);

                ExtractFromTextStrings(page.TextStringGroups,
                                       result.MetadataType, hierarchySet, result);
            }

            result.Converters = _Converters;

            result.GetMetadata();

            return(result);
        }
        /// <summary>
        /// Ejecuta los patrones de extracción de textos
        /// almacenados.
        /// </summary>
        /// <param name="pdf">Archivo PDF sobre el que extraer.</param>
        /// <returns></returns>
        public PdfTagExtractionResult Extract(PdfUnstructuredDoc pdf)
        {
            PdfTagExtractionResult result = new PdfTagExtractionResult()
            {
                Pdf          = pdf,
                MetadataType = Type.GetType(MetadataName)
            };

            _Converters = new Dictionary <Type, object>();

            IHierarchySet hierarchySet = GetHierarchySet();

            PdfPatternsPage = new Dictionary <int, List <PdfTagPattern> >();
            foreach (PdfTagPattern pattern in PdfPatterns) // Evitar que los bucles de extracción recorran siempre todos los patrones idependientemente del número de página.
            {
                if (PdfPatternsPage.ContainsKey(pattern.PdfPageN))
                {
                    PdfPatternsPage[pattern.PdfPageN].Add(pattern);
                }
                else
                {
                    PdfPatternsPage[pattern.PdfPageN] = new List <PdfTagPattern>()
                    {
                        pattern
                    }
                };
            }

            foreach (var page in pdf.PdfUnstructuredPages)
            {
                ExtractFromRectangles(page.WordGroups,
                                      result.MetadataType, hierarchySet, result, page.PdfPageN);

                ExtractFromRectangles(page.Lines,
                                      result.MetadataType, hierarchySet, result, page.PdfPageN, "LinesInfos");

                ExtractFromText(result.MetadataType, result, page, hierarchySet);

                ExtractFromColorFontText(page.ColorFontWordGroups,
                                         result.MetadataType, hierarchySet, result, page.PdfPageN);
            }

            result.Converters = _Converters;

            result.GetMetadata();

            return(result);
        }