
Wie man ein Bild zu PDF in C# konvertiert [Code-Beispiel-Tutorial]
Das Extrahieren von strukturierten Tabellendaten aus PDF-Dokumenten ist eine häufige Anforderung für C#-Entwickler, die für Datenanalyse, Berichterstellung oder die Integration von Informationen in andere Systeme entscheidend ist. Allerdings sind PDFs in erster Linie für eine konsistente visuelle Darstellung konzipiert, nicht für die einfache Datenextraktion. Dies kann das programmgesteuerte Lesen von Tabellen aus PDF-Dateien in C# zu einer herausfordernden Aufgabe machen, insbesondere da Tabellen stark variieren können - von einfachen textbasierten Gitterlayouts bis hin zu komplexen Layouts mit zusammengeführten Zellen oder sogar Tabellen, die als Bilder in gescannte Dokumente eingebettet sind.
Dieser Leitfaden bietet ein umfassendes C#-Tutorial zur Herangehensweise an die PDF-Tabellenerfassung mit IronPDF. Wir werden hauptsächlich die leistungsstarken Textextraktionsfunktionen von IronPDF nutzen, um Zugang zu tabellarischen Daten in textbasierten PDFs zu erhalten und diese dann zu analysieren. Wir werden die Effektivität dieser Methode diskutieren, Strategien zur Analyse bereitstellen und Einblicke in den Umgang mit den extrahierten Informationen geben. Zusätzlich werden wir Strategien für den Umgang mit komplexeren Szenarien, einschließlich gescannter PDFs, ansprechen.
Wichtige Schritte zum Extrahieren von Tabellendaten aus PDFs in C#
- Installieren Sie die IronPDF C#-Bibliothek (https://nuget.org/packages/IronPdf/) für die PDF-Verarbeitung.
- (Optionaler Demo-Schritt) Erstellen Sie mit IronPDFs
RenderHtmlAsPdfeine Beispiel-PDF-Datei mit einer Tabelle aus einer HTML-Zeichenfolge. (Siehe Abschnitt: (Demo-Schritt) Erstellen eines PDF-Dokuments mit Tabellendaten) - Laden Sie ein beliebiges PDF-Dokument und verwenden Sie die Methode
ExtractAllText, um dessen Rohdateninhalt abzurufen. (See section: Extract All Text Containing Table Data from the PDF) - Implementiere C#-Logik, um den extrahierten Text zu analysieren und Tabellenzeilen und -zellen zu identifizieren. (See section: Parsing Extracted Text to Reconstruct Table Data in C#)
- Gib die strukturierten Tabellendaten aus oder speichere sie zur weiteren Verwendung in einer CSV-Datei. (See section: Parsing Extracted Text to Reconstruct Table Data in C#)
- Ziehe fortschrittliche Techniken wie OCR für gescannte PDFs in Betracht (später behandelt).
IronPDF - C# PDF-Bibliothek
IronPDF ist eine C# .NET-Bibliothek für die PDF-Manipulation in .NET (https://ironpdf.com/), die Entwicklern hilft, PDF-Dokumente einfach in ihren Softwareanwendungen zu lesen, zu erstellen und zu bearbeiten. Sein robustes Chromium Engine rendert PDF-Dokumente aus HTML mit hoher Genauigkeit und Geschwindigkeit. Es ermöglicht Entwicklern, reibungslos von verschiedenen Formaten zu PDF und umgekehrt zu konvertieren. Es unterstützt die neuesten .NET-Frameworks einschließlich .NET 7, .NET 6, 5, 4, .NET Core und Standard.
Darüber hinaus ermöglicht die IronPDF for .NET API Entwicklern, PDFs zu manipulieren und zu bearbeiten, Kopf- und Fußzeilen hinzuzufügen und insbesondere Text, Bilder und (wie wir sehen werden) Tabellendaten aus PDFs mühelos zu extrahieren.
Einige wichtige Funktionen sind:
- Erstellen Sie PDF-Dateien aus verschiedenen Quellen (HTML zu PDF, Bilder zu PDF)
- Laden, speichern und PDF-Dateien drucken
- Zusammenführen und PDF-Dateien splitten
- Daten (Text, Bilder und strukturierte Daten wie Tabellen) aus PDF-Dateien extrahieren
Schritte zur Extraktion von Tabellendaten in C# mit der IronPDF-Bibliothek
Um Tabellendaten aus PDF-Dokumenten zu extrahieren, richten wir ein C#-Projekt ein:
- Visual Studio: Stellen Sie sicher, dass Visual Studio (z. B. Version 2022) installiert ist. Falls nicht, laden Sie es von der Visual Studio-Website herunter (https://visualstudio.microsoft.com/downloads/).
- Projekt erstellen:
-
Öffnen Sie Visual Studio 2022 und klicken Sie auf Ein neues Projekt erstellen.
Startbildschirm von Visual Studio
-
-
Wählen Sie "Konsolenanwendung" (oder Ihren bevorzugten C#-Projekttyp) und klicken Sie auf Weiter.
Erstellen Sie eine neue Konsolenanwendung in Visual Studio -
Benennen Sie Ihr Projekt (z. B. "ReadPDFTableDemo") und klicken Sie auf Weiter.
Konfigurieren Sie die neu erstellte Anwendung -
Wähle dein gewünschtes .NET-Framework (z. B. .NET 6 oder später).
Wähle ein .NET-Framework -
Klicke auf Erstellen. Das Konsolenprojekt wird erstellt.
- Installieren Sie IronPDF:
- Verwendung des Visual Studio NuGet -Paketmanagers:
-
Klicke mit der rechten Maustaste auf dein Projekt im Projektmappen-Explorer und wähle "NuGet-Pakete verwalten..."
Werkzeuge & NuGet-Pakete verwalten -
Im NuGet-Paket-Manager nach "IronPDF" suchen und "Installieren" klicken.
Werkzeuge & NuGet-Pakete verwalten- NuGet -Paket direkt herunterladen: Besuchen Sie die NuGet -Paketseite von IronPDF ( https://www.nuget NuGet/packages/ IronPDF/ ).
- IronPDF .DLL-Bibliothek herunterladen: Laden Sie die Bibliothek von der offiziellen IronPDF Website herunter und referenzieren Sie die DLL-Datei in Ihrem Projekt.
(Demo Schritt) Erstellen Sie ein PDF-Dokument mit Tabellendaten
Für dieses Tutorial erstellen wir zuerst ein Beispiel-PDF, das eine einfache Tabelle aus einem HTML-String enthält. Dies gibt uns eine bekannte PDF-Struktur, um den Extraktionsprozess zu demonstrieren. In einem realen Szenario würdest du deine bereits existierenden PDF-Dateien laden.
Füge den IronPDF-Namespace hinzu und setze optional deinen Lizenzschlüssel (IronPDF ist für die Entwicklung kostenlos, erfordert jedoch eine Lizenz für die kommerzielle Nutzung ohne Wasserzeichen):
using IronPdf;
using System; // For StringSplitOptions, Console
using System.IO; // For StreamWriter
// Apply your license key if you have one. Otherwise, IronPDF runs in trial mode.
// License.LicenseKey = "YOUR-TRIAL/PURCHASED-LICENSE-KEY";Imports IronPdf
Imports System ' For StringSplitOptions, Console
Imports System.IO ' For StreamWriter
' Apply your license key if you have one. Otherwise, IronPDF runs in trial mode.
' License.LicenseKey = "YOUR-TRIAL/PURCHASED-LICENSE-KEY";Hier ist der HTML-String für unsere Beispiel-Tabelle:
string HTML = "<html>" +
"<style>" +
"table, th, td {" +
"border:1px solid black;" +
"}" +
"</style>" +
"<body>" +
"<h1>A Simple table example</h1>" + // Corrected typo: h1 not h2
"<table>" +
"<tr>" +
"<th>Company</th>" +
"<th>Contact</th>" +
"<th>Country</th>" +
"</tr>" +
"<tr>" +
"<td>Alfreds Futterkiste</td>" +
"<td>Maria Anders</td>" +
"<td>Germany</td>" +
"</tr>" +
"<tr>" +
"<td>Centro comercial Moctezuma</td>" +
"<td>Francisco Chang</td>" +
"<td>Mexico</td>" +
"</tr>" +
"</table>" +
"<p>To understand the example better, we have added borders to the table.</p>" +
"</body>" +
"</html>";
Verwenden Sie nun ChromePdfRenderer, um aus diesem HTML-Code ein PDF zu erstellen:
var renderer = new ChromePdfRenderer();
PdfDocument pdfDocument = renderer.RenderHtmlAsPdf(HTML);
pdfDocument.SaveAs("table_example.pdf");
Console.WriteLine("Sample PDF 'table_example.pdf' created.");Dim renderer = New ChromePdfRenderer()
Dim pdfDocument As PdfDocument = renderer.RenderHtmlAsPdf(HTML)
pdfDocument.SaveAs("table_example.pdf")
Console.WriteLine("Sample PDF 'table_example.pdf' created.")Die Methode SaveAs speichert die PDF-Datei. Der generierte Code table_example.pdf sieht folgendermaßen aus (konzeptionelles Bild basierend auf HTML):
Suchen Sie nach IronPDF im NuGet-Paket-Manager UI
Alle Textinhalte mit Tabellendaten aus der PDF extrahieren
Um Tabellendaten zu extrahieren, laden wir zuerst die PDF-Datei (entweder die gerade erstellte oder eine bereits vorhandene) und verwenden die Methode ExtractAllText. Diese Methode ruft alle Textinhalte von den PDF-Seiten ab.
// Load the PDF (if you just created it, it's already loaded in pdfDocument)
// If loading an existing PDF:
// PdfDocument pdfDocument = PdfDocument.FromFile("table_example.pdf");
// Or use the one created above:
string allText = pdfDocument.ExtractAllText();' Load the PDF (if you just created it, it's already loaded in pdfDocument)
' If loading an existing PDF:
' PdfDocument pdfDocument = PdfDocument.FromFile("table_example.pdf");
' Or use the one created above:
Dim allText As String = pdfDocument.ExtractAllText()Die Variable allText enthält nun den gesamten Textinhalt aus der PDF-Datei. Du kannst es anzeigen, um die Roh-Extraktion zu sehen:
Console.WriteLine("\n--- Raw Extracted Text ---");
Console.WriteLine(allText);Imports Microsoft.VisualBasic
Console.WriteLine(vbLf & "--- Raw Extracted Text ---")
Console.WriteLine(allText)
Die PDF-Datei, um Text zu extrahieren
Extrahierten Text parsen, um Tabellendaten in C# zu rekonstruieren
Mit dem extrahierten Rohtext besteht die nächste Herausforderung darin, diesen String zu analysieren, um die tabellarischen Daten zu identifizieren und zu strukturieren. Dieser Schritt hängt stark von der Konsistenz und dem Format der Tabellen in deinen PDFs ab.
Allgemeine Parsing-Strategien:
- Zeilentrennzeichen identifizieren: Gebräuchliche Zeilentrennzeichen sind Zeilenumbruchzeichen (
\noder\r\n). - Spalten-Trennzeichen identifizieren: Zellen innerhalb einer Zeile könnten durch mehrere Leerzeichen, Tabs oder spezifische bekannte Zeichen getrennt sein (wie '|' oder ';'). 3. Nicht-Tabellen-Inhalt filtern: Die ExtractAllText-Methode erhält den gesamten Text.
- Nicht-Tabelleninhalte filtern: Die Methode
ExtractAllTextruft den gesamten Text ab. Die C# String.Split-Methode ist ein einfaches Werkzeug dafür.
Die C#-Methode String.Split ist ein grundlegendes Werkzeug dafür. Dieser Code teilt den Text in Zeilen.
Console.WriteLine("\n--- Parsed Table Data (Simple Heuristic) ---");
string[] textLines = allText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in textLines)
{
// Simple filter: skip lines with a period, assuming they are not table data in this example
// and skip lines that are too short or headers if identifiable
if (line.Contains(".") || line.Contains("A Simple table example") || line.Length < 5)
{
continue;
}
else
{
// Further split line into cells based on expected delimiters (e.g., multiple spaces)
// This part requires careful adaptation to your PDF's table structure
// Example: string[] cells = line.Split(new[] { " ", "\t" }, StringSplitOptions.None);
Console.WriteLine(line); // For now, just print the filtered line
}
}Imports Microsoft.VisualBasic
Console.WriteLine(vbLf & "--- Parsed Table Data (Simple Heuristic) ---")
Dim textLines() As String = allText.Split( { ControlChars.Cr, ControlChars.Lf }, StringSplitOptions.RemoveEmptyEntries)
For Each line As String In textLines
' Simple filter: skip lines with a period, assuming they are not table data in this example
' and skip lines that are too short or headers if identifiable
If line.Contains(".") OrElse line.Contains("A Simple table example") OrElse line.Length < 5 Then
Continue For
Else
' Further split line into cells based on expected delimiters (e.g., multiple spaces)
' This part requires careful adaptation to your PDF's table structure
' Example: string[] cells = line.Split(new[] { " ", "\t" }, StringSplitOptions.None);
Console.WriteLine(line) ' For now, just print the filtered line
End If
Next lineDieser Code teilt den Text in Zeilen. Die Bedingung if ist ein sehr einfacher Filter für den Nicht-Tabellentext in diesem speziellen Beispiel . Ausgabe des einfachen gefilterten Textes:
Ausgabe des einfach gefilterten Textes:
Die Konsole zeigt extrahierte Texte an
Wichtige Überlegungen zur Textanalyse-Methode:
- Am besten geeignet für: Textbasierte PDFs mit einfachen, konsistenten Tabellenstrukturen und klaren textuellen Trennzeichen.
- Beschränkungen: Diese Methode kann Schwierigkeiten haben mit:
- Tabellen mit zusammengeführten Zellen oder komplexen geschachtelten Strukturen.
- Tabellen, die als Bilder eingebettet sind (erfordern OCR).
- Tabellen, die als Bilder eingebettet sind (erfordern OCR).
Du kannst die gefilterten Zeilen (die idealerweise Tabellenzeilen darstellen) in einer CSV-Datei speichern:
Strategien zur komplexeren PDF-Tabellenextraktion in C#
using (StreamWriter file = new StreamWriter("parsed_table_data.csv", false))
{
file.WriteLine("Company,Contact,Country"); // Write CSV Header
foreach (string line in textLines)
{
if (line.Contains(".") || line.Contains("A Simple table example") || line.Length < 5)
{
continue;
}
else
{
// For a real CSV, you'd split 'line' into cells and join with commas
// E.g., string[] cells = line.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries);
// string csvLine = string.Join(",", cells);
// file.WriteLine(csvLine);
file.WriteLine(line.Replace(" ", ",").Trim()); // Basic replacement for this example
}
}
}
Console.WriteLine("\nFiltered table data saved to parsed_table_data.csv");Imports Microsoft.VisualBasic
Using file As New StreamWriter("parsed_table_data.csv", False)
file.WriteLine("Company,Contact,Country") ' Write CSV Header
For Each line As String In textLines
If line.Contains(".") OrElse line.Contains("A Simple table example") OrElse line.Length < 5 Then
Continue For
Else
' For a real CSV, you'd split 'line' into cells and join with commas
' E.g., string[] cells = line.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries);
' string csvLine = string.Join(",", cells);
' file.WriteLine(csvLine);
file.WriteLine(line.Replace(" ", ",").Trim()) ' Basic replacement for this example
End If
Next line
End Using
Console.WriteLine(vbLf & "Filtered table data saved to parsed_table_data.csv")Strategien für komplexere PDF-Tabellenextraktion in C#
IronPDF bietet Funktionen, die helfen können: IronPDF bietet Funktionen, die helfen können:
- Verwendung der IronOCR-Funktionen für gescannte Tabellen: Wenn sich Tabellen in Bildern befinden (z. B. gescannte PDFs), werden sie mit
ExtractAllText()allein nicht erfasst. IronOCRs Texterkennung-Funktionalität kann diese Bilder zuerst in Text umwandeln.
// Conceptual OCR usage (refer to IronOCR's documentation for detailed implementation)
// Install Package IronOcr
using IronOcr;
using (var ocrInput = new OcrInput("scanned_pdf_with_table.pdf"))
{
ocrInput.TargetDPI = 300; // Good DPI for OCR accuracy
var ocrResult = new IronOcr().Read(ocrInput);
string ocrExtractedText = ocrResult.Text;
// Now, apply parsing logic to 'ocrExtractedText'
Console.WriteLine("\n--- OCR Extracted Text for Table Parsing ---");
Console.WriteLine(ocrExtractedText);
}' Conceptual OCR usage (refer to IronOCR's documentation for detailed implementation)
' Install Package IronOcr
Imports Microsoft.VisualBasic
Imports IronOcr
Using ocrInput As New OcrInput("scanned_pdf_with_table.pdf")
ocrInput.TargetDPI = 300 ' Good DPI for OCR accuracy
Dim ocrResult = (New IronOcr()).Read(ocrInput)
Dim ocrExtractedText As String = ocrResult.Text
' Now, apply parsing logic to 'ocrExtractedText'
Console.WriteLine(vbLf & "--- OCR Extracted Text for Table Parsing ---")
Console.WriteLine(ocrExtractedText)
End UsingFür detaillierte Anleitungen besuchen Sie die IronOCR-Dokumentation (https://ironsoftware.com/csharp/ocr/). Nach OCR würden Sie den resultierenden Textstring analysieren.
-
Koordinatenbasierte Textextraktion (Fortgeschritten): Während IronPDFs
ExtractAllText()den Textstrom liefert, kann es in einigen Szenarien von Vorteil sein, die x,y-Koordinaten jedes Textabschnitts zu kennen. Wenn IronPDF APIs bietet, um Text mit Informationen zu seinem Begrenzungsrahmen zu erhalten (überprüfen Sie die aktuelle Dokumentation), könnte dies eine anspruchsvollere räumliche Analyse ermöglichen, um Tabellen basierend auf visueller Ausrichtung zu rekonstruieren. -
Konvertierung von PDF in ein anderes Format: IronPDF kann PDFs in strukturierte Formate wie HTML konvertieren. * Verwendung von IronOCR für gescannte Tabellen: Bei Tabellen in Bildern erfasst ExtractAllText() sie nicht.
PdfDocument pdfToConvert = PdfDocument.FromFile("your_document.pdf");
string htmlOutput = pdfToConvert.ToHtmlString();
// Then use an HTML parsing library (e.g., HtmlAgilityPack) to extract tables from htmlOutput.Dim pdfToConvert As PdfDocument = PdfDocument.FromFile("your_document.pdf")
Dim htmlOutput As String = pdfToConvert.ToHtmlString()
' Then use an HTML parsing library (e.g., HtmlAgilityPack) to extract tables from htmlOutput.- Mustererkennung und reguläre Ausdrücke: Für Tabellen mit sehr vorhersehbaren Mustern, aber inkonsistenten Trennzeichen, können komplexe reguläre Ausdrücke, die auf den extrahierten Text angewendet werden, manchmal Tabellendaten isolieren.
Die Wahl der richtigen Strategie hängt von der Komplexität und Konsistenz Ihrer Quelldateien ab. Für viele gängige Geschäftsdokumente mit textbasierten Tabellen ist IronPDFs ExtractAllText in Kombination mit intelligenter C#-Parsing-Logik sehr effektiv. Für bildbasierte Tabellen sind die OCR-Funktionen unerlässlich.
Zusammenfassung
Dieser Artikel demonstrierte, wie man mit IronPDF in C# Tabellendaten aus einem PDF-Dokument extrahiert , wobei der Schwerpunkt auf der Nutzung der Methode ExtractAllText() und der anschließenden String-Analyse lag. IronPDF bietet .NET-Entwicklern ein vielseitiges Toolkit, das viele PDF-bezogene Aufgaben erleichtert, von der Erstellung und Bearbeitung bis zur umfassenden Datenextraktion.
Es bietet Methoden wie ExtractTextFromPage für seitenbezogene Extraktion und unterstützt Konvertierungen aus Formaten wie Markdown oder DOCX zu PDF. Es bietet Methoden wie ExtractTextFromPage zur seitenbezogenen Extraktion und unterstützt Konvertierungen von Formaten wie Markdown oder DOCX in PDF.
IronPDF ist kostenlos für die Entwicklung und bietet eine kostenlose Testlizenz zur Erprobung aller kommerziellen Funktionen. Für die Produktionsbereitstellung stehen verschiedene Lizenzierungsoptionen zur Verfügung.
Weitere Details und fortgeschrittene Anwendungsfälle finden Sie in der offiziellen IronPDF-Dokumentation und den Beispielen (https://ironpdf.com/)

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.
Verwandte Artikel


