Como extrair dados e tabelas estruturados de PDF em .NET

Como extrair dados e tabelas estruturados de PDF em .NET

A extração de tabelas e dados estruturados de PDFs é uma tarefa comum para analistas, contabilistas e qualquer pessoa que trabalhe com relatórios ou declarações financeiras. Aspose.PDF.Plugin para .NET oferece opções programáticas para detectar, parcelar e exportar tábuas como texto plano, CSV ou JSON.

Identificação de tabelas em texto PDF

  • Simples PDF: Tabelas com fronteiras claras de células (tab, espaço ou delimitadores de linha) são mais fáceis de extrair.
  • Inspecção visual: Extrair texto bruto ou puro e inspecionar para padrões de linha/coluna consistentes.
  • Heuristic Parsing: Use lógica (por exemplo, expressões regulares, delimitadores) para identificar prováveis linhas e colunas do texto extraído.

Exemplo: Exportação de tabelas como CSV

using Aspose.Pdf.Plugins;
using System.IO;

string input = @"C:\Docs\financial-report.pdf";
var extractor = new TextExtractor();
var options = new TextExtractorOptions(TextExtractorOptions.TextFormattingMode.Pure);
options.AddInput(new FileDataSource(input));
string extracted = extractor.Process(options).ResultCollection[0].ToString();

// Simple parsing: Assume rows separated by '\n', columns by tabs or spaces
var rows = extracted.Split('\n');
using (var writer = new StreamWriter(@"C:\Docs\extracted-table.csv"))
{
    foreach (var row in rows)
    {
        var columns = row.Split(new[] {'\t', ' '}, StringSplitOptions.RemoveEmptyEntries);
        writer.WriteLine(string.Join(",", columns));
    }
}

Exemplo: Exportação de tabelas como JSON

using System.Text.Json;
var table = rows
    .Where(r => r.Trim().Length > 0)
    .Select(r => r.Split(new[] {'\t', ' '}, StringSplitOptions.RemoveEmptyEntries))
    .ToList();

File.WriteAllText(@"C:\Docs\extracted-table.json", JsonSerializer.Serialize(table));

Limitações e dicas avançadas

  • Merged/Spanned Cells: A maior parte da extração programática não pode detectar com confiança células misturadas ou multi-células; uma revisão manual ou lógica personalizada pode ser necessária.
  • Tabelas complexas: Tabelas com imagens, gráficos ou layouts irregulares exigem parsagem avançada ou uma ferramenta de extração de tabela visual.
  • Exactitude: A extração é melhor com tabelas simples e bem estruturadas; sempre revisar a saída e ajustar a lógica de parcelamento para os seus dados.

Casos de Uso

  • Análise Financeira e Auditoria (Ledgers de Extracto, Tabelas de Despesas)
  • Dados de pesquisa e feedback (tábulos de resposta em massa)
  • Migração de dados de PDFs de legado para bancos ou Excel

Perguntas frequentes

**Q: As células misturadas podem ser detectadas ou manipuladas automaticamente?**A: Não confiável – as células misturadas geralmente requerem correção manual ou revisão visual após a extração.

**Q: A extração de dados é sempre 100% precisa?**A: Não – os resultados dependem da estrutura da mesa, formatação e PDF Sempre revisar tabelas extraídas e, se necessário, limpar usando regras ou scripts personalizados.

**Q: Qual é o melhor modo para a extração de mesa?**A: Comece com o modo Puro para tabelas estruturadas.O modo bruto pode ser útil para a mineração de dados ou a heurística personalizada.

Pro Sugestão: Para repetir extrações, limpe a sua lógica para cada modelo de relatório Cv e JSON para a máxima flexibilidade.

 Português