Extração de texto

Extração de texto

Aspose.PDF FOSS for .NET provides several mechanisms for extracting text from Páginas em PDF. TextFragmentAbsorber é a ferramenta principal ele digitaliza o conteúdo da página e retornos estruturados TextFragment objetos com posição, fonte e estilo informação.


Extração de texto básico

TextAbsorber Extrair todo o texto de uma página ou documento como uma única cadeia.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Extração de fragmentos de texto

TextFragmentAbsorber Cada um deles fornece resultados estruturados. TextFragment Inclui o texto extraído, a sua posição na página e os pormenores da fonte.

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}");
}

Buscar com expressões regulares

Passe um padrão de regex para TextFragmentAbsorber para encontrar um 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 um. TextFragment podem conter múltiplas TextSegment Objetos quando o texto abrange diferentes tipos de letra.

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

Gestão de fontes

FontRepository fornece métodos para encontrar e carregar fontes.

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

Parágrafos de texto de construção

TextParagraph permite a construção de blocos de texto multi-linhas para inserção em Uma página.

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

Dicas e melhores práticas

  • Utilização: TextFragmentAbsorber quando precisar de dados de posição e fonte; utilizar TextAbsorber para extração de texto simples.
  • Aceitar o absorvente numa única página para obter resultados mais rápidos, ou em uma outra. doc.Pages Para procurar o documento inteiro.
  • A busca de expressões regulares é sensível a maiúsculas por padrão uso (?i) Prefixo para correspondência sem sensibilidade a maiúsculas.
  • Verificação TextState.Font.IsEmbedded Para determinar se uma fonte está incorporada no PDF.
  • Para documentos grandes, processar páginas uma de cada vez para gerenciar o uso da memória.

Problemas comuns

EmissãoCausa da morteCorreção
Texto extraído é distorcido.PDF usa uma codificação não padrão ou mapeamento de fonte CIDVerifique a incorporação de fontes; alguns PDFs digitalizados requerem OCR
Não encontrou fragmentos de texto.O conteúdo da página é uma imagem, não texto.Use uma ferramenta de OCR para converter páginas de imagem em texto primeiro
Regex não retorna correspondênciasPadrão não contabiliza o espaço em branco inserido pelo layout de texto PDFNormalize o espaço branco ou use um padrão mais solto
TextState.Font é nulo.Falta recurso de fonte no PDFManter verificações de nulo ao inspecionar propriedades da fonte

FAQ

Posso extrair texto de uma região específica da página?

Sim, está pronto. TextFragmentAbsorber.TextSearchOptions.Rectangle Para limitar a busca . para uma área específica da página.

A extração de texto preserva a ordem da leitura?

A biblioteca retorna o texto na ordem do fluxo de conteúdo. Para layouts com várias colunas, talvez seja necessário classificar os fragmentos por posição.

Posso extrair texto de todas as páginas ao mesmo tempo?

Sim, liga. doc.Pages.Accept(absorber) Para procurar em todas as páginas do documento.


Resumo de referência da API

Classe / MétodoDescrição:
TextAbsorberExtrair todo o texto como uma única cadeia de caracteres .
TextFragmentAbsorberExtrair fragmentos de texto estruturados com dados de posição e fonte
TextFragmentUm texto executado com posição, estado de texto e segmentos
TextFragment.TextA cadeia de texto extraída
TextFragment.PositionCoordenadas na página
TextFragment.TextStateInformações sobre fonte, tamanho e cor
TextFragment.SegmentsSub-corridas no fragmento
TextParagraphConstruidor para blocos de texto com várias linhas
TextStateNome da fonte, tamanho, cor e propriedades de estilo
FontRepositoryBusca e carregamento de fontes estáticas
FontRepository.FindFontEncontre uma fonte pelo nome

Ver também:

 Português