IRONSOFTWAREHOME

Lesen von Tabellen in Dokumenten mit C#

Curtis Chau
Curtis Chau
Updated: 29. Juni 2026

IronOCR ermöglicht es C#-Entwicklern, mithilfe fortschrittlicher Machine-Learning-Modelle Daten aus Tabellen in PDF-Dateien und Bildern zu extrahieren. Dabei werden sowohl einfache Tabellen mit grundlegenden Zellen als auch komplexe Strukturen wie Rechnungen mit zusammengeführten Zellen unter Verwendung der ReadDocumentAdvanced-Methode verarbeitet.

Das Extrahieren von Daten aus Tabellen mit einfachem Tesseract kann eine Herausforderung sein, da sich der Text oft in Zellen befindet und nur spärlich über das Dokument verteilt ist. Unsere Bibliothek enthält jedoch ein maschinelles Lernmodell, das für die genaue Erkennung und Extraktion von Tabellendaten trainiert und abgestimmt wurde. Ob es um die Verarbeitung von Finanzberichten, Inventarlisten oder Rechnungsdaten geht, IronOCR bietet die Werkzeuge, um strukturierte Daten effizient zu analysieren.

Verwenden Sie für einfache Tabellen die einfache Tabellenerkennung mithilfe der Standardklasse OcrInput. Für komplexere Strukturen liefert unsere exklusive ReadDocumentAdvanced-Methode zuverlässige Ergebnisse, indem sie Tabellen effektiv parst und Daten bereitstellt. Diese fortschrittliche Methode nutzt das maschinelle Lernen, um Tabellenlayouts, zusammengeführte Zellen und komplexe Formatierungen zu verstehen, mit denen herkömmliche OCR oft Probleme hat.

Schnellstart: Komplexe Tabellenspalten in einem Aufruf extrahieren

In wenigen Minuten einsatzbereit – dieses Beispiel zeigt, wie ein einziger IronOCR-Aufruf mit ReadDocumentAdvanced Ihnen detaillierte Tabellenzellendaten aus einem komplexen Dokument liefert.
Es demonstriert die Benutzerfreundlichkeit, indem es ein PDF lädt, eine erweiterte Tabellenerkennung anwendet und eine Liste von Zellinformationen direkt zurückgibt.

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. 2Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    var cells = new IronTesseract().ReadDocumentAdvanced(new OcrInput().LoadPdf("invoiceTable.pdf")).Tables.First().CellInfos;
    C#
  3. 3Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute, IronOCR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
    arrow pointer

Die folgenden Schritte führen Sie in die ersten Schritte zum Lesen von Tabellen mit IronOCR ein:


Wie kann ich Daten aus einfachen Tabellen extrahieren?

Durch Setzen der Eigenschaft ReadDataTables auf "true" wird die Tabellenerkennung mit Tesseract aktiviert. Dieser Ansatz eignet sich gut für einfache Tabellen mit klaren Zellgrenzen und ohne verschmolzene Zellen. Ich habe ein einfaches Tabellen-PDF erstellt, um diese Funktion zu testen, das Sie hier herunterladen können: 'simple-table.pdf'. Einfache Tabellen ohne zusammengeführte Zellen können mit dieser Methode erkannt werden. Für komplexere Tabellen wenden Sie bitte die unten beschriebene Methode an.

Die Standard-Tabellenerkennungsmethode ist besonders effektiv für:

  • Tabellenkalkulationsexporte
  • Grundlegende Datentabellen mit konsistenter Reihen-/Spaltenstruktur
  • Berichte mit tabellarischen Daten
  • Einfache Inventarlisten

Wenn Sie mit PDF OCR Textextraktion im Allgemeinen arbeiten, lässt sich diese Methode nahtlos in die breiteren Dokumentverarbeitungsfunktionen von IronOCR integrieren.

using IronOcr;
using System;
using System.Data;

// Instantiate OCR engine
var ocr = new IronTesseract();

// Enable table detection
ocr.Configuration.ReadDataTables = true;

using var input = new OcrPdfInput("simple-table.pdf");
var result = ocr.Read(input);

// Retrieve the data
var table = result.Tables[0].DataTable;

// Print out the table data
foreach (DataRow row in table.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write(item + "\t");
    }
    Console.WriteLine();
}

Wie kann ich komplexe Rechnungstabellen lesen?

Eine der häufigsten komplexen Tabellen in Geschäftsumgebungen sind Rechnungen. Rechnungen sind komplexe Tabellen mit Datenzeilen und -spalten, oft mit verschmolzenen Zellen, unterschiedlichen Spaltenbreiten und verschachtelten Strukturen. Mit IronOCR nutzen wir die ReadDocumentAdvanced-Methode, um diese effektiv zu verarbeiten. Der Prozess umfasst das Scannen des Dokuments, die Identifikation der Tabellenstruktur und die Datenextraktion. In diesem Beispiel verwenden wir die Datei "invoiceTable.pdf", um zu zeigen, wie IronOCR alle Informationen aus der Rechnung abruft.

Die ReadDocumentAdvanced-Methode erfordert, dass das IronOcr.Extensions.AdvancedScan-Paket zusätzlich zum Basis-IronOCR-Paket installiert ist. Diese Erweiterung bietet fortschrittliche maschinelle Lernfunktionen, die speziell für komplexe Dokumentenlayouts trainiert wurden.

Hinweis::

Die erweiterte Abtastung auf dem .NET Framework erfordert, dass das Projekt auf der x64-Architektur ausgeführt wird. Navigieren Sie zur Projektkonfiguration und deaktivieren Sie die Option "Bevorzugt 32-Bit", um dies zu erreichen. Erfahren Sie mehr in der folgenden Anleitung zur Fehlerbehebung: "Advanced Scan on .NET Framework."
)}]

using IronOcr;
using System.Linq;

// Instantiate OCR engine
var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("invoiceTable.pdf");

// Perform OCR
var result = ocr.ReadDocumentAdvanced(input);

var cellList = result.Tables.First().CellInfos;

Diese Methode trennt die Textdaten des Dokuments in zwei Kategorien: eine eingekapselt von Rändern und eine andere ohne Ränder. Für die mit Rahmen versehenen Inhalte teilt die Bibliothek sie weiter in Unterabschnitte basierend auf der Tabellenstruktur auf. Die Methode zeichnet sich durch die Handhabung aus:

  • Rechnungspositionen mit unterschiedlichen Beschreibungen
  • Mehrspaltige Preisaufschlüsselungen
  • Blöcke für Versand- und Rechnungsadresse
  • Abschnitte zur Steuer- und Gesamtberechnung
  • Kopf- und Fußzeileninformationen

Die Ergebnisse werden unten angezeigt. Da sich diese Methode auf Informationen konzentriert, die von Grenzen umschlossen sind, werden alle zusammengeführten Zellen, die sich über mehrere Zeilen erstrecken, als eine einzige Zelle behandelt.

Wie sehen die extrahierten Daten aus?

Iron Software OCR extrahiert Tabellendaten aus der Versandrechnung in ein strukturiertes hierarchisches Format

Wie organisiere und verarbeite ich die extrahierten Tabellenzellen?

In der aktuellen Implementation sind die extrahierten Zellen noch nicht richtig organisiert. Jede Zelle enthält jedoch wertvolle Informationen wie X- und Y-Koordinaten, Abmessungen und mehr. Mit diesen Daten können wir eine Hilfsklasse für verschiedene Zwecke erstellen. Die Zellinformationen umfassen:

  • Präzise X/Y-Koordinaten für die Positionierung
  • Abmessungen für Breite und Höhe
  • Inhalt des Textes
  • Konfidenzwerte
  • Beziehungen zwischen Zellen

Diese detaillierten Informationen ermöglichen es Ihnen, die Tabellenstruktur programmatisch zu rekonstruieren und eine benutzerdefinierte Logik für die Datenextraktion anzuwenden. Sie können diese Koordinaten auch verwenden, um bestimmte Regionen für eine gezielte OCR-Verarbeitung in nachfolgenden Operationen zu definieren.

Hier sind einige grundlegende Hilfsmethoden:

using System;
using System.Collections.Generic;
using System.Linq;

// A helper class to process table data by sorting cells based on coordinates
public static class TableProcessor
{
    // Method to organize cells by their coordinates (Y top to bottom, X left to right)
    public static List<CellInfo> OrganizeCellsByCoordinates(List<CellInfo> cells)
    {
        // Sort cells by Y (top to bottom), then by X (left to right)
        var sortedCells = cells
            .OrderBy(cell => cell.CellRect.Y)
            .ThenBy(cell => cell.CellRect.X)
            .ToList();

        return sortedCells;
    }

    // Example method demonstrating how to process multiple tables
    public static void ProcessTables(Tables tables)
    {
        foreach (var table in tables)
        {
            var sortedCells = OrganizeCellsByCoordinates(table.CellInfos);

            Console.WriteLine("Organized Table Cells:");

            // Initialize previous Y coordinate
            int previousY = sortedCells.Any() ? sortedCells.First().CellRect.Y : 0;

            foreach (var cell in sortedCells)
            {
                // Print a new line if the Y-coordinate changes, indicating a new row
                if (Math.Abs(cell.CellRect.Y - previousY) > cell.CellRect.Height * 0.8)
                {
                    Console.WriteLine();  // Start a new row
                    previousY = cell.CellRect.Y;
                }

                // Print the cell text followed by a tab
                Console.Write($"{cell.CellText}\t");
            }

            Console.WriteLine("\n--- End of Table ---");  // End of a table
        }
    }

    // Method to extract a specific row by the given index
    public static List<CellInfo> ExtractRowByIndex(TableInfo table, int rowIndex)
    {
        if (table == null || table.CellInfos == null || !table.CellInfos.Any())
        {
            throw new ArgumentException("Table is empty or invalid.");
        }

        var sortedCells = OrganizeCellsByCoordinates(table.CellInfos);
        List<List<CellInfo>> rows = new List<List<CellInfo>>();

        // Group cells into rows based on Y coordinates
        int previousY = sortedCells.First().CellRect.Y;
        List<CellInfo> currentRow = new List<CellInfo>();

        foreach (var cell in sortedCells)
        {
            if (Math.Abs(cell.CellRect.Y - previousY) > cell.CellRect.Height * 0.8)
            {
                // Store the completed row and start a new one
                rows.Add(new List<CellInfo>(currentRow));
                currentRow.Clear();

                previousY = cell.CellRect.Y;
            }

            currentRow.Add(cell);
        }

        // Add the last row if it wasn't added yet
        if (currentRow.Any())
        {
            rows.Add(currentRow);
        }

        // Retrieve the specified row
        if (rowIndex < 0 || rowIndex >= rows.Count)
        {
            throw new IndexOutOfRangeException($"Row index {rowIndex} is out of range.");
        }

        return rows[rowIndex];
    }
}

Best Practices für die Tabellenextraktion

Beachten Sie bei der Arbeit mit der Tabellenextraktion in IronOCR die folgenden Best Practices:

  1. Dokumentenqualität: Höher aufgelöste Dokumente liefern bessere Ergebnisse. Achten Sie bei gescannten Dokumenten auf eine Mindestauflösung von 300 DPI.

  2. Vorbearbeitung: Bei Dokumenten mit schlechter Qualität oder schiefen Tabellen sollten Sie die Bildkorrekturfunktionen von IronOCR vor der Verarbeitung verwenden.

  3. Leistungsfähigkeit: Bei großen Dokumenten mit mehreren Tabellen sollten Sie Multithreading und async-Unterstützung verwenden, um Seiten parallel zu verarbeiten.

  4. Ausgabeoptionen: Nach der Extraktion von Tabellendaten können Sie die Ergebnisse in verschiedenen Formaten exportieren. Erfahren Sie mehr über Datenausgabeoptionen und wie Sie durchsuchbare PDFs aus Ihren verarbeiteten Dokumenten erstellen.

  5. Stream Processing: Für Webanwendungen oder Szenarien, die mit In-Memory-Dokumenten arbeiten, sollten Sie OCR für PDF-Streams verwenden, um Dateisystemoperationen zu vermeiden.

Zusammenfassung

IronOCR bietet leistungsstarke Funktionen zur Tabellenextraktion, sowohl durch standardmäßige Tesseract-basierte Erkennung als auch durch fortschrittliche maschinelle Lernmethoden. Der Standardansatz eignet sich gut für einfache Tabellen, während die ReadDocumentAdvanced-Methode bei komplexen Dokumenten wie Rechnungen ihre Stärken ausspielt. Mit den bereitgestellten Hilfsmethoden können Sie die extrahierten Daten organisieren und verarbeiten, um sie an Ihre spezifischen Bedürfnisse anzupassen.

Entdecken Sie weitere IronOCR-Funktionen, um Ihre Dokumentenverarbeitungs-Workflows zu verbessern und das volle Potenzial der optischen Zeichenerkennung in Ihren .NET-Anwendungen zu nutzen.

Häufig gestellte Fragen

Wie kann ich in C# Tabellendaten aus PDFs und Bildern extrahieren?

IronOCR ermöglicht C#-Entwicklern die Extraktion von Tabellendaten aus PDFs und Bildern mithilfe fortschrittlicher maschineller Lernmodelle. Für einfache Tabellen verwenden Sie die Klasse OcrInput mit der Eigenschaft ReadDataTables, die auf true gesetzt ist. Für komplexe Tabellen mit zusammengeführten Zellen verwenden Sie die ReadDocumentAdvanced-Methode, um genauere Ergebnisse zu erzielen.

Was ist der Unterschied zwischen einer einfachen und einer komplexen Tabellenextraktion?

Die einfache Tabellenextraktion in IronOCR verwendet die ReadDataTables-Eigenschaft mit Tesseract und funktioniert gut für einfache Tabellen mit klaren Zellgrenzen. Komplexe Tabellenextraktion erfordert die ReadDocumentAdvanced-Methode, die maschinelles Lernen verwendet, um verbundene Zellen, Rechnungen und komplexe Formatierungen zu verarbeiten.

Wie kann ich schnell Daten aus komplexen Tabellen extrahieren?

Verwenden Sie die ReadDocumentAdvanced-Methode von IronOCR in einem einzigen Aufruf: var cells = new IronTesseract().ReadDocumentAdvanced(new OcrInput().LoadPdf('invoiceTable.pdf')).Tables.First().CellInfos; Damit wird maschinelles Lernen genutzt, um Tabellenlayouts und komplexe Formatierungen zu verstehen.

Welche Arten von Dokumenten eignen sich am besten für die einfache Tabellenerkennung?

Die einfache Tabellenerkennungsmethode von IronOCR funktioniert besonders gut bei Tabellenkalkulationsexporten, einfachen Datentabellen mit konsistenter Zeilen-/Spaltenstruktur, Berichten mit Tabellendaten und einfachen Bestandslisten ohne verbundene Zellen.

Wie kann ich die Tabellenerkennung für einfache Tabellen aktivieren?

Um die Tabellenerkennung in IronOCR für einfache Tabellen zu aktivieren, setzen Sie die Eigenschaft ReadDataTables auf true. Dies nutzt die Tabellenerkennungsfunktionen von Tesseract und funktioniert gut bei Tabellen mit klaren Zellgrenzen und ohne verschmolzene Zellen.

Kann die Bibliothek Rechnungen und Finanzberichte mit komplexen Layouts verarbeiten?

Ja, die ReadDocumentAdvanced-Methode von IronOCR wurde speziell für die Bearbeitung komplexer Dokumente wie Rechnungen und Finanzberichte entwickelt. Sie verwendet maschinelle Lernmodelle, die darauf trainiert sind, Daten aus Tabellen mit verbundenen Zellen und komplexen Formatierungen zu erkennen und zu extrahieren.

Is it possible to organize extracted table cells based on coordinates using IronOCR?

Yes, IronOCR provides detailed information for each extracted cell, including its coordinates. You can use this data to organize cells programmatically by sorting them based on X and Y coordinates, allowing for precise reconstruction of the table structure.

What document quality is recommended for optimal results when using IronOCR for table extraction?

For optimal results, it is recommended to use documents with a minimum resolution of 300 DPI. Higher quality documents improve the accuracy of the OCR process and result in better table extraction outcomes.

Can IronOCR process tables in multi-page documents effectively?

Yes, IronOCR can process tables in multi-page documents effectively. It supports parallel processing using multithreading and async support to handle large documents with multiple tables efficiently.

What output options does IronOCR provide after extracting table data?

IronOCR provides several output options after extracting table data, including exporting results in various formats and creating searchable PDFs. Explore its data output options to suit your needs.

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 Handbücher.

...
Weiterlesen

Bereit anzufangen?

Nuget Downloads 6,236,385Version:2026.9gerade veröffentlicht

Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.
C# NuGet-Bibliothek für PDF
Installation mit NuGet

Version: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. Rechtsklick auf Referenzen, NuGet-Pakete verwalten
  2. Wählen Sie Durchsuchen und suchen Sie nach "IronOCR"
  3. Paket auswählen und installieren
C# PDF DLL
Download DLL

Version: 2026.9

oder laden Sie den Windows Installer hier herunter.

  1. Laden Sie IronOCR herunter und entpacken Sie es in einem Ordner wie ~/Libs in Ihrem Lösungsverzeichnis.
  2. Klicken Sie im Visual Studio Solution Explorer mit der rechten Maustaste auf Referenzen. Wählen Sie Durchsuchen, "IronOCR.dll"

Lizenzen von $999

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Kundenlogos von Iron Software
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.