Ir para o conteúdo do rodapé
USANDO O IRONPDF

Como extrair dados de um PDF em .NET

Como extrair dados de um PDF em .NET

O IronPDF simplifica a extração de texto, tabelas, campos de formulário e anexos de documentos PDF em .NET com apenas algumas linhas de código, sendo perfeito para automatizar o processamento de faturas, criar bases de conhecimento ou gerar relatórios sem análises complexas.

Os documentos PDF estão por toda parte no mundo dos negócios; Exemplos modernos incluem faturas, relatórios, contratos e manuais. Mas extrair informações vitais deles programaticamente pode ser complicado. Os PDFs focam-se na aparência das coisas, não na forma como os dados podem ser acedidos.

Para desenvolvedores .NET , o IronPDF é uma poderosa biblioteca .NET para PDF que facilita a extração de dados de arquivos PDF. Você pode extrair texto, tabelas, campos de formulário, imagens e anexos diretamente de documentos PDF. Seja para automatizar o processamento de faturas , criar uma base de conhecimento ou gerar relatórios , esta biblioteca economiza muito tempo.

Este guia irá orientá-lo através de exemplos práticos de extração de conteúdo textual, dados tabulares e valores de campos de formulário, com explicações após cada trecho de código para que você possa adaptá-los aos seus próprios projetos.

Como faço para começar a usar o IronPDF?

Por que a instalação é tão rápida?

A instalação do IronPDF leva apenas alguns segundos através do Gerenciador de Pacotes NuGet . Abra o Console do Gerenciador de Pacotes e execute:

Install-Package IronPdf

Para desenvolvedores do Windows , a instalação é simples. Se você estiver implantando em Linux ou macOS , o IronPDF também é compatível com essas plataformas. Você pode até executar o IronPDF em contêineres Docker ou implantá-lo no Azure e na AWS .

Qual é a maneira mais simples de extrair texto?

Após a instalação, você pode começar imediatamente a processar documentos PDF. Aqui está um exemplo mínimo em .NET que demonstra a simplicidade da API do IronPDF:

using IronPdf;
// Load any PDF document
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all text with one line
string allText = pdf.ExtractAllText();
Console.WriteLine(allText);
using IronPdf;
// Load any PDF document
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all text with one line
string allText = pdf.ExtractAllText();
Console.WriteLine(allText);
Imports IronPdf

' Load any PDF document
Dim pdf = PdfDocument.FromFile("document.pdf")
' Extract all text with one line
Dim allText As String = pdf.ExtractAllText()
Console.WriteLine(allText)
$vbLabelText   $csharpLabel

Este código carrega um PDF e extrai cada trecho de texto . O IronPDF lida automaticamente com estruturas PDF complexas, dados de formulário e codificações que normalmente causam problemas com outras bibliotecas. Os dados extraídos de documentos PDF podem ser salvos em um arquivo de texto ou processados ​​posteriormente para análise.

Dica prática: você pode salvar o texto extraído em um arquivo .txt para processamento posterior ou analisá-lo para preencher bancos de dados, planilhas do Excel ou bases de conhecimento. Este método funciona bem para relatórios, contratos ou qualquer PDF em que você precise apenas do texto bruto rapidamente. Para cenários de extração mais avançados, consulte o guia completo de análise sintática .

Como extrair dados de páginas específicas de um PDF?

Por que direcionar páginas específicas em vez de extrair tudo?

Aplicações do mundo real frequentemente exigem extração de dados precisa. O IronPDF oferece vários métodos para identificar informações valiosas em páginas específicas. Para este exemplo, usaremos o seguinte PDF:

using IronPdf;
// Load PDF from a memory stream if needed
byte[] pdfBytes = File.ReadAllBytes("report.pdf");
var pdfFromStream = PdfDocument.FromBytes(pdfBytes);
// Or load from a URL
var pdfFromUrl = PdfDocument.FromUrl("___PROTECTED_URL_32___");
using IronPdf;
// Load PDF from a memory stream if needed
byte[] pdfBytes = File.ReadAllBytes("report.pdf");
var pdfFromStream = PdfDocument.FromBytes(pdfBytes);
// Or load from a URL
var pdfFromUrl = PdfDocument.FromUrl("___PROTECTED_URL_32___");
Imports IronPdf
' Load PDF from a memory stream if needed
Dim pdfBytes As Byte() = File.ReadAllBytes("report.pdf")
Dim pdfFromStream As PdfDocument = PdfDocument.FromBytes(pdfBytes)
' Or load from a URL
Dim pdfFromUrl As PdfDocument = PdfDocument.FromUrl("___PROTECTED_URL_32___")
$vbLabelText   $csharpLabel

Como faço para pesquisar informações importantes em um texto extraído?

O código a seguir extrai dados de páginas específicas e retorna os resultados para o console. Essa técnica é especialmente útil ao trabalhar com PDFs de várias páginas ou quando você precisa dividir PDFs para processamento:

using IronPdf;
using System;
using System.Text.RegularExpressions;

// Load any PDF document
var pdf = PdfDocument.FromFile("AnnualReport2024.pdf");
// Extract from selected pages
int[] pagesToExtract = { 0, 2, 4 }; // Pages 1, 3, and 5
foreach (var pageIndex in pagesToExtract)
{
    string pageText = pdf.ExtractTextFromPage(pageIndex);
    // Split on 2 or more spaces (tables often flatten into space-separated values)
    var tokens = Regex.Split(pageText, @"\s{2,}");
    foreach (string token in tokens)
    {
        // Match totals, invoice headers, and invoice rows
        if (token.Contains("Invoice") || token.Contains("Total") || token.StartsWith("INV-"))
        {
            Console.WriteLine($"Important: {token.Trim()}");
        }
    }
}
using IronPdf;
using System;
using System.Text.RegularExpressions;

// Load any PDF document
var pdf = PdfDocument.FromFile("AnnualReport2024.pdf");
// Extract from selected pages
int[] pagesToExtract = { 0, 2, 4 }; // Pages 1, 3, and 5
foreach (var pageIndex in pagesToExtract)
{
    string pageText = pdf.ExtractTextFromPage(pageIndex);
    // Split on 2 or more spaces (tables often flatten into space-separated values)
    var tokens = Regex.Split(pageText, @"\s{2,}");
    foreach (string token in tokens)
    {
        // Match totals, invoice headers, and invoice rows
        if (token.Contains("Invoice") || token.Contains("Total") || token.StartsWith("INV-"))
        {
            Console.WriteLine($"Important: {token.Trim()}");
        }
    }
}
Imports IronPdf
Imports System
Imports System.Text.RegularExpressions

' Load any PDF document
Dim pdf = PdfDocument.FromFile("AnnualReport2024.pdf")
' Extract from selected pages
Dim pagesToExtract As Integer() = {0, 2, 4} ' Pages 1, 3, and 5
For Each pageIndex In pagesToExtract
    Dim pageText As String = pdf.ExtractTextFromPage(pageIndex)
    ' Split on 2 or more spaces (tables often flatten into space-separated values)
    Dim tokens = Regex.Split(pageText, "\s{2,}")
    For Each token As String In tokens
        ' Match totals, invoice headers, and invoice rows
        If token.Contains("Invoice") OrElse token.Contains("Total") OrElse token.StartsWith("INV-") Then
            Console.WriteLine($"Important: {token.Trim()}")
        End If
    Next
Next
$vbLabelText   $csharpLabel

Este exemplo mostra como extrair texto de documentos PDF, pesquisar informações importantes e prepará-las para armazenamento. O método ExtractTextFromPage() mantém a ordem de leitura do documento, tornando-o perfeito para tarefas de análise de documentos e indexação de conteúdo. Para manipulação avançada de texto , você pode até mesmo pesquisar e substituir texto em PDFs.

Como extrair dados de tabelas de documentos PDF?

Por que a extração de tabelas é diferente da extração de texto comum?

As tabelas em arquivos PDF não possuem uma estrutura nativa; São simplesmente conteúdos textuais posicionados para parecerem tabelas. O IronPDF extrai dados tabulares preservando o layout, permitindo que você os processe em arquivos Excel ou de texto. Para cenários mais complexos que envolvam imagens em PDFs , pode ser necessário extrair as imagens separadamente.

Como faço para converter tabelas extraídas para o formato CSV?

using IronPdf;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;

var pdf = PdfDocument.FromFile("example.pdf");
string rawText = pdf.ExtractAllText();
// Split into lines for processing
string[] lines = rawText.Split('\n');
var csvBuilder = new StringBuilder();
foreach (string line in lines)
{
    if (string.IsNullOrWhiteSpace(line) || line.Contains("Page"))
        continue;
    string[] rawCells = Regex.Split(line.Trim(), @"\s+");
    string[] cells;
    // If the line starts with "Product", combine first two tokens as product name
    if (rawCells[0].StartsWith("Product") && rawCells.Length >= 5)
    {
        cells = new string[rawCells.Length - 1];
        cells[0] = rawCells[0] + " " + rawCells[1]; // Combine Product + letter
        Array.Copy(rawCells, 2, cells, 1, rawCells.Length - 2);
    }
    else
    {
        cells = rawCells;
    }
    // Keep header or table rows
    bool isTableOrHeader = cells.Length >= 2
                           && (cells[0].StartsWith("Item") || cells[0].StartsWith("Product")
                               || Regex.IsMatch(cells[0], @"^INV-\d+"));
    if (isTableOrHeader)
    {
        Console.WriteLine($"Row: {string.Join("|", cells)}");
        string csvRow = string.Join(",", cells).Trim();
        csvBuilder.AppendLine(csvRow);
    }
}
// Save as CSV for Excel import
File.WriteAllText("extracted_table.csv", csvBuilder.ToString());
Console.WriteLine("Table data exported to CSV");
using IronPdf;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;

var pdf = PdfDocument.FromFile("example.pdf");
string rawText = pdf.ExtractAllText();
// Split into lines for processing
string[] lines = rawText.Split('\n');
var csvBuilder = new StringBuilder();
foreach (string line in lines)
{
    if (string.IsNullOrWhiteSpace(line) || line.Contains("Page"))
        continue;
    string[] rawCells = Regex.Split(line.Trim(), @"\s+");
    string[] cells;
    // If the line starts with "Product", combine first two tokens as product name
    if (rawCells[0].StartsWith("Product") && rawCells.Length >= 5)
    {
        cells = new string[rawCells.Length - 1];
        cells[0] = rawCells[0] + " " + rawCells[1]; // Combine Product + letter
        Array.Copy(rawCells, 2, cells, 1, rawCells.Length - 2);
    }
    else
    {
        cells = rawCells;
    }
    // Keep header or table rows
    bool isTableOrHeader = cells.Length >= 2
                           && (cells[0].StartsWith("Item") || cells[0].StartsWith("Product")
                               || Regex.IsMatch(cells[0], @"^INV-\d+"));
    if (isTableOrHeader)
    {
        Console.WriteLine($"Row: {string.Join("|", cells)}");
        string csvRow = string.Join(",", cells).Trim();
        csvBuilder.AppendLine(csvRow);
    }
}
// Save as CSV for Excel import
File.WriteAllText("extracted_table.csv", csvBuilder.ToString());
Console.WriteLine("Table data exported to CSV");
Imports IronPdf
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.IO

Dim pdf = PdfDocument.FromFile("example.pdf")
Dim rawText As String = pdf.ExtractAllText()
' Split into lines for processing
Dim lines() As String = rawText.Split(ControlChars.Lf)
Dim csvBuilder As New StringBuilder()
For Each line As String In lines
    If String.IsNullOrWhiteSpace(line) OrElse line.Contains("Page") Then
        Continue For
    End If
    Dim rawCells() As String = Regex.Split(line.Trim(), "\s+")
    Dim cells() As String
    ' If the line starts with "Product", combine first two tokens as product name
    If rawCells(0).StartsWith("Product") AndAlso rawCells.Length >= 5 Then
        cells = New String(rawCells.Length - 2) {}
        cells(0) = rawCells(0) & " " & rawCells(1) ' Combine Product + letter
        Array.Copy(rawCells, 2, cells, 1, rawCells.Length - 2)
    Else
        cells = rawCells
    End If
    ' Keep header or table rows
    Dim isTableOrHeader As Boolean = cells.Length >= 2 AndAlso (cells(0).StartsWith("Item") OrElse cells(0).StartsWith("Product") OrElse Regex.IsMatch(cells(0), "^INV-\d+"))
    If isTableOrHeader Then
        Console.WriteLine($"Row: {String.Join("|", cells)}")
        Dim csvRow As String = String.Join(",", cells).Trim()
        csvBuilder.AppendLine(csvRow)
    End If
Next
' Save as CSV for Excel import
File.WriteAllText("extracted_table.csv", csvBuilder.ToString())
Console.WriteLine("Table data exported to CSV")
$vbLabelText   $csharpLabel

Quais são os problemas comuns ao extrair tabelas complexas?

As tabelas em PDFs geralmente são apenas texto posicionado de forma a parecer uma grade. Essa verificação ajuda a determinar se uma linha pertence a uma linha ou cabeçalho de tabela. Ao filtrar cabeçalhos, rodapés e textos irrelevantes, você pode extrair dados tabulares limpos de um PDF, prontos para CSV ou Excel.

Este fluxo de trabalho funciona para formulários em PDF , documentos financeiros e relatórios. Posteriormente, você poderá converter os dados extraídos em arquivos xlsx ou mesclá-los em um arquivo zip. Para tabelas complexas com células mescladas, talvez seja necessário ajustar a lógica de análise com base nas posições das colunas. Ao trabalhar com PDFs digitalizados , considere usar o IronOCR para reconhecimento de texto primeiro.

Planilha do Excel mostrando os dados extraídos dos produtos, com colunas para Item, Quantidade, Preço e Total para os Produtos A, B e C. Dados de tabela extraídos com sucesso de um PDF mostrando informações do produto com quantidades, preços e totais calculados.

Como extrair dados de campos de formulário de PDFs?

Por que extrair e modificar campos de formulário programaticamente?

O IronPDF também permite a extração e modificação de dados de campos de formulário . Isso é particularmente útil ao lidar com formulários PDF preenchíveis que precisam de processamento automatizado:

using IronPdf;
using System.Drawing;
using System.Linq;

var pdf = PdfDocument.FromFile("form_document.pdf");
// Extract form field data
var form = pdf.Form;
foreach (var field in form) // Removed '.Fields' as 'FormFieldCollection' is enumerable
{
    Console.WriteLine($"{field.Name}: {field.Value}");
    // Update form values if needed
    if (field.Name == "customer_name")
    {
        field.Value = "Updated Value";
    }
}
// Save modified form
pdf.SaveAs("updated_form.pdf");
using IronPdf;
using System.Drawing;
using System.Linq;

var pdf = PdfDocument.FromFile("form_document.pdf");
// Extract form field data
var form = pdf.Form;
foreach (var field in form) // Removed '.Fields' as 'FormFieldCollection' is enumerable
{
    Console.WriteLine($"{field.Name}: {field.Value}");
    // Update form values if needed
    if (field.Name == "customer_name")
    {
        field.Value = "Updated Value";
    }
}
// Save modified form
pdf.SaveAs("updated_form.pdf");
Imports IronPdf
Imports System.Drawing
Imports System.Linq

Dim pdf = PdfDocument.FromFile("form_document.pdf")
' Extract form field data
Dim form = pdf.Form
For Each field In form ' Removed '.Fields' as 'FormFieldCollection' is enumerable
    Console.WriteLine($"{field.Name}: {field.Value}")
    ' Update form values if needed
    If field.Name = "customer_name" Then
        field.Value = "Updated Value"
    End If
Next
' Save modified form
pdf.SaveAs("updated_form.pdf")
$vbLabelText   $csharpLabel

Para um gerenciamento de formulários mais avançado, você também pode trabalhar com tipos de campo específicos:

// Work with different form field types
foreach (var field in pdf.Form)
{
    switch (field)
    {
        case TextFormField textField:
            Console.WriteLine($"Text field '{field.Name}': {textField.Value}");
            break;
        case CheckBoxFormField checkBox:
            Console.WriteLine($"Checkbox '{field.Name}': {checkBox.Value}");
            checkBox.Value = true; // Check the box
            break;
        case ComboBoxFormField comboBox:
            Console.WriteLine($"ComboBox '{field.Name}': {comboBox.Value}");
            // Set to first available option
            if (comboBox.Choices.Any())
                comboBox.Value = comboBox.Choices.First();
            break;
    }
}
// Work with different form field types
foreach (var field in pdf.Form)
{
    switch (field)
    {
        case TextFormField textField:
            Console.WriteLine($"Text field '{field.Name}': {textField.Value}");
            break;
        case CheckBoxFormField checkBox:
            Console.WriteLine($"Checkbox '{field.Name}': {checkBox.Value}");
            checkBox.Value = true; // Check the box
            break;
        case ComboBoxFormField comboBox:
            Console.WriteLine($"ComboBox '{field.Name}': {comboBox.Value}");
            // Set to first available option
            if (comboBox.Choices.Any())
                comboBox.Value = comboBox.Choices.First();
            break;
    }
}
' Work with different form field types
For Each field In pdf.Form
    Select Case field
        Case textField As TextFormField
            Console.WriteLine($"Text field '{field.Name}': {textField.Value}")
        Case checkBox As CheckBoxFormField
            Console.WriteLine($"Checkbox '{field.Name}': {checkBox.Value}")
            checkBox.Value = True ' Check the box
        Case comboBox As ComboBoxFormField
            Console.WriteLine($"ComboBox '{field.Name}': {comboBox.Value}")
            ' Set to first available option
            If comboBox.Choices.Any() Then
                comboBox.Value = comboBox.Choices.First()
            End If
    End Select
Next
$vbLabelText   $csharpLabel

Quando devo usar a extração de campos de formulário?

Este trecho de código extrai os valores dos campos de formulário de PDFs e permite atualizá-los programaticamente. Isso facilita o processamento de formulários em PDF e a extração de informações específicas para análise ou geração de relatórios. Isso é útil para automatizar fluxos de trabalho como integração de clientes, processamento de pesquisas ou validação de dados.

Os casos de uso comuns incluem:

  • Automatizando assinaturas digitais
  • Processamento de PDFs protegidos por senha
  • Extração de dados para conformidade com PDF/A
  • Criação de fluxos de trabalho personalizados

![Comparação lado a lado de dois formulários PDF - o formulário original com dados de exemplo (John Doe) à esquerda e um formulário atualizado com novos dados (Valor Atualizado) à direita, demonstrando a extração e modificação de dados em .NET.] Comparação de antes e depois mostrando a extração e modificação bem-sucedidas de dados de formulário PDF usando .NET, com o Console de Depuração do Visual Studio visível na parte inferior exibindo as informações do cliente extraídas.

Quais são os meus próximos passos?

O IronPDF torna a extração de dados de PDFs em .NET prática e eficiente. Você pode extrair texto, tabelas, campos de formulário, imagens e anexos de diversos documentos PDF, incluindo PDFs digitalizados que normalmente exigem processamento OCR adicional.

Seja qual for o seu objetivo — criar uma base de conhecimento, automatizar fluxos de trabalho de relatórios ou extrair dados de PDFs financeiros —, esta biblioteca oferece as ferramentas necessárias para realizar essas tarefas sem a necessidade de cópias manuais ou análises propensas a erros. É simples, rápido e integra-se diretamente aos projetos do Visual Studio. Experimente; Você provavelmente economizará muito tempo e evitará as dores de cabeça comuns ao trabalhar com PDFs.

Para cenários mais avançados, explore:

Comece a usar IronPDF no seu projeto hoje mesmo com um teste gratuito.

Primeiro passo:
green arrow pointer

Pronto para implementar a extração de dados de PDFs em seus aplicativos? IronPDF parece ser a biblioteca .NET ideal para você? Inicie seu teste gratuito para uso comercial. Visite nossa documentação para obter guias completos e referências da API .

Perguntas frequentes

Qual a melhor maneira de extrair texto de documentos PDF usando .NET?

Com o IronPDF, você pode extrair facilmente texto de documentos PDF em aplicações .NET. Ele oferece métodos para recuperar dados de texto de forma eficiente, garantindo que você possa acessar o conteúdo necessário.

O IronPDF consegue processar PDFs digitalizados para extração de dados?

Sim, o IronPDF suporta OCR (Reconhecimento Óptico de Caracteres) para processar e extrair dados de PDFs digitalizados, possibilitando o acesso ao texto mesmo em documentos baseados em imagens.

Como posso extrair tabelas de um PDF usando C#?

O IronPDF oferece recursos para analisar e extrair tabelas de documentos PDF em C#. Você pode usar métodos específicos para identificar e recuperar dados de tabelas com precisão.

Quais são os benefícios de usar o IronPDF para extração de dados de PDFs?

O IronPDF oferece uma solução completa para extração de dados de PDFs, incluindo recuperação de texto, análise de tabelas e OCR para documentos digitalizados. Ele se integra perfeitamente com aplicativos .NET, proporcionando uma maneira confiável e eficiente de lidar com dados de PDFs.

É possível extrair imagens de um PDF usando o IronPDF?

Sim, o IronPDF permite extrair imagens de PDFs. Esse recurso é útil se você precisar acessar e manipular imagens incorporadas em documentos PDF.

Como o IronPDF lida com layouts de PDF complexos durante a extração de dados?

O IronPDF foi projetado para gerenciar layouts de PDF complexos, oferecendo ferramentas robustas para navegar e extrair dados, garantindo que você possa lidar com documentos com formatação e estrutura complexas.

Posso automatizar a extração de dados de PDF em uma aplicação .NET?

Com certeza. O IronPDF pode ser integrado a aplicativos .NET para automatizar a extração de dados de PDFs, otimizando processos que exigem recuperação de dados regular e consistente.

Quais linguagens de programação posso usar com o IronPDF para extrair dados de PDFs?

O IronPDF é usado principalmente com C# no framework .NET, oferecendo amplo suporte e funcionalidades para desenvolvedores que desejam extrair dados de PDFs programaticamente.

O IronPDF suporta a extração de metadados de documentos PDF?

Sim, o IronPDF pode extrair metadados de documentos PDF, permitindo que você acesse informações como o autor, a data de criação e outras propriedades do documento.

Que código de exemplo está disponível para aprender a extrair dados de PDFs com o IronPDF?

O guia do desenvolvedor fornece tutoriais completos de C# com exemplos de código funcionais para ajudá-lo a dominar a extração de dados de PDF usando o IronPDF em seus aplicativos .NET.

O IronPDF é totalmente compatível com a nova versão do .NET 10 e quais são os benefícios disso para a extração de dados?

Sim — o IronPDF é totalmente compatível com o .NET 10, suportando todas as suas melhorias de desempenho, API e tempo de execução, como alocações de memória reduzidas, desvirtualização da interface de array e recursos de linguagem aprimorados. Essas melhorias resultam em fluxos de trabalho de extração de dados de PDF mais rápidos e eficientes em aplicativos C#.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim