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.