Extracción de texto

Extracción de texto

Aspose.PDF FOSS for .NET proporciona varios mecanismos para extraer texto de páginas PDF. TextFragmentAbsorber es la herramienta principal — escanea el contenido de la página y devuelve objetos TextFragment estructurados con información de posición, fuente y estilo.


Extracción básica de texto

TextAbsorber extrae todo el texto de una página o documento como una cadena única.

using var doc = Document.Open(pdfBytes);

var absorber = new TextAbsorber();
doc.Pages[1].Accept(absorber);

string pageText = absorber.Text;

Extrayendo fragmentos de texto

TextFragmentAbsorber proporciona resultados estructurados. Cada TextFragment incluye el texto extraído, su posición en la página y los detalles de la fuente.

using var doc = Document.Open(pdfBytes);

var absorber = new TextFragmentAbsorber();
doc.Pages[1].Accept(absorber);

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Text: {fragment.Text}");
    Console.WriteLine($"Position: ({fragment.Position.XIndent}, {fragment.Position.YIndent})");
    Console.WriteLine($"Font: {fragment.TextState.Font.FontName}");
}

Búsqueda con expresiones regulares

Pase un patrón regex a TextFragmentAbsorber para encontrar texto específico.

var absorber = new TextFragmentAbsorber(@"\d{3}-\d{2}-\d{4}");
doc.Pages.Accept(absorber);  // Search all pages

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found: {fragment.Text}");
}

Segmentos de texto

Cada TextFragment puede contener varios objetos TextSegment cuando el texto abarca diferentes ejecuciones de fuente.

foreach (var fragment in absorber.TextFragments)
{
    foreach (var segment in fragment.Segments)
    {
        Console.WriteLine($"Segment: {segment.Text}, Font: {segment.TextState.Font.FontName}");
    }
}

Gestión de fuentes

FontRepository proporciona métodos para encontrar y cargar fuentes.

var font = FontRepository.FindFont("Helvetica");

Construcción de párrafos de texto

TextParagraph permite construir bloques de texto multilínea para insertarlos en una página.

var paragraph = new TextParagraph();
paragraph.AppendLine(new TextFragment("First line"));
paragraph.AppendLine(new TextFragment("Second line"));

Consejos y mejores prácticas

  • Use TextFragmentAbsorber cuando necesite datos de posición y fuente; use TextAbsorber para la extracción de texto sin formato.
  • Acepte el absorbente en una sola página para obtener resultados más rápidos, o en doc.Pages para buscar en todo el documento.
  • La búsqueda con expresiones regulares es sensible a mayúsculas y minúsculas por defecto — use el prefijo (?i) para coincidencias sin distinción de mayúsculas.
  • Verifique TextState.Font.IsEmbedded para determinar si una fuente está incrustada en el PDF.
  • Para documentos grandes, procese las páginas una a una para gestionar el uso de memoria.

Problemas comunes

ProblemaCausaSolución
El texto extraído está distorsionadoEl PDF usa una codificación no estándar o un mapeo de fuentes CIDVerifique la incrustación de fuentes; algunos PDFs escaneados requieren OCR
No se encontraron fragmentos de textoEl contenido de la página es una imagen, no textoUtilice una herramienta OCR para convertir primero las páginas de imagen a texto
La expresión regular no devuelve coincidenciasEl patrón no tiene en cuenta los espacios insertados por el diseño de texto del PDFNormalice los espacios o use un patrón más flexible
TextState.Font es nuloFalta el recurso de fuente en el PDFRealice verificaciones de nulos al inspeccionar las propiedades de la fuente

Preguntas frecuentes

¿Puedo extraer texto de una región específica de una página?

Sí. Establezca TextFragmentAbsorber.TextSearchOptions.Rectangle para limitar la búsqueda a un área específica de la página.

¿La extracción de texto preserva el orden de lectura?

La biblioteca devuelve texto en orden de flujo de contenido. Para diseños de varias columnas, es posible que necesite ordenar los fragmentos por posición.

¿Puedo extraer texto de todas las páginas a la vez?

Sí. Llame doc.Pages.Accept(absorber) para buscar en cada página del documento.


Resumen de la referencia API

Clase / MétodoDescripción
TextAbsorberExtrae todo el texto como una única cadena
TextFragmentAbsorberExtrae fragmentos de texto estructurados con datos de posición y fuente
TextFragmentUna ejecución de texto con posición, estado del texto y segmentos
TextFragment.TextLa cadena de texto extraída
TextFragment.PositionCoordenadas en la página
TextFragment.TextStateInformación de fuente, tamaño y color
TextFragment.SegmentsSub‑ejecutaciones dentro del fragmento
TextParagraphConstructor para bloques de texto multilínea
TextStatePropiedades de nombre de fuente, tamaño, color y estilo
FontRepositoryBúsqueda y carga estática de fuentes
FontRepository.FindFontBuscar una fuente por nombre

Ver también

 Español