Passer au contenu du pied de page
UTILISATION DE IRONPDF

Comment extraire les données de tableau d'un fichier PDF en C#

Dans de nombreuses industries, les fichiers PDF sont le format de référence pour partager des documents structurés tels que des rapports, des factures et des tableaux de données. Cependant, extraire des données des PDF, surtout lorsqu'il s'agit de tableaux, peut être difficile en raison de la nature du format PDF. Contrairement aux formats de données structurés, les PDF sont conçus principalement pour la présentation, pas pour l'extraction de données.

Cependant, avec IronPDF, une puissante bibliothèque C# PDF .NET, vous pouvez facilement extraire des données structurées comme des tableaux directement à partir des PDFs et les traiter dans vos applications .NET. Cet article vous guidera étape par étape sur la façon d'extraire des données tabulaires à partir de fichiers PDF en utilisant IronPDF.

Quand avez-vous besoin d'extraire des tables à partir de documents PDF ?

Les tableaux sont un moyen pratique de structurer et d'afficher vos données, que ce soit pour la gestion d'inventaire, la saisie de données, l'enregistrement de données telles que la pluviométrie, etc. Ainsi, il peut également y avoir de nombreuses raisons de devoir extraire des tableaux et des données tabulaires à partir de documents PDF. Certains des cas d'utilisation les plus courants comprennent :

  • Automatisation de la saisie de données : L'extraction de données des tableaux dans les rapports ou factures PDF peut automatiser des processus tels que le remplissage de bases de données ou de feuilles de calcul.
  • Analyse de données : Les entreprises reçoivent souvent des rapports structurés au format PDF. L'extraction des tableaux vous permet d'analyser ces données de manière programmée.
  • Conversion de documents : L'extraction de données tabulaires dans des formats plus accessibles comme Excel ou CSV permet une manipulation, un stockage et un partage plus faciles.
  • Audit et conformité : Pour les dossiers juridiques ou financiers, l'extraction programmée de données tabulaires à partir de documents PDF peut aider à automatiser les audits et garantir la conformité.

Comment fonctionnent les tableaux PDF ?

Le format de fichier PDF n'offre aucune capacité native pour stocker des données dans des formats structurés comme des tableaux. Le tableau utilisé dans l'exemple d'aujourd'hui a été créé en HTML, avant d'être converti au format PDF. Les tableaux sont rendus sous forme de texte et de lignes, donc l'extraction des données tabulaires nécessite souvent une certaine analyse et interprétation du contenu, sauf si vous utilisez un logiciel OCR, tel que IronOCR.

Comment extraire des données tabulaires d'un fichier PDF en C#

Avant d'explorer comment IronPDF peut s'attaquer à cette tâche, examinons d'abord un outil en ligne capable de gérer l'extraction PDF. Pour extraire un tableau d'un document PDF à l'aide d'un outil PDF en ligne, suivez les étapes ci-dessous :

  1. Accédez à l'outil d'extraction PDF en ligne gratuit
  2. Téléchargez le PDF contenant le tableau
  3. Visualisez et téléchargez les résultats

Étape un : Accédez à l'outil d'extraction PDF en ligne gratuit

Aujourd'hui, nous utiliserons Docsumo comme exemple d'outil PDF en ligne. Docsumo est une IA de document PDF en ligne qui offre un outil gratuit d'extraction de tableaux PDF.

Comment extraire des données tabulaires d'un fichier PDF en C&num : Figure 1

Étape deux : Téléchargez le PDF contenant le tableau

Maintenant, cliquez sur le bouton "Télécharger le fichier" pour télécharger votre fichier PDF pour extraction. L'outil commencera immédiatement à traiter votre PDF.

Comment extraire des données tabulaires d'un fichier PDF en C&num : Figure 2

Étape trois : Visualisez et téléchargez les résultats

Une fois que Docsumo a terminé le traitement du PDF, il affichera le tableau extrait. Vous pouvez ensuite apporter des modifications à la structure du tableau, telles que l'ajout et la suppression de lignes. Ici, vous pouvez télécharger le tableau soit comme un autre PDF, soit en XLS, JSON ou Texte.

Comment extraire des données tabulaires d'un fichier PDF en C&num : Figure 3

Extraire des données tabulaires à l'aide de IronPDF

IronPDF vous permet d'extraire des données, du texte et des graphiques à partir de PDFs, qui peuvent ensuite être utilisés pour reconstruire des tables de manière programmatique. Pour ce faire, vous devrez d'abord extraire le contenu textuel du tableau PDF, puis utiliser ce texte pour analyser le tableau en lignes et colonnes. Avant de commencer à extraire des tableaux, voyons comment fonctionne la méthode d'IronPDF ExtractAllText() en extrayant les données d'un tableau :

using IronPDF;

class Program
{
    static void Main(string[] args)
    {
        // Load the PDF document
        PdfDocument pdf = PdfDocument.FromFile("example.pdf");

        // Extract all text from the PDF
        string text = pdf.ExtractAllText();

        // Output the extracted text to the console
        Console.WriteLine(text);
    }
}
using IronPDF;

class Program
{
    static void Main(string[] args)
    {
        // Load the PDF document
        PdfDocument pdf = PdfDocument.FromFile("example.pdf");

        // Extract all text from the PDF
        string text = pdf.ExtractAllText();

        // Output the extracted text to the console
        Console.WriteLine(text);
    }
}
Imports IronPDF

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Load the PDF document
		Dim pdf As PdfDocument = PdfDocument.FromFile("example.pdf")

		' Extract all text from the PDF
		Dim text As String = pdf.ExtractAllText()

		' Output the extracted text to the console
		Console.WriteLine(text)
	End Sub
End Class
$vbLabelText   $csharpLabel

Comment extraire des données tabulaires d'un fichier PDF en C&num : Figure 4

Dans cet exemple, nous avons chargé le document PDF en utilisant la classe PdfDocument, puis utilisé la méthode ExtractAllText() pour extraire tout le texte du document, avant de finalement afficher le texte sur la console.

Extraction de données tabulaires depuis le texte avec IronPDF

Après avoir extrait le texte du PDF, le tableau apparaîtra comme une série de lignes et de colonnes en texte brut. Vous pouvez diviser ce texte en fonction des sauts de ligne (\n) et ensuite diviser encore plus les lignes en colonnes en fonction d'un espacement constant ou de délimiteurs tels que des virgules ou des tabulations. Voici un exemple de base sur la façon d'analyser le tableau à partir du texte :

using IronPDF;
using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        // Load the PDF document
        PdfDocument pdf = PdfDocument.FromFile("table.pdf");

        // Extract all text from the PDF
        string text = pdf.ExtractAllText();

        // Split the text into lines (rows)
        string[] lines = text.Split('\n');

        foreach (string line in lines)
        {
            // Split the line into columns using the tab character
            string[] columns = line.Split('\t').Where(col => !string.IsNullOrWhiteSpace(col)).ToArray();
            Console.WriteLine("Row:");

            foreach (string column in columns)
            {
                Console.WriteLine("  " + column); // Output each column in the row
            }
        }
    }
}
using IronPDF;
using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        // Load the PDF document
        PdfDocument pdf = PdfDocument.FromFile("table.pdf");

        // Extract all text from the PDF
        string text = pdf.ExtractAllText();

        // Split the text into lines (rows)
        string[] lines = text.Split('\n');

        foreach (string line in lines)
        {
            // Split the line into columns using the tab character
            string[] columns = line.Split('\t').Where(col => !string.IsNullOrWhiteSpace(col)).ToArray();
            Console.WriteLine("Row:");

            foreach (string column in columns)
            {
                Console.WriteLine("  " + column); // Output each column in the row
            }
        }
    }
}
Imports Microsoft.VisualBasic
Imports IronPDF
Imports System
Imports System.Linq

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Load the PDF document
		Dim pdf As PdfDocument = PdfDocument.FromFile("table.pdf")

		' Extract all text from the PDF
		Dim text As String = pdf.ExtractAllText()

		' Split the text into lines (rows)
		Dim lines() As String = text.Split(ControlChars.Lf)

		For Each line As String In lines
			' Split the line into columns using the tab character
			Dim columns() As String = line.Split(ControlChars.Tab).Where(Function(col) Not String.IsNullOrWhiteSpace(col)).ToArray()
			Console.WriteLine("Row:")

			For Each column As String In columns
				Console.WriteLine("  " & column) ' Output each column in the row
			Next column
		Next line
	End Sub
End Class
$vbLabelText   $csharpLabel

Comment extraire des données tabulaires d'un fichier PDF en C&num : Figure 5

Dans cet exemple, nous avons suivi les mêmes étapes qu'auparavant pour charger notre document PDF et extraire le texte. Ensuite, en utilisant text.Split('\n') nous divisons le texte extrait en lignes en fonction des sauts de ligne et stockons les résultats dans le tableau lines. Une boucle foreach est ensuite utilisée pour parcourir les lignes du tableau, où line.Split('\t') est utilisé pour diviser encore plus les lignes en colonnes à l'aide du caractère de tabulation '\t' comme délimiteur. La prochaine partie du tableau de colonnes, Where(col => !string.IsNullOrWhiteSpace(col)).ToArray() filtre les colonnes vides qui peuvent apparaître à cause d'espaces supplémentaires, puis ajoute les colonnes au tableau des colonnes.

Enfin, nous écrivons le texte dans la fenêtre de sortie de la console avec une structure de base pour les lignes et les colonnes.

Exporter les données tabulaires extraites vers CSV

Maintenant que nous avons couvert comment extraire des tableaux à partir de fichiers PDF, examinons ce que nous pouvons faire avec ces données extraites. Exporter le tableau extrait sous forme de fichier CSV est un moyen utile de gérer les données tabulaires et d'automatiser des tâches telles que la saisie de données. Pour cet exemple, nous avons rempli un tableau avec des données simulées, dans ce cas, la quantité de pluie quotidienne en une semaine, extrait le tableau du PDF, puis exporté celui-ci vers un fichier CSV.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using IronPDF;

class Program
{
    static void Main(string[] args)
    {
        string pdfPath = "table.pdf";
        string csvPath = "output.csv";

        // Extract and parse table data
        var tableData = ExtractTableDataFromPdf(pdfPath);

        // Write the extracted data to a CSV file
        WriteDataToCsv(tableData, csvPath);
        Console.WriteLine($"Data extracted and saved to {csvPath}");
    }

    static List<string[]> ExtractTableDataFromPdf(string pdfPath)
    {
        var pdf = PdfDocument.FromFile(pdfPath);

        // Extract text from the first page
        var text = pdf.ExtractTextFromPage(0); 
        var rows = new List<string[]>();

        // Split text into lines (rows)
        var lines = text.Split('\n');

        // Variable to hold column values temporarily
        var tempColumns = new List<string>();

        foreach (var line in lines)
        {
            var trimmedLine = line.Trim();

            // Check for empty lines or lines that don't contain table data
            if (string.IsNullOrEmpty(trimmedLine) || trimmedLine.Contains("Header"))
            {
                continue;
            }

            // Split line into columns. Adjust this based on how columns are separated.
            var columns = trimmedLine.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);

            if (columns.Length > 0)
            {
                // Add columns to temporary list
                tempColumns.AddRange(columns);
                rows.Add(tempColumns.ToArray());
                tempColumns.Clear(); // Clear temporary list after adding to rows
            }
        }

        return rows;
    }

    static void WriteDataToCsv(List<string[]> data, string csvPath)
    {
        using (var writer = new StreamWriter(csvPath))
        {
            foreach (var row in data)
            {
                // Join columns with commas and quote each field to handle commas within data
                var csvRow = string.Join(",", row.Select(field => $"\"{field.Replace("\"", "\"\"")}\""));
                writer.WriteLine(csvRow);
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using IronPDF;

class Program
{
    static void Main(string[] args)
    {
        string pdfPath = "table.pdf";
        string csvPath = "output.csv";

        // Extract and parse table data
        var tableData = ExtractTableDataFromPdf(pdfPath);

        // Write the extracted data to a CSV file
        WriteDataToCsv(tableData, csvPath);
        Console.WriteLine($"Data extracted and saved to {csvPath}");
    }

    static List<string[]> ExtractTableDataFromPdf(string pdfPath)
    {
        var pdf = PdfDocument.FromFile(pdfPath);

        // Extract text from the first page
        var text = pdf.ExtractTextFromPage(0); 
        var rows = new List<string[]>();

        // Split text into lines (rows)
        var lines = text.Split('\n');

        // Variable to hold column values temporarily
        var tempColumns = new List<string>();

        foreach (var line in lines)
        {
            var trimmedLine = line.Trim();

            // Check for empty lines or lines that don't contain table data
            if (string.IsNullOrEmpty(trimmedLine) || trimmedLine.Contains("Header"))
            {
                continue;
            }

            // Split line into columns. Adjust this based on how columns are separated.
            var columns = trimmedLine.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);

            if (columns.Length > 0)
            {
                // Add columns to temporary list
                tempColumns.AddRange(columns);
                rows.Add(tempColumns.ToArray());
                tempColumns.Clear(); // Clear temporary list after adding to rows
            }
        }

        return rows;
    }

    static void WriteDataToCsv(List<string[]> data, string csvPath)
    {
        using (var writer = new StreamWriter(csvPath))
        {
            foreach (var row in data)
            {
                // Join columns with commas and quote each field to handle commas within data
                var csvRow = string.Join(",", row.Select(field => $"\"{field.Replace("\"", "\"\"")}\""));
                writer.WriteLine(csvRow);
            }
        }
    }
}
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq
Imports IronPDF

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfPath As String = "table.pdf"
		Dim csvPath As String = "output.csv"

		' Extract and parse table data
		Dim tableData = ExtractTableDataFromPdf(pdfPath)

		' Write the extracted data to a CSV file
		WriteDataToCsv(tableData, csvPath)
		Console.WriteLine($"Data extracted and saved to {csvPath}")
	End Sub

	Private Shared Function ExtractTableDataFromPdf(ByVal pdfPath As String) As List(Of String())
		Dim pdf = PdfDocument.FromFile(pdfPath)

		' Extract text from the first page
		Dim text = pdf.ExtractTextFromPage(0)
		Dim rows = New List(Of String())()

		' Split text into lines (rows)
		Dim lines = text.Split(ControlChars.Lf)

		' Variable to hold column values temporarily
		Dim tempColumns = New List(Of String)()

		For Each line In lines
			Dim trimmedLine = line.Trim()

			' Check for empty lines or lines that don't contain table data
			If String.IsNullOrEmpty(trimmedLine) OrElse trimmedLine.Contains("Header") Then
				Continue For
			End If

			' Split line into columns. Adjust this based on how columns are separated.
			Dim columns = trimmedLine.Split( { " "c, ControlChars.Tab }, StringSplitOptions.RemoveEmptyEntries)

			If columns.Length > 0 Then
				' Add columns to temporary list
				tempColumns.AddRange(columns)
				rows.Add(tempColumns.ToArray())
				tempColumns.Clear() ' Clear temporary list after adding to rows
			End If
		Next line

		Return rows
	End Function

	Private Shared Sub WriteDataToCsv(ByVal data As List(Of String()), ByVal csvPath As String)
		Using writer = New StreamWriter(csvPath)
			For Each row In data
				' Join columns with commas and quote each field to handle commas within data
				Dim csvRow = String.Join(",", row.Select(Function(field) $"""{field.Replace("""", """""")}"""))
				writer.WriteLine(csvRow)
			Next row
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Exemple de fichier PDF

Comment extraire des données tabulaires d'un fichier PDF en C&num : Figure 6

Fichier CSV de sortie

Comment extraire des données tabulaires d'un fichier PDF en C&num : Figure 7

Comme vous pouvez le voir, nous avons réussi à exporter le tableau PDF vers CSV. Tout d'abord, nous avons chargé le PDF contenant le tableau et créé un nouveau chemin de fichier CSV. Après cela, nous avons extrait le tableau à l'aide de la ligne var tableData = ExtractTableDataFromPdf(pdfPath), qui appelle la méthode ExtractTableDataFromPdf(). Cette méthode extrait tout le texte sur la page PDF où se trouve le tableau, en le stockant dans la variable text.

Ensuite, nous avons divisé le texte en lignes et colonnes. Enfin, après avoir retourné le résultat de ce processus de division, nous appelons la méthode static void WriteDataToCsv() qui prend le texte extrait et divisé, et l'écrit dans notre fichier CSV en utilisant StreamWriter.

Conseils et meilleures pratiques

Lorsque vous travaillez avec des tableaux PDF, suivre quelques pratiques élémentaires peut aider à minimiser les chances de rencontrer des erreurs ou des problèmes.

  • Prétraiter les PDF : Si possible, prétraitez vos PDF pour garantir un formatage cohérent, ce qui simplifie le processus d'extraction.
  • Valider les données : Validez toujours les données extraites pour assurer leur exactitude et leur exhaustivité.
  • Gérer les erreurs : Implémentez la gestion des erreurs pour gérer les cas où l'extraction ou l'analyse du texte échoue, comme en encapsulant votre code dans un bloc try-catch.
  • Optimiser les performances : Pour les fichiers PDF volumineux, envisagez d'optimiser l'extraction et l'analyse de texte pour gérer les problèmes de performances.

Licences IronPDF

IronPDF propose différentes options de licence, vous permettant d'essayer toutes les fonctionnalités puissantes d'IronPDF avant de vous engager dans une licence.

Conclusion

Extraire des tableaux à partir de PDF en utilisant IronPDF est un moyen puissant d'automatiser l'extraction de données, faciliter l'analyse et convertir des documents en formats plus accessibles. Que vous traitiez de tableaux simples ou de formats complexes et irréguliers, IronPDF fournit les outils nécessaires pour extraire et traiter efficacement les données tabulaires.

Avec IronPDF, vous pouvez rationaliser des flux de travail comme la saisie automatique de données, la conversion de documents et l'analyse de données. La flexibilité et les fonctionnalités avancées offertes par IronPDF en font un outil précieux pour gérer diverses tâches basées sur les PDF.

Questions Fréquemment Posées

Comment puis-je extraire des tables d'un PDF en utilisant C# ?

Vous pouvez utiliser IronPDF pour extraire des tables d'un PDF en C#. Chargez le document PDF en utilisant IronPDF, extrayez le texte, puis analysez le texte en lignes et colonnes de manière programmatique.

Pourquoi est-il difficile d'extraire des données de table à partir de documents PDF ?

Les PDFs sont principalement conçus pour la présentation plutôt que pour la structure des données, ce qui rend difficile l'extraction de données structurées comme les tables. Des outils comme IronPDF aident à interpréter et à extraire ces données efficacement.

Quels sont les avantages d'extraire des tables de PDFs ?

L'extraction de tables de PDFs facilite l'automatisation de la saisie de données, l'analyse de données, la conversion de documents en formats plus accessibles et assure la conformité dans les processus d'audit.

Comment gérez-vous les formats de tables complexes lors de l'extraction de PDF ?

IronPDF offre des capacités pour extraire et traiter des données de table même à partir de formats de table complexes et irréguliers, assurant une extraction de données précise.

Quel est le processus pour convertir les données de table PDF extraites en CSV ?

Après avoir extrait et analysé les données de table d'un PDF en utilisant IronPDF, vous pouvez exporter ces données vers un fichier CSV en écrivant les données analysées en utilisant un StreamWriter.

Quelles sont les meilleures pratiques pour l'extraction de tables PDF ?

Prétraiter les PDFs pour un formatage cohérent, valider les données extraites, implémenter la gestion des erreurs et optimiser les performances lorsqu'on traite de gros fichiers PDF.

IronPDF peut-il aider dans les tâches d'audit et de conformité ?

Oui, IronPDF peut extraire des données tabulaires de PDFs et les convertir en formats comme Excel ou CSV, aidant à l'audit et à la conformité en rendant les données plus accessibles pour la révision et l'analyse.

Quelles options de licence offre IronPDF ?

IronPDF propose diverses options de licence, y compris des versions d'essai, afin que vous puissiez explorer ses fonctionnalités avant d'acheter une licence complète.

Quels scénarios de dépannage courants peuvent survenir lors de l'extraction de tables de PDFs ?

Les problèmes courants incluent le formatage incohérent des tables et des erreurs d'extraction de texte. L'utilisation des fonctionnalités robustes d'IronPDF peut aider à atténuer ces défis en offrant des capacités d'analyse précises.

IronPDF est-il entièrement compatible avec .NET 10 et quels sont ses avantages pour les flux de travail d'extraction de tableaux ?

Oui, IronPDF est compatible avec .NET 10 (ainsi qu'avec .NET 9, 8, 7, 6, Core, Standard et Framework), ce qui vous permet de l'utiliser dans les projets .NET 10 les plus récents sans problème de configuration. Les développeurs utilisant .NET 10 bénéficient d'améliorations des performances d'exécution, telles que la réduction des allocations mémoire et l'optimisation du compilateur JIT, ce qui accélère le traitement des PDF et l'extraction des tableaux.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite