Comment extraire les données de tableau d'un fichier PDF en C#
Comment extraire des données d'un PDF en .NET
IronPDF simplifie l'extraction de texte, de tableaux, de champs de formulaire et de pièces jointes à partir de documents PDF en .NET avec seulement quelques lignes de code, idéal pour automatiser le traitement des factures, créer des bases de connaissances ou générer des rapports sans analyse complexe.
Les documents PDF sont partout dans les entreprises; des exemples modernes incluent les factures, les rapports, les contrats et les manuels. Mais extraire les informations vitales de manière programmatique peut être délicat. Les PDF se concentrent sur l'apparence, pas sur l'accessibilité des données.
Pour les développeurs .NET, IronPDF est une puissante bibliothèque PDF .NET qui facilite l'extraction de données à partir de fichiers PDF. Vous pouvez extraire directement du texte, des tableaux, des champs de formulaire, des images et des pièces jointes à partir de documents PDF. Que vous automatisiez le traitement des factures , constituiez une base de connaissances ou génériez des rapports , cette bibliothèque vous fera gagner un temps précieux.
Ce guide vous guidera à travers des exemples pratiques d'extraction de contenu textuel, de données tabulaires, et de valeurs de champs de formulaire, avec des explications après chaque extrait de code pour que vous puissiez les adapter à vos propres projets.
Comment débuter avec IronPDF?
Pourquoi l'installation est-elle si rapide ?
L'installation IronPDF ne prend que quelques secondes via le gestionnaire de packages NuGet . Ouvrez votre Console de gestionnaire de packages et lancez :
Install-Package IronPdf
Pour les développeurs Windows , l'installation est simple. Si vous déployez votre application sur Linux ou macOS , IronPDF prend également en charge ces plateformes. Vous pouvez même exécuter IronPDF dans des conteneurs Docker ou le déployer sur Azure et AWS .
Quelle est la méthode la plus simple pour extraire du texte ?
Une fois installé, vous pouvez immédiatement commencer à traiter des documents PDF. Voici un exemple minimal en .NET qui démontre la simplicité de l'API d'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)
Ce code charge un PDF et en extrait chaque parcelle de texte . IronPDF gère automatiquement les structures PDF complexes, les données de formulaire, et les encodages qui causent généralement des problèmes avec d'autres bibliothèques. Les données extraites des documents PDF peuvent être enregistrées dans un fichier texte ou traitées ultérieurement pour analyse.
Conseil pratique: Vous pouvez enregistrer le texte extrait dans un fichier .txt pour un traitement ultérieur, ou l'analyser pour remplir des bases de données, des feuilles Excel, ou des bases de connaissances. Cette méthode fonctionne bien pour les rapports, les contrats, ou tout PDF où vous avez juste besoin du texte brut rapidement. Pour des scénarios d'extraction plus avancés, consultez le guide d'analyse complet .
Comment extraire des données de pages PDF spécifiques ?
Pourquoi cibler des pages spécifiques au lieu de tout extraire ?
Les applications réelles nécessitent souvent une extraction de données précise. IronPDF propose plusieurs méthodes pour cibler les informations importantes de pages spécifiques. Pour cet exemple, nous utiliserons le PDF suivant :
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___")
Comment rechercher des informations clés dans un texte extrait ?
Le code suivant extrait des données de pages spécifiques et renvoie les résultats à la console. Cette technique est particulièrement utile lors du traitement de fichiers PDF multipages ou lorsque vous devez diviser des fichiers PDF pour les traiter :
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
Cet exemple montre comment extraire du texte de documents PDF, rechercher des informations clés et le préparer pour le stockage. La méthode ExtractTextFromPage() maintient l'ordre de lecture du document, ce qui la rend parfaite pour les tâches d'analyse de documents et d'indexation de contenu. Pour une manipulation de texte avancée , vous pouvez même rechercher et remplacer du texte dans les fichiers PDF.
Comment extraire les données d'un tableau à partir d'un document PDF ?
Pourquoi l'extraction de tableaux est-elle différente de l'extraction de texte classique ?
Les tableaux dans les fichiers PDF n'ont pas de structure native; ils sont simplement du contenu textuel positionné pour ressembler à des tableaux. IronPDF extrait des données tabulaires tout en préservant la mise en page, afin que vous puissiez les traiter en fichiers Excel ou textes. Pour des scénarios plus complexes impliquant des images dans des fichiers PDF , il peut être nécessaire d' extraire les images séparément.
Comment convertir les tableaux extraits au format 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")
Quels sont les problèmes courants rencontrés lors de l'extraction de tables complexes ?
Les tableaux dans les PDF ne sont généralement que du texte positionné pour ressembler à une grille. Cette vérification aide à déterminer si une ligne appartient à une rangée ou un en-tête de tableau. En filtrant les en-têtes, les pieds de page et les textes non pertinents, vous pouvez extraire des données tabulaires propres d'un PDF, prêtes pour le format CSV ou Excel.
Ce flux de travail fonctionne pour les formulaires PDF , les documents financiers et les rapports. Vous pouvez ensuite convertir les données extraites en fichiers xlsx ou les fusionner dans un fichier zip. Pour les tableaux complexes comportant des cellules fusionnées, il peut être nécessaire d'adapter la logique d'analyse en fonction de la position des colonnes. Lors du traitement de fichiers PDF numérisés , il est conseillé d'utiliser IronOCR pour la reconnaissance de texte.




