Zum Fußzeileninhalt springen
VERWENDUNG VON IRONOCR

Wie man in C# eine PDF-Datei per OCR verarbeitet: Text aus gescannten Dokumenten mit .NET extrahieren.

Gescannte PDF-Dokumente stellen for .NET -Entwickler eine anhaltende Herausforderung dar: Der Text existiert nur als Bild, was es unmöglich macht, ihn zu durchsuchen, zu kopieren oder programmatisch zu verarbeiten. Die optische Zeichenerkennung (OCR) löst dieses Problem, indem sie gescannte Bilder in bearbeitbare und durchsuchbare Daten umwandelt – und so Papierdokumente, mit der Kamera aufgenommene Bilder oder beliebige bildbasierte PDF-Dateien in maschinenlesbaren Text verwandelt. Ob es nun um die Digitalisierung von Papierarchiven, die Automatisierung der Datenextraktion oder den Aufbau von Dokumentenverarbeitungspipelines geht – die Fähigkeit, OCR auf PDF-Dateien in C# durchzuführen, ist eine entscheidende Kompetenz.

IronOCR ist eine .NET OCR-Bibliothek, die auf der Tesseract 5-Engine basiert und zusätzliche Genauigkeitsverbesserungen bietet. Es ermöglicht Entwicklern, mit wenigen Codezeilen Text aus beliebigen PDF-Dokumenten – ob gescannt oder nicht – zu extrahieren. Dieser Artikel erläutert die wichtigsten Arbeitsabläufe: grundlegende PDF-OCR, seitenselektive Verarbeitung, regionenspezifische Extraktion und Bildvorverarbeitung für anspruchsvolle Scans.

Wie führt man OCR auf einem PDF in C# durch?

Der schnellste Weg zur PDF-Textextraktion in .NET beginnt mit der Installation von IronOCR über NuGet . Öffne ein Terminal in deinem Projektverzeichnis und führe folgenden Befehl aus:

dotnet add package IronOcr
dotnet add package IronOcr
SHELL

Nach der Installation des Pakets liest das folgende Programm auf oberster Ebene eine gescannte PDF-Datei und gibt den extrahierten Text aus:

using IronOcr;

// Initialize the OCR engine
var ocr = new IronTesseract();

// Load the PDF and perform OCR
using var input = new OcrInput();
input.LoadPdf("scanned-report.pdf");

// Run recognition
OcrResult result = ocr.Read(input);

// Access the extracted text
string text = result.Text;
Console.WriteLine(text);
using IronOcr;

// Initialize the OCR engine
var ocr = new IronTesseract();

// Load the PDF and perform OCR
using var input = new OcrInput();
input.LoadPdf("scanned-report.pdf");

// Run recognition
OcrResult result = ocr.Read(input);

// Access the extracted text
string text = result.Text;
Console.WriteLine(text);
$vbLabelText   $csharpLabel

Die Klasse IronTesseract kapselt Tesseract 5 mit .NET-nativen Optimierungen for .NET Core und .NET Framework Ziele. Das Objekt OcrInput verwaltet das Laden von PDFs und das interne Seitenrendering. Wenn Read aufgerufen wird, analysiert der OCR-Prozess jede Seite und gibt ein OcrResult zurück, das den vollständigen extrahierten Text Plus strukturierte Daten über Absätze, Zeilen, Wörter und deren Pixelkoordinaten enthält.

Das Ergebnis kann in eine Textdatei geschrieben, an nachgelagerte Verarbeitungslogik übergeben, in einer Datenbank gespeichert oder in eine Dokumentenindexierungspipeline eingespeist werden. Weitere Informationen zur zugrundeliegenden Engine finden Sie in der Tesseract-OCR-Dokumentation und der IronOCR -API-Referenz .

Eingabe

So extrahieren Sie Text aus gescannten PDFs mit C# .NET OCR: PDF-Bild 1 – Beispiel-PDF-Eingabe

Ausgabe

So extrahieren Sie Text aus gescannten PDFs mit C# .NET OCR PDF: Bild 2 - Konsolenausgabe

Wie liest man bestimmte Seiten aus einer PDF-Datei?

Die Bearbeitung jeder einzelnen Seite eines langen Dokuments ist Zeit- und Speicherverschwendung, wenn nur bestimmte Seiten relevanten Inhalt enthalten. Mit IronOCR können Sie gezielt bestimmte Seiten ansprechen, indem Sie nullbasierte Seitenindizes an LoadPdf übergeben:

using IronOcr;
using System.Collections.Generic;

var ocr = new IronTesseract();

// Specify pages to process (zero-based: 0 = first page)
var targetPages = new List<int> { 0, 2, 4 };

using var input = new OcrInput();
input.LoadPdf("lengthy-document.pdf", pageIndices: targetPages);

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
using System.Collections.Generic;

var ocr = new IronTesseract();

// Specify pages to process (zero-based: 0 = first page)
var targetPages = new List<int> { 0, 2, 4 };

using var input = new OcrInput();
input.LoadPdf("lengthy-document.pdf", pageIndices: targetPages);

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Das selektive Laden von Seiten reduziert sowohl die Verarbeitungszeit als auch den Speicherverbrauch, was besonders wichtig ist bei der Arbeit mit Archiven, die mehrere hundert Seiten umfassen, von denen nur eine Handvoll Seiten die benötigten Daten enthalten. Die nullbasierte Indexkonvention entspricht den Standard- .NET -Sammlungen: Seitenindex 0 ist die erste Seite des Dokuments.

Bei Dokumenten, bei denen die relevanten Seiten nicht im Voraus bekannt sind, empfiehlt es sich, zunächst einen schnellen Durchlauf des gesamten Dokuments mit reduzierter DPI-Auflösung durchzuführen, um die Seitenzahlen zu ermitteln, und anschließend einen weiteren Durchlauf mit vollen Einstellungen nur für diese Seiten durchzuführen.

Mehr über die Steuerung auf Seitenebene erfahren Sie in der IronOCR Dokumentation zur Seitenauswahl .

Wie extrahiert man Daten aus einem bestimmten Bereich einer Seite?

Bei der Rechnungsverarbeitung, der Digitalisierung von Formularen und der Analyse strukturierter Dokumente ist es häufig erforderlich, Text aus einem definierten Bereich zu extrahieren, anstatt eine ganze Seite zu scannen. IronOCR unterstützt regionsspezifische OCR über den Parameter ContentAreas, der ein Array von Rectangle-Objekten akzeptiert, die angeben, welche Teile jeder Seite analysiert werden sollen:

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();

// Define the scan region: X, Y, Width, Height (all in pixels from top-left)
var invoiceFields = new Rectangle[]
{
    new Rectangle(130, 290, 250, 50)   // Invoice number field
};

using var input = new OcrInput();
input.LoadPdf("invoice.pdf", contentAreas: invoiceFields);

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();

// Define the scan region: X, Y, Width, Height (all in pixels from top-left)
var invoiceFields = new Rectangle[]
{
    new Rectangle(130, 290, 250, 50)   // Invoice number field
};

using var input = new OcrInput();
input.LoadPdf("invoice.pdf", contentAreas: invoiceFields);

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Der Konstruktor Rectangle benötigt vier ganzzahlige Parameter: die X-Koordinate, die Y-Koordinate, die Breite und die Höhe – alle gemessen in Pixeln von der oberen linken Ecke der gerenderten Seite. Die Fokussierung auf einen kleinen Bereich anstatt auf eine ganze Seite reduziert sowohl die OCR-Zeit als auch die Wahrscheinlichkeit, dass die Engine umgebende Störungen oder nicht zusammenhängende Textfelder erfasst.

Für Workflows zur Stapelverarbeitung von Rechnungen kombinieren Sie die Regionenextraktion mit der Iteration über result.Pages, um strukturierte Daten aus der gleichen Feldposition über Hunderte von Dokumenten hinweg zu extrahieren. Jede Suchergebnisseite zeigt den erkannten Text für ihren jeweiligen Inhaltsbereich separat an.

Das Beispiel für IronOCR -Inhaltsbereiche bietet zusätzliche Konfigurationsoptionen für Szenarien mit mehreren Regionen.

Eingabe

So extrahieren Sie Text aus gescannten PDFs mit C# .NET OCR: PDF: Bild 3 – Beispielrechnung

Ausgabe

So extrahieren Sie Text aus gescannten PDFs mit C# .NET OCR PDF: Bild 4 - Ausgabe der extrahierten Daten

Wie lässt sich die OCR-Genauigkeit bei gescannten Dokumenten verbessern?

In der Praxis eingescannte Dokumente weisen häufig Qualitätsprobleme auf: schiefe Seiten, geringe Auflösung oder digitales Rauschen, das durch die Scanhardware oder -software verursacht wird. IronOCR beinhaltet eine Reihe von Bildvorverarbeitungsfiltern, die diese Probleme beheben, bevor die Erkennungs-Engine ausgeführt wird:

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
// Load PDF at higher DPI for improved text recognition on small fonts
input.LoadPdf("poor-quality-scan.pdf", dpi: 300);

// Apply image correction filters
input.Deskew();    // Automatically straighten rotated pages
input.DeNoise();   // Remove scanning artifacts and speckles

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
// Load PDF at higher DPI for improved text recognition on small fonts
input.LoadPdf("poor-quality-scan.pdf", dpi: 300);

// Apply image correction filters
input.Deskew();    // Automatically straighten rotated pages
input.DeNoise();   // Remove scanning artifacts and speckles

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Der Parameter dpi steuert die Auflösung, in der PDF-Seiten vor der Erkennung gerendert werden. Höhere Werte – 200 bis 300 DPI – verbessern die Genauigkeit bei Dokumenten mit kleinem oder dichtem Text, allerdings auf Kosten eines etwas höheren Speicherbedarfs während der Verarbeitung. Die Methode Deskew erkennt und korrigiert die Seitendrehung automatisch. DeNoise entfernt Flecken und Artefakte, die den Zeichenerkennungsschritt beeinträchtigen könnten.

Für Dokumente, die eine aggressivere Bildkorrektur erfordern, bietet IronOCR auch Kontrastverstärkung, Binarisierung (Umwandlung von Seiten in Schwarzweiß) und Skalierungsanpassungen. Durch die sequentielle Kombination mehrerer Filter lassen sich aus Scans, die andernfalls zu einer verstümmelten Ausgabe führen würden, brauchbare Texte gewinnen. Die vollständige Liste der verfügbaren Vorverarbeitungsoperationen finden Sie in der IronOCR Bildfilterreferenz .

Wie gehen Sie mit passwortgeschützten Dokumenten in verschiedenen Formaten um?

IronOCR ist nicht auf Standard-PDF-Dateien beschränkt. Die Bibliothek verarbeitet eine Reihe von Eingabeszenarien, die häufig in Dokumentenverarbeitungs-Workflows auftreten.

Passwortgeschützte PDFs werden unterstützt, indem die Anmeldeinformationen während der Eingabeerstellung übergeben werden:

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("protected.pdf", password: "secret123");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("protected.pdf", password: "secret123");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Bildformate -- PNG, JPEG, TIFF, BMP, GIF und mehrseitiges TIFF -- werden mit den entsprechenden LoadImage oder LoadImageFrames Methoden geladen. Die gleichen Vorverarbeitungsfilter und Optionen zur Regionsausrichtung gelten unabhängig vom Eingabeformat.

Mehrsprachige Dokumente werden über das Sprachpaketsystem von IronOCR verarbeitet. Die Bibliothek wird standardmäßig mit Englisch ausgeliefert und unterstützt über 125 zusätzliche Sprachpakete für Latein, Kyrillisch, CJK, Arabisch und weitere Schriftsysteme. Laden Sie zusätzliche Sprachen, bevor Sie Read aufrufen:

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.German;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.German;
$vbLabelText   $csharpLabel

Für Dokumente, die mehrere Sprachen auf derselben Seite mischen, steht der Modus MultiLanguage zur Verfügung. Dies ist besonders wertvoll für die Rechnungsverarbeitung in internationalen Umgebungen, wo Kopfzeilen, Positionen und Adressen in verschiedenen Sprachen erscheinen können.

Die Bereitstellung funktioniert unter Windows, Linux, macOS und in Cloud-Umgebungen, einschließlich Azure und Docker-Containern.

Wie erstellt man durchsuchbare PDFs aus gescannten Dokumenten?

Neben der Extraktion von Text in Zeichenketten kann IronOCR durchsuchbare PDF-Dateien erzeugen – eine PDF-Datei, bei der das ursprüngliche gescannte Bild als visuelle Ebene erhalten bleibt, während eine unsichtbare Textebene für Such- und Kopiervorgänge eingebettet wird. Dies ist das Standardformat, das von Professional Dokumentenscannern erzeugt wird.

Die IronOCR Funktion zum Durchsuchen von PDFs akzeptiert einen OcrResult-Code und erstellt eine neue PDF-Datei:

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("scanned-archive.pdf");

OcrResult result = ocr.Read(input);

// Save as a searchable PDF
result.SaveAsSearchablePdf("output-searchable.pdf");
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("scanned-archive.pdf");

OcrResult result = ocr.Read(input);

// Save as a searchable PDF
result.SaveAsSearchablePdf("output-searchable.pdf");
$vbLabelText   $csharpLabel

Die Ausgabedatei kann mit jedem PDF-Reader geöffnet werden. Textauswahl-, Such- und Kopiervorgänge arbeiten auf der eingebetteten Textebene, während das ursprüngliche Scan-Erscheinungsbild erhalten bleibt. Dieses Format ist häufig erforderlich für Compliance-Archive, juristische Dokumentenablagen und Enterprise Content-Management-Systeme.

Für zusätzliche Ausgabeformate stellt das OcrResult-Objekt auch seitenweise Konfidenzwerte, wortbezogene Begrenzungsrahmen und strukturierte Absatzdaten bereit – allesamt nützlich für nachfolgende Klassifizierungs- oder Indexierungsaufgaben.

Wie liest man Barcodes und QR-Codes zusammen mit Text?

Dokumentenverarbeitungspipelines müssen häufig sowohl für Menschen lesbaren Text als auch maschinenlesbare Codes aus demselben Dokument extrahieren. IronOCR kann Barcodes und QR-Codes während desselben OCR-Durchlaufs erkennen und dekodieren, ohne dass eine separate Bibliothek erforderlich ist.

Aktivieren Sie das Barcode-Lesen auf der IronTesseract Instanz vor der Verarbeitung:

using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;

using var input = new OcrInput();
input.LoadPdf("shipment-labels.pdf");

OcrResult result = ocr.Read(input);

// Access recognized text
Console.WriteLine(result.Text);

// Access barcode data
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Type: {barcode.Format}, Value: {barcode.Value}");
}
using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;

using var input = new OcrInput();
input.LoadPdf("shipment-labels.pdf");

OcrResult result = ocr.Read(input);

// Access recognized text
Console.WriteLine(result.Text);

// Access barcode data
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Type: {barcode.Format}, Value: {barcode.Value}");
}
$vbLabelText   $csharpLabel

Dies ist besonders nützlich für die Verarbeitung von Versandetiketten, die Bestandsverwaltung und alle Arbeitsabläufe, bei denen Barcodes und gedruckter Text auf gescannten Dokumenten zusammen vorkommen. Der IronOCR Leitfaden zum Lesen von Barcodes umfasst unterstützte Formate wie Code 128, QR-Codes, Data Matrix und PDF417.

Worin besteht der Unterschied zwischen den IronOCR Eingabetypen?

IronOCR bietet zwei Hauptansätze zum Laden von PDF-Dateien, die jeweils für unterschiedliche Szenarien geeignet sind:

Vergleich der IronOCR PDF-Eingabemethoden
Ansatz Klasse Am besten für Anmerkungen
Allgemeine Eingabe `OcrInput.LoadPdf()` Die meisten Anwendungsfälle Unterstützt alle Vorverarbeitungsfilter, Seitenauswahl und Inhaltsbereiche.
PDF-spezifisch `OcrPdfInput` Einfache Szenarien Komfortverpackung; weniger Konfigurationsmöglichkeiten
Bilddateien `OcrInput.LoadImage()` PNG, JPEG, TIFF, BMP Gleiche Vorverarbeitung und Regionszuordnung wie bei der PDF-Eingabe
Mehrseitiges TIFF `OcrInput.LoadImageFrames()` Faxarchive, Scannerausgabe Verarbeitet jedes Frame als separate Seite

Für die meisten Produktionsszenarien ist OcrInput.LoadPdf() die empfohlene Vorgehensweise, da sie die vollständige Vorverarbeitungs- und Konfigurations-API bereitstellt. OcrPdfInput eignet sich gut für schnelles Prototyping oder Situationen, in denen die Standardeinstellungen ausreichen.

Was sind Ihre nächsten Schritte?

Die obenstehenden Codebeispiele decken die wichtigsten IronOCR Workflows für die PDF-OCR in C# ab. Hier ist eine kurze Checkliste für den nächsten Schritt:

  • Installieren Sie das Paket : dotnet add package IronOcr oder suchen Sie auf NuGet nach IronOCR .
  • Führen Sie das Basisbeispiel aus : Bestätigen Sie die Textextraktion aus einer Beispiel-PDF-Datei, bevor Sie die vollständige Pipeline-Logik erstellen.
  • Vorverarbeitung anwenden : Bei der Arbeit mit gescannten Dokumenten die Aufrufe Deskew und DeNoise hinzufügen und mit repräsentativen Beispielen testen.
  • Weitere Funktionen entdecken : Durchsuchbare PDF-Ausgabe , Barcode-Lesung , Mehrsprachigkeit und Ausgabe strukturierter Daten
  • Hinweise zur Bereitstellung beachten : Artikel zur Bereitstellung von Azure, Docker und Linux behandeln umgebungsspezifische Konfigurationen.
  • Kostenlose Testversion : Starten Sie eine kostenlose Testversion , um alle Funktionen zu testen, bevor Sie eine Lizenz erwerben.
  • Lizenz erwerben : Die IronOCR Lizenzoptionen decken sowohl Einzelentwickler als auch Enterprise ab und beinhalten die lizenzgebührenfreie Weitergabe.

Für Fragen zu konkreten Anwendungsfällen bietet die IronOCR -Anleitungsbibliothek Schritt-für-Schritt-Artikel, die Dutzende von Szenarien abdecken. Die vollständige API-Oberfläche ist in der IronOCR API-Referenz dokumentiert.

Häufig gestellte Fragen

Welcher minimale Code ist für die OCR-Texterkennung (OCR) einer PDF-Datei in C# erforderlich?

Mit IronOCR ist der minimale Code wie folgt: Erstellen Sie eine IronTesseract-Instanz, erstellen Sie ein OcrInput-Objekt, rufen Sie input.LoadPdf mit dem Dateipfad auf und anschließend ocr.Read(input). Die Eigenschaft result.Text gibt die extrahierte Zeichenkette zurück.

Wie installiert man IronOCR in einem .NET -Projekt?

Führen Sie im Terminal den Befehl „dotnet add package IronOCR “ aus oder suchen Sie in Visual Studio im NuGet Paketmanager nach IronOCR .

Kann IronOCR nur bestimmte Seiten einer PDF-Datei verarbeiten?

Ja. Eine Liste weitergeben Die Funktion LoadPdf übergibt dem Parameter pageIndices die nullbasierten Seitenindizes. Dadurch werden nur die angegebenen Seiten gerendert und verarbeitet, was Zeit und Speicherverbrauch reduziert.

Wie extrahiert man Text aus einem bestimmten Bereich einer gescannten PDF-Datei?

Übergeben Sie ein Array von Rectangle-Objekten an den contentAreas-Parameter von LoadPdf. Jedes Rechteck gibt die X-Position, die Y-Position, die Breite und die Höhe in Pixeln von der oberen linken Ecke der Seite an.

Welche Vorverarbeitungsfilter bietet IronOCR für gescannte Dokumente?

IronOCR bietet Funktionen wie Deskew (Korrektur der Seitendrehung), DeNoise (Entfernung von Scanartefakten), Kontrastverbesserung, Binarisierung und Skalierungsanpassung. Diese Funktionen lassen sich kombinieren, um die Genauigkeit bei Scans mit geringer Qualität zu verbessern.

Unterstützt IronOCR passwortgeschützte PDF-Dateien?

Ja. Übergeben Sie die Passwortzeichenfolge an den Passwortparameter von LoadPdf. Die Bibliothek entschlüsselt das Dokument, bevor die Seiten für die OCR gerendert werden.

Kann IronOCR durchsuchbare PDF-Dateien erstellen?

Ja. Nach dem Aufruf von `ocr.Read(input)` rufen Sie `result.SaveAsSearchablePdf` mit dem Ausgabedateipfad auf. Die resultierende PDF-Datei enthält den Originalscan als visuelle Ebene sowie eine eingebettete, unsichtbare Textebene für Such- und Kopiervorgänge.

Welche Sprachen unterstützt IronOCR?

IronOCR unterstützt über 125 Sprachpakete, darunter lateinische, kyrillische, CJK-, arabische und weitere Schriftsysteme. Legen Sie die Language-Eigenschaft der IronTesseract-Instanz fest, bevor Sie die Read-Methode aufrufen.

Kann IronOCR Barcodes und QR-Codes aus PDF-Dokumenten lesen?

Ja. Setzen Sie ocr.Configuration.ReadBarCodes auf true, bevor Sie Read aufrufen. Die OcrResult.Barcodes-Sammlung enthält die dekodierten Werte und Formattypen für alle erkannten Codes.

Funktioniert IronOCR unter Linux und in Docker-Containern?

Ja. IronOCR unterstützt die Bereitstellung unter Windows, Linux, macOS und in Cloud-Umgebungen, einschließlich Azure und Docker-Containern. Die IronSoftware-Dokumentation enthält umgebungsspezifische Einrichtungsanleitungen.

Kannaopat Udonpant
Software Ingenieur
Bevor er Software-Ingenieur wurde, absolvierte Kannapat ein PhD in Umweltressourcen an der Hokkaido University in Japan. Während seines Studiums wurde Kannapat auch Mitglied des Vehicle Robotics Laboratory, das Teil der Fakultät für Bioproduktionstechnik ist. Im Jahr 2022 nutzte er seine C#-Kenntnisse, um dem Engineering-Team von Iron Software ...
Weiterlesen

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an