Zum Fußzeileninhalt springen
IRONPDF NUTZEN

Wie man Tabellendaten aus einer PDF-Datei in C# extrahiert

In vielen Branchen sind PDF-Dateien das bevorzugte Format zum Teilen strukturierter Dokumente wie Berichte, Rechnungen und Datentabellen. Das Extrahieren von Daten aus PDFs, insbesondere Tabellen, kann aufgrund der Beschaffenheit des PDF-Formats jedoch eine Herausforderung sein. Im Gegensatz zu strukturierten Datenformaten sind PDFs in erster Linie für die Präsentation und nicht für die Datenextraktion konzipiert.

Mit IronPDF, einer leistungsstarken C# PDF .NET-Bibliothek, können Sie jedoch strukturierte Daten wie Tabellen direkt aus PDFs extrahieren und in Ihren .NET-Anwendungen verarbeiten. Dieser Artikel führt Sie Schritt für Schritt durch den Prozess, um tabellarische Daten aus PDF-Dateien mit IronPDF zu extrahieren.

Wann müssen Sie Tabellen aus PDF-Dokumenten extrahieren?

Tabellen sind eine praktische Möglichkeit, Ihre Daten zu strukturieren und darzustellen, sei es bei der Lagerverwaltung, Datenerfassung, Aufzeichnung von Daten wie Niederschlagen usw. Daher gibt es möglicherweise viele Gründe, Tabellen und Tabellendaten aus PDF-Dokumenten extrahieren zu müssen. Einige der häufigsten Anwendungsfälle sind:

  • Automatisierung der Dateneingabe: Das Extrahieren von Daten aus Tabellen in PDF-Berichten oder Rechnungen kann Prozesse wie das Füllen von Datenbanken oder Tabellenkalkulationen automatisieren.
  • Datenanalyse: Unternehmen erhalten häufig strukturierte Berichte im PDF-Format. Das Extrahieren von Tabellen ermöglicht es Ihnen, diese Daten programmatisch zu analysieren.
  • Dokumentenkonvertierung: Das Extrahieren tabellarischer Daten in zugänglichere Formate wie Excel oder CSV ermöglicht eine einfachere Manipulation, Speicherung und Weitergabe.
  • Prüfung und Konformität: Für rechtliche oder finanzielle Aufzeichnungen kann das programmatische Extrahieren tabellarischer Daten aus PDF-Dokumenten helfen, Audits zu automatisieren und die Einhaltung von Vorschriften sicherzustellen.

Wie funktionieren PDF-Tabellen?

Das PDF-Dateiformat bietet keine native Möglichkeit, Daten in strukturierten Formaten wie Tabellen zu speichern. Die Tabelle, die wir im heutigen Beispiel verwenden, wurde in HTML erstellt, bevor sie in das PDF-Format konvertiert wurde. Tabellen werden als Text und Linien gerendert, daher erfordert das Extrahieren von Tabellendaten oft eine Analyse und Interpretation des Inhalts, es sei denn, Sie verwenden OCR-Software wie IronOCR.

Wie man Tabellendaten aus einer PDF-Datei in C# extrahiert

Bevor wir untersuchen, wie IronPDF diese Aufgabe bewältigen kann, schauen wir uns zunächst ein Online-Tool an, das in der Lage ist, PDF-Extraktionen durchzuführen. Um eine Tabelle mit einem Online-PDF-Tool aus einem PDF-Dokument zu extrahieren, befolgen Sie die nachstehend aufgeführten Schritte:

  1. Navigieren Sie zum kostenlosen Online-PDF-Extraktionstool.
  2. Laden Sie das PDF hoch, das die Tabelle enthält. Kostenlos.

Schritt eins: Navigieren Sie zum kostenlosen Online-Tool zur PDF-Extraktion

Heute werden wir Docsumo als unser Beispiel für ein Online-PDF-Tool verwenden. Docsumo ist eine Online-PDF-Dokumenten-KI, die ein kostenloses Tool zur Extraktion von PDF-Tabellen bietet.

Wie man Tabellen aus einem PDF in C# extrahiert: Abbildung 1

Schritt zwei: Hochladen der PDF-Datei mit der Tabelle

Klicken Sie nun auf die Schaltfläche "Datei hochladen", um Ihre PDF-Datei zur Extraktion hochzuladen. Das Tool beginnt sofort mit der Verarbeitung Ihres PDFs.

Wie man Tabellen aus einem PDF in C# extrahiert: Abbildung 2

Schritt 3: Anzeigen und Herunterladen der Ergebnisse

Nachdem Docsumo die Verarbeitung des PDFs abgeschlossen hat, zeigt es die extrahierte Tabelle an. Sie können dann Anpassungen an der Tabellenstruktur vornehmen, wie z. B. das Hinzufügen und Entfernen von Zeilen. Hier können Sie die Tabelle als PDF, XLS, JSON oder Text herunterladen.

Wie man Tabellen aus einem PDF in C# extrahiert: Abbildung 3

Tabellendaten mit IronPDF extrahieren

IronPDF ermöglicht es Ihnen, Daten, Text und Grafiken aus PDFs zu extrahieren, die dann verwendet werden können, um Tabellen programmatisch zu rekonstruieren. Dazu müssen Sie zuerst den Textinhalt aus der Tabelle im PDF extrahieren und diesen Text dann verwenden, um die Tabelle in Zeilen und Spalten zu zerlegen. Bevor wir mit dem Extrahieren von Tabellen beginnen, werfen wir einen Blick darauf, wie die ExtractAllText()-Methode von IronPDF funktioniert, indem wir die Daten innerhalb einer Tabelle extrahieren:

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);
    }
}
$vbLabelText   $csharpLabel

Wie man Tabellen aus einem PDF in C# extrahiert: Abbildung 4

In diesem Beispiel haben wir das PDF-Dokument mithilfe der PdfDocument-Klasse geladen und dann die ExtractAllText()-Methode verwendet, um den gesamten Text innerhalb des Dokuments zu extrahieren, bevor der Text schließlich auf der Konsole angezeigt wird.

Tabellendaten aus Text extrahieren mit IronPDF

Nach der Textextraktion aus dem PDF erscheint die Tabelle als eine Reihe von Zeilen und Spalten im Klartext. Sie können diesen Text basierend auf Zeilenumbrüchen (\n) aufteilen und dann die Zeilen weiter in Spalten anhand von konstantem Abstand oder Trennzeichen wie Kommas oder Tabs aufteilen. Hier ist ein einfaches Beispiel, wie die Tabelle aus dem Text geparst wird:

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
            }
        }
    }
}
$vbLabelText   $csharpLabel

Wie man Tabellen aus einem PDF in C# extrahiert: Abbildung 5

In diesem Beispiel folgten wir den gleichen Schritten wie zuvor, um unser PDF-Dokument zu laden und den Text zu extrahieren. Dann haben wir mit text.Split('\n') den extrahierten Text in Zeilen aufgeteilt basierend auf Zeilenumbrüchen und die Ergebnisse im lines-Array gespeichert. Eine foreach-Schleife wird dann verwendet, um durch die Zeilen im Array zu schleifen, wobei line.Split('\t') verwendet wird, um die Zeilen weiter in Spalten zu unterteilen, wobei das Tabulatorzeichen '\t' als Trennzeichen dient. Der nächste Teil des Spaltenarrays, Where(col => !string.IsNullOrWhiteSpace(col)).ToArray() filtert leere Spalten heraus, die aufgrund von zusätzlichen Leerzeichen entstehen können, und fügt die Spalten dann dem Spaltenarray hinzu.

Schließlich schreiben wir Text mit grundlegender Zeilen- und Spaltenstrukturierung in das Konsolenausgabefenster.

Exportieren von extrahierten Tabellendaten nach CSV

Da wir nun behandelt haben, wie man Tabellen aus PDF-Dateien extrahiert, schauen wir uns an, was wir mit diesen extrahierten Daten machen können. Das Exportieren der Tabelle als CSV-Datei ist eine nützliche Möglichkeit, Tabellendaten zu handhaben und Aufgaben wie die Dateneingabe zu automatisieren. Für dieses Beispiel haben wir eine Tabelle mit simulierten Daten gefüllt, in diesem Fall der täglichen Niederschlagsmenge in einer Woche, die Tabelle aus dem PDF extrahiert und dann in eine CSV-Datei exportiert.

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);
            }
        }
    }
}
$vbLabelText   $csharpLabel

Beispiel-PDF-Datei

Wie man Tabellen aus einem PDF in C# extrahiert: Abbildung 6

Ausgabe CSV-Datei

Wie man Tabellen aus einem PDF in C# extrahiert: Abbildung 7

Wie Sie sehen können, haben wir die PDF-Tabelle erfolgreich in CSV exportiert. Zunächst haben wir das PDF, das die Tabelle enthält, geladen und einen neuen CSV-Dateipfad erstellt. Danach haben wir die Tabelle mit der Zeile var tableData = ExtractTableDataFromPdf(pdfPath) extrahiert, die die Methode ExtractTableDataFromPdf() aufruft. Diese Methode extrahiert den gesamten Text auf der PDF-Seite, auf der sich die Tabelle befindet, und speichert ihn in der Variablen text.

Anschließend haben wir den Text in Zeilen und Spalten aufgeteilt. Schließlich, nach Rückgabe des Ergebnisses aus diesem Aufteilungsprozess, rufen wir die Methode static void WriteDataToCsv() auf, die den extrahierten, aufgeteilten Text verwendet und ihn mithilfe von StreamWriter in unsere CSV-Datei schreibt.

Tipps und bewährte Praktiken

Beim Arbeiten mit PDF-Tabellen können einige grundlegende bewährte Praktiken helfen, die Wahrscheinlichkeit von Fehlern oder Problemen zu minimieren.

  • Vorverarbeitung von PDFs: Wenn möglich, verarbeiten Sie Ihre PDFs vor, um ein einheitliches Format sicherzustellen, was den Extraktionsprozess vereinfacht.
  • Datenvalidierung: Validieren Sie immer die extrahierten Daten, um Genauigkeit und Vollständigkeit sicherzustellen.
  • Fehlerbehandlung: Implementieren Sie eine Fehlerbehandlung, um Fälle zu verwalten, in denen die Textextraktion oder das Parsing fehlschlägt, indem Sie beispielsweise Ihren Code in einem try-catch-Block umschließen.
  • Leistungsoptimierung: Für große PDFs sollten Sie die Textextraktion und das Parsing optimieren, um Leistungsprobleme zu bewältigen.

IronPDF Lizenzierung

IronPDF bietet verschiedene Lizenzierungs-Optionen, mit denen Sie alle leistungsstarken Funktionen von IronPDF selbst ausprobieren können, bevor Sie sich für eine Lizenz entscheiden.

Abschluss

Das Extrahieren von Tabellen aus PDFs mit IronPDF ist eine leistungsstarke Methode, um die Datenextraktion zu automatisieren, Analysen zu erleichtern und Dokumente in zugänglichere Formate zu konvertieren. Egal, ob Sie es mit einfachen Tabellen oder komplexen, unregelmäßigen Formaten zu tun haben, IronPDF stellt die Werkzeuge bereit, die Sie benötigen, um Tabellendaten effizient zu extrahieren und zu verarbeiten.

Mit IronPDF können Sie Workflows wie automatisierte Dateneingabe, Dokumentenkonvertierung und Datenanalyse rationalisieren. Die Flexibilität und erweiterten Funktionen von IronPDF machen es zu einem wertvollen Werkzeug für die Bearbeitung verschiedener PDF-basierter Aufgaben.

Häufig gestellte Fragen

Wie kann ich Tabellen aus einem PDF mit C# extrahieren?

Sie können IronPDF verwenden, um Tabellen aus einem PDF in C# zu extrahieren. Laden Sie das PDF-Dokument mit IronPDF, extrahieren Sie den Text und parsen Sie dann den Text programmatisch in Zeilen und Spalten.

Warum ist es schwierig, Tabellendaten aus PDF-Dokumenten zu extrahieren?

PDFs sind hauptsächlich für die Präsentation und nicht für die Datenstruktur ausgelegt, was es schwierig macht, strukturierte Daten wie Tabellen zu extrahieren. Tools wie IronPDF helfen dabei, diese Daten effektiv zu interpretieren und zu extrahieren.

Welche Vorteile hat das Extrahieren von Tabellen aus PDFs?

Das Extrahieren von Tabellen aus PDFs erleichtert die Automatisierung der Dateneingabe, die Durchführung von Datenanalysen, die Umwandlung von Dokumenten in zugänglichere Formate und stellt die Einhaltung von Prüfprozessen sicher.

Wie gehen Sie mit komplexen Tabellenformaten bei der PDF-Extraktion um?

IronPDF bietet Funktionen zur Extraktion und Verarbeitung von Tabellendaten, selbst aus komplexen und unregelmäßigen Tabellenformaten, um eine genaue Datenauswertung zu gewährleisten.

Wie sieht der Prozess aus, um extrahierte PDF-Tabellendaten in CSV zu konvertieren?

Nach der Extraktion und dem Parsen von Tabellendaten aus einem PDF mit IronPDF können Sie diese Daten in eine CSV-Datei exportieren, indem Sie die geparsten Daten mit einem StreamWriter schreiben.

Was sind einige Best Practices für die PDF-Tabellenextraktion?

Bereiten Sie PDFs für ein konsistentes Formatieren vor, validieren Sie extrahierte Daten, implementieren Sie Fehlerbehandlung und optimieren Sie die Leistung bei der Arbeit mit großen PDF-Dateien.

Kann IronPDF bei Prüfungs- und Compliance-Aufgaben helfen?

Ja, IronPDF kann tabellarische Daten aus PDFs extrahieren und in Formate wie Excel oder CSV umwandeln, was bei der Prüfung und Einhaltung durch erleichterte Analyse und Überprüfung der Daten hilft.

Welche Lizenzierungsoptionen bietet IronPDF?

IronPDF bietet verschiedene Lizenzierungsoptionen, einschließlich Testversionen, damit Sie seine Funktionen erkunden können, bevor Sie eine Vollversion erwerben.

Welche häufigen Störungsszenarien könnten beim Extrahieren von Tabellen aus PDFs auftreten?

Häufige Probleme umfassen inkonsistente Tabellenformate und Fehler bei der Textextraktion. Die robusten Funktionen von IronPDF können helfen, diese Herausforderungen durch genaue Parsing-Fähigkeiten zu überwinden.

Ist IronPDF vollständig mit .NET 10 kompatibel und wie wirkt sich das positiv auf Workflows zur Tabellenextraktion aus?

Ja – IronPDF unterstützt .NET 10 (sowie .NET 9, 8, 7, 6, Core, Standard und Framework), sodass Sie es problemlos in aktuellen .NET 10-Projekten einsetzen können. Entwickler, die mit .NET 10 arbeiten, profitieren von Laufzeit-Leistungsverbesserungen wie reduzierten Speicherzuweisungen und optimierten JIT-Compilern, was die PDF-Verarbeitung und Tabellenextraktion beschleunigt.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen