
OCR in C# CodeProject Tutorial: Extrahieren von Text aus Bildern mit IronOCR
Die optische Zeichenerkennung (OCR) in C# ermöglicht es Ihnen, maschinenlesbaren Text aus gescannten Dokumenten, Bilddateien und TIFF-Dateien innerhalb von .NET Anwendungen zu extrahieren. Mit IronOCR , einer .NET-nativen OCR-Bibliothek, installieren Sie ein NuGet Paket und können mit wenigen Codezeilen Text aus Bildern lesen – ohne externen Dienst, ohne Laufzeitabhängigkeit, ohne API-Gebühren pro Aufruf.
Starten Sie Ihre kostenlose Testversion von IronOCR , um die folgenden Codebeispiele nachzuvollziehen.
Wie installiert man IronOCR in einem .NET -Projekt?
Der schnellste Weg, OCR zu einem .NET 10-Projekt hinzuzufügen, ist über den NuGet Paketmanager. Öffnen Sie ein Terminal im Projektverzeichnis und führen Sie den .NET CLI-Befehl aus, oder verwenden Sie die Paket-Manager-Konsole innerhalb von Visual Studio:
Nach der Installation lädt der NuGet Paketmanager alle benötigten Assemblys herunter und stellt die Referenzen automatisch her. IronOCR zielt auf .NET Framework 4.6.2+, .NET Core 3.1+ und .NET 5 bis .NET 10 ab und funktioniert daher in Konsolenanwendungen, ASP.NET Core Diensten, WPF-Anwendungen und Azure Functions.
Für lokale Tests ist keine Registrierung eines Lizenzschlüssels erforderlich – auf der Ausgabe wird ein Testwasserzeichen angezeigt, bis eine Lizenz angewendet wird. Fügen Sie die using-Direktive hinzu und übergeben Sie Ihren Schlüssel einmalig beim Start, sobald Sie für den Produktivbetrieb bereit sind:
using IronOcr;
// Apply license key before any OCR calls (production only)
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";Imports IronOcr
' Apply license key before any OCR calls (production only)
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"Auf der IronOCR -Lizenzseite finden Sie Informationen zu Preisen und Aktivierung.
Wie extrahiert man Text aus einer Bilddatei?
Der Kern-OCR-Workflow umfasst drei Objekte: IronTesseract (die Engine), OcrInput (den Eingabebehälter) und OcrResult (die Ausgabe). Das untenstehende Beispiel liest eine PNG-Datei und druckt den erkannten Text auf die Konsole.
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("sample-document.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
input.LoadImage("sample-document.png")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End UsingAusgabe der optischen Zeichenerkennung

IronTesseract umhüllt die Tesseract 5-Engine mit .NET-freundlichen Standardeinstellungen und automatisierter Modellverwaltung. OcrInput.LoadImage akzeptiert PNG-, JPEG-, BMP-, GIF-, TIFF- und WebP-Dateien, sodass Sie selten Formate konvertieren müssen, bevor Sie ein Bild an die Engine übergeben.
Die OcrResult.Text-Eigenschaft gibt eine einfache Zeichenkette aller erkannten Zeichen zurück, die durch Zeilenumbrüche verbunden sind. Für einen reicheren Zugriff -- Wortbegrenzungsboxen, Vertrauenswerte, Text pro Absatz -- navigieren Sie durch die result.Pages-, result.Paragraphs-, result.Words- und result.Characters-Sammlungen.
Wichtige Eigenschaften, die man kennen sollte:
result.Pages[0].Text-- Text von einer einzelnen Seiteresult.Words[n].Textundresult.Words[n].Confidence-- Genauigkeit pro Wort (0,0 -- 1,0)result.Pages[0].Paragraphs-- Absatzsegmentierung für strukturierte Extraktion
Sie können auch ocr.ReadAsync(input) aufrufen, um den UI-Thread in Desktop- oder Webanwendungen frei zu halten.
Wie verarbeiten Sie gescannte Dokumente und TIFF-Dateien?
Mehrseitige TIFF-Dateien sind in Dokumentenscanning-Workflows weit verbreitet. IronOCR bearbeitet sie mit LoadImageFrames, das es Ihnen ermöglicht, genau auszuwählen, welche Frames (Seiten) verarbeitet werden sollen -- nützlich, wenn Sie nur einen Teil eines großen Archivs benötigen.
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
int[] pageIndices = { 0, 1, 2 };
input.LoadImageFrames("scanned-documents.tiff", pageIndices);
// Correct skew and remove noise before reading
input.Deskew();
input.DeNoise();
OcrResult result = ocr.Read(input);
foreach (var page in result.Pages)
{
Console.WriteLine($"Page {page.PageNumber}:");
Console.WriteLine(page.Text);
}Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
Dim pageIndices As Integer() = {0, 1, 2}
input.LoadImageFrames("scanned-documents.tiff", pageIndices)
' Correct skew and remove noise before reading
input.Deskew()
input.DeNoise()
Dim result As OcrResult = ocr.Read(input)
For Each page In result.Pages
Console.WriteLine($"Page {page.PageNumber}:")
Console.WriteLine(page.Text)
Next
End UsingOCR-Ausgabe aus mehrseitiger TIFF-Datei

Deskew dreht das Bild, um jeglichen Schiefstand zu korrigieren, der durch Flachbettscanner entsteht. DeNoise entfernt Sprenkel und JPEG-Artefakte, die die Tesseract-Engine verwirren. Zusammengenommen verbessern diese beiden Vorverarbeitungsfilter die Erkennungsgenauigkeit bei qualitativ schlechten Scans erheblich.
Zusätzliche OcrInput-Filter für schwieriges Ausgangsmaterial verfügbar:
input.Sharpen()-- erhöht den Kantenkontrast bei verschwommenen Bilderninput.Binarize()-- konvertiert in Schwarz-Weiß für Fax-Qualitätsdokumenteinput.Scale(200)-- skaliert kleine Bilder hoch, um die Zeichenabtrennung zu verbesserninput.Rotate(90)-- korrigiert gedrehte Dokumentenausrichtungen
Eine vollständige Liste der Vorverarbeitungsoptionen und deren Anwendungszeitpunkte finden Sie im IronOCR Bildfilterleitfaden .
Wie konfiguriert man die Sprachunterstützung für OCR?
IronOCR liest standardmäßig englischen Text. Um Dokumente in anderen Sprachen zu verarbeiten, installieren Sie das passende Sprach-NuGet-Paket und setzen Sie die Language-Eigenschaft auf der IronTesseract-Instanz.
Konfigurieren Sie anschließend die Engine und fügen Sie für zweisprachige Dokumente eine zweite Sprache hinzu:
using IronOcr;
using IronOcr.Languages;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.German;
// For bilingual documents (e.g. Canadian forms, EU directives)
ocr.AddSecondaryLanguage(OcrLanguage.French);
using var input = new OcrInput();
input.LoadImage("german-invoice.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);Imports IronOcr
Imports IronOcr.Languages
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.German
' For bilingual documents (e.g. Canadian forms, EU directives)
ocr.AddSecondaryLanguage(OcrLanguage.French)
Using input As New OcrInput()
input.LoadImage("german-invoice.png")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End UsingIronOCR unterstützt über 125 Sprachen , die jeweils als separates, schlankes NuGet Paket bereitgestellt werden. Dadurch bleibt Ihre Produktionsbinärdatei klein – es werden nur die Sprachdaten aufgenommen, die Ihre Anwendung tatsächlich benötigt. Die Engine mischt Primär- und Sekundärsprachmodelle während der Erkennung, wenn Sie AddSecondaryLanguage aufrufen.
Wie geht man mit OCR-Fehlern um und verbessert die Erkennungsergebnisse?
Produktionsanwendungen benötigen eine Fehlerbehandlung im Bereich der OCR-Pipeline. Probleme mit der Bildqualität, fehlende Dateien oder nicht unterstützte Formate können Ausnahmen verursachen. Durch das Einbetten des Aufrufs in einen try/catch-Block erhalten Sie einen sauberen Wiederherstellungspfad.
using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
try
{
using var input = new OcrInput();
input.LoadImage("document.png");
input.DeNoise();
input.Deskew();
OcrResult result = ocr.Read(input);
if (result.Text.Length > 0)
{
Console.WriteLine("Recognised text:");
Console.WriteLine(result.Text);
}
else
{
Console.WriteLine("No text was detected in the image.");
}
}
catch (Exception ex)
{
Console.WriteLine($"OCR error: {ex.Message}");
}Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
Try
Using input As New OcrInput()
input.LoadImage("document.png")
input.DeNoise()
input.Deskew()
Dim result As OcrResult = ocr.Read(input)
If result.Text.Length > 0 Then
Console.WriteLine("Recognised text:")
Console.WriteLine(result.Text)
Else
Console.WriteLine("No text was detected in the image.")
End If
End Using
Catch ex As Exception
Console.WriteLine($"OCR error: {ex.Message}")
End TryEinige zusätzliche Einstellungen, die helfen, wenn die Genauigkeit geringer als erwartet ist:
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto-- lässt Tesseract automatisch zwischen einspaltigen, mehrspaltigen und Einzelwort-Layouts wählenocr.Configuration.ReadBarCodes = false-- deaktiviert die Barcode-Erkennung, wenn Sie nur Textdokumente verarbeiten und schnellere Durchlaufzeiten wünschenocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5-- stellt sicher, dass Sie die schnellste verfügbare Engine verwenden
Bei strukturierten Formularen, bei denen die Felder an vorhersehbaren Positionen erscheinen, sollte die regionenbasierte OCR verwendet werden, um nur die relevanten Bereiche zu lesen:
using IronOcr;
using IronSoftware.Drawing;
var ocr = new IronTesseract();
using var input = new OcrInput();
var region = new CropRectangle(x: 50, y: 200, width: 600, height: 100);
input.LoadImage("form.png", region);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);Imports IronOcr
Imports IronSoftware.Drawing
Dim ocr As New IronTesseract()
Using input As New OcrInput()
Dim region As New CropRectangle(x:=50, y:=200, width:=600, height:=100)
input.LoadImage("form.png", region)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End UsingDurch die Beschränkung der Bilderkennung auf einen Bildausschnitt verkürzt sich die Verarbeitungszeit bei großen Bildern um bis zu 90 Prozent. Diese Technik eignet sich gut zum Extrahieren von Rechnungsnummern, zum Auslesen von Formularfeldern und zum Scannen von Ausweisdokumenten. Weitere Details finden Sie im regionalen OCR-Leitfaden .
Wie erstellt man ein durchsuchbares PDF aus erkanntem Text?
Die Umwandlung gescannter Bildarchive in durchsuchbare PDF-Dateien ist einer der wertvollsten Anwendungsfälle für OCR. Die resultierende Datei bewahrt das ursprüngliche visuelle Erscheinungsbild und bettet gleichzeitig eine unsichtbare Textebene ein, die von PDF-Viewern, Suchmaschinen und Bildschirmleseprogrammen indexiert werden kann.
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.Title = "Quarterly Report Q1 2026";
input.LoadImage("page1.png");
input.LoadImage("page2.png");
input.LoadImage("page3.png");
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
Console.WriteLine("Searchable PDF created.");
Console.WriteLine($"Pages processed: {result.Pages.Count}");Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
input.Title = "Quarterly Report Q1 2026"
input.LoadImage("page1.png")
input.LoadImage("page2.png")
input.LoadImage("page3.png")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable-output.pdf")
Console.WriteLine("Searchable PDF created.")
Console.WriteLine($"Pages processed: {result.Pages.Count}")
End UsingAusgabe eines durchsuchbaren PDF-Dokuments

SaveAsSearchablePdf schreibt eine PDF/A-kompatible Datei, bei der jedes erkannte Wort an den genauen Pixelkoordinaten des Originalbildes platziert wird. Adobe Acrobat, Vorschau unter macOS und Foxit Reader unterstützen alle die Volltextsuche in diesen Dateien unmittelbar nach deren Erstellung.
Für webbasierte Dokumentenanzeigen oder nachgeschaltete NLP-Pipelines verwenden Sie stattdessen result.SaveAsHocrFile("output.hocr"). Das hOCR-Format ist ein offener XML-Standard, der neben dem Text auch Begrenzungsrahmen für jedes Wort kodiert und so clientseitige Hervorhebung bei der Suche sowie Barrierefreiheitsanmerkungen auf Wortebene ermöglicht.
Zusätzliche Ausgabeformate verfügbar von OcrResult:
result.SaveAsHocrFile("output.hocr")-- hOCR XML mit Positionsdatenresult.ToXDocument()-- LINQ-abfragbares XDocument zur programmatischen Verarbeitungresult.Pages[0].Text-- einfacher Text pro Seite für Streaming-Pipelines
Für Anwendungen, die bereits mit IronPDF arbeiten, können Sie OcrResult direkt in PDF-Erstellungs-Workflows einbinden und so OCR-Extraktion mit der PDF-Bearbeitung in einem einzigen .NET-Prozess kombinieren.
Wie liest man Barcodes zusammen mit Text?
IronOCR kann Barcodes und QR-Codes lesen, die in dasselbe Bild wie gedruckter Text eingebettet sind, wodurch die Notwendigkeit entfällt, eine separate Barcode-Bibliothek zu verwenden. Aktivieren Sie die Funktion mit einer einzigen Konfigurationseigenschaft:
using IronOcr;
var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using var input = new OcrInput();
input.LoadImage("shipping-label.png");
OcrResult result = ocr.Read(input);
Console.WriteLine("Text:");
Console.WriteLine(result.Text);
Console.WriteLine("Barcodes:");
foreach (var barcode in result.Barcodes)
{
Console.WriteLine($" {barcode.Format}: {barcode.Value}");
}IRON VB CONVERTER ERROR developers@ironsoftware.comUnterstützte Barcode-Formate sind Code 128, Code 39, EAN-13, EAN-8, UPC-A, UPC-E, PDF417, Data Matrix und QR-Code. Alle Details finden Sie im IronOCR Leitfaden zum Lesen von Barcodes .
Diese Funktion ist besonders nützlich in den Bereichen Logistik, Gesundheitswesen und Einzelhandel, wo Versandetiketten, Patientenarmbänder und Produktanhänger sowohl für Menschen lesbaren Text als auch maschinenlesbare Barcodes enthalten.
Wie vergleicht man IronOCR mit anderen .NET OCR-Optionen?
Entwickler, die OCR-Bibliotheken für .NET evaluieren, ziehen typischerweise IronOCR, Tesseract .NET und Cloud-Dienste wie Google Cloud Vision oder Azure Computer Vision in Betracht. Die folgende Tabelle fasst die wichtigsten Unterschiede zusammen:
| Kriterium | IronOCR | Tesseract.NET | Azure Computer Vision |
|---|---|---|---|
| Bereitstellung | Vor Ort oder in der Cloud, keine externen Anrufe | Vor Ort | Nur in der Cloud, Internetverbindung erforderlich |
| Installation | Einzelnes NuGet -Paket | Mehrere Pakete + native Binärdateien | SDK + Azure-Abonnement |
| Sprachpakete | Mehr als 125 über NuGet -Pakete | Manueller Tessdata-Download | Verwaltet von Azure |
| Durchsuchbare PDF-Ausgabe | Eingebauter Methodenaufruf | Nicht enthalten | Nicht enthalten |
| Bildvorverarbeitung | 12+ integrierte Filter | Manuelles Pre-Processing erforderlich | Automatisch (serverseitig) |
| Preismodell | Einmalige unbefristete Lizenz | Open Source (Apache 2.0) | Abrechnung pro Anruf |
Tesseract , das von Google als Open-Source-Projekt gepflegt wird, bildet die Grundlage sowohl von IronOCR als auch von Tesseract .NET . IronOCR bietet .NET-idiomatische Paketierung, automatisches Modellmanagement und die Produktionsausgabefunktionen (durchsuchbares PDF, hOCR-Export), die bei den reinen Tesseract-Bindungen fehlen. Azure Computer Vision bietet zwar höchste Genauigkeit in der Cloud, führt aber zu Netzwerklatenz und Kosten pro Aufruf, die für Workflows mit hohem Datenvolumen oder Offline-Nutzung ungeeignet sind.
Für Szenarien, in denen Datenschutzbestimmungen das Senden von Dokumenten an externe Dienste verbieten – z. B. Krankenakten, Rechtsdokumente, Finanzberichte – ist eine lokale Bibliothek wie IronOCR die richtige Wahl.
Was sind Ihre nächsten Schritte?
Sie verfügen nun über die Bausteine, um OCR zu jeder .NET 10-Anwendung hinzuzufügen: Installation über NuGet, grundlegende Bild-zu-Text-Extraktion, Verarbeitung mehrseitiger TIFF-Dateien, Sprachkonfiguration, Fehlerbehandlung, regionenbasiertes Lesen, Barcode-Erkennung und Generierung durchsuchbarer PDFs.
Um tiefer in die Materie einzutauchen, erkunden Sie diese IronOCR Ressourcen:
- IronOCR -Dokumentationsseite – vollständige API-Referenz und Funktionshandbücher
- Tutorial zu Bildfiltern – detaillierte Anleitung zu allen Vorverarbeitungsfiltern
- Leitfaden zum Lesen von Barcodes – QR-Codes und lineare Barcodes neben Text
- Regionale OCR-Anleitung -- kulturbasierte Erkennung für Formulare und Ausweise
- Sprachreferenz – vollständige Liste der über 125 unterstützten Sprachen
- API-Referenz – alle Klassen, Methoden und Eigenschaften
Bei Fragen zur Lizenzierung oder zur Bereitstellung von IronOCR in einer Produktionsumgebung besuchen Sie die IronOCR Lizenzierungsseite . Eine kostenlose Testlizenz entfernt Wasserzeichen aus der Ausgabe während des Testzeitraums, und das Support-Team von Iron Software steht bei technischen Fragen in jeder Preisstufe zur Verfügung.

Verwandte Artikel

