# C# OCR Image to Text Tutorial: Convert Images to Text Without Tesseract
Möchten Sie Bilder in C# ohne den Aufwand komplexer Tesseract-Konfigurationen in Text umwandeln? Dieses umfassende IronOCR C#-Tutorial zeigt Ihnen, wie Sie in Ihren .NET-Anwendungen mit nur wenigen Codezeilen leistungsstarke optische Zeichenerkennung implementieren können.
*as-heading:2(Schnellstart: Text aus einem Bild in einer Zeile extrahieren)*
Dieses Beispiel zeigt, wie einfach es ist, IronOCR zu erfassen – nur eine Zeile C# verwandelt Ihr Bild in Text. Es demonstriert die Initialisierung der OCR-Engine und das sofortige Lesen und Abrufen von Text ohne komplexe Einrichtung.
```cs
:title=Start OCR in Seconds with IronOCR!
string text = new IronTesseract().Read("image.png").Text;
```
<div class="hsg-featured-snippet">
<h3>Minimaler Arbeitsablauf (5 Schritte)</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronOcr/">Laden Sie IronOCR herunter – die C#-OCR-Bibliothek zur Bild-zu-Text-Konvertierung.</a></li>
<li>Verwenden Sie <code>IronTesseract</code> Klasse, um Text sofort aus Bildern zu lesen.</li>
<li>Bildfilter anwenden, um die OCR-Genauigkeit bei Scans mit geringer Qualität zu verbessern.</li>
<li>Mehrere Sprachen mit herunterladbaren Sprachpaketen verarbeiten</li>
<li>Ergebnisse als durchsuchbare PDFs exportieren oder Textzeichenfolgen extrahieren</li>
</ol>
</div>
## Wie lese ich Text von Bildern in .NET-Anwendungen?
Um C# OCR Bild-zu-Text-Funktionalität in Ihren .NET-Anwendungen zu erreichen, benötigen Sie eine zuverlässige OCR-Bibliothek. IronOCR bietet eine verwaltete Lösung, die die `IronOcr.IronTesseract`-Klasse verwendet, um sowohl Genauigkeit als auch Geschwindigkeit ohne externe Abhängigkeiten zu maximieren.
Installieren Sie zuerst IronOCR in Ihrem Visual Studio-Projekt. Sie können die [IronOCR DLL direkt herunterladen](https://www.nuget.org/packages/IronOcr/) oder den [NuGet Package Manager](https://www.nuget.org/packages/IronOcr/) verwenden.
```shell
:ProductInstall
```
## Warum IronOCR für C# OCR ohne Tesseract wählen?
Wenn Sie Bilder in C# in Text umwandeln müssen, bietet IronOCR erhebliche Vorteile gegenüber traditionellen Tesseract-Implementierungen:
- Funktioniert sofort in reinen .NET-Umgebungen
- Keine Tesseract-Installation oder -Konfiguration erforderlich
- Führt die neuesten Engines aus: **Tesseract 5** (plus Tesseract 4 & 3)
- Kompatibel mit .NET Framework 4.6.2+, .NET Standard 2+ und .NET Core 2, 3, 5, 6, 7, 8, 9 und 10
- Verbessert Genauigkeit und Geschwindigkeit im Vergleich zu herkömmlichem Tesseract
- Unterstützt Xamarin, Mono, Azure und Docker-Deployments
- Verwalten komplexer Tesseract-Wörterbücher über NuGet-Pakete
- Unterstützt PDFs, Multi-Frame-TIFFs und alle wichtigen Bildformate automatisch
- Korrigiert niedrige Qualität und verzerrte Scans für optimale Ergebnisse
## Wie man das IronOCR C# Tutorial für grundlegendes OCR verwendet?
Dieses Iron Tesseract C#-Beispiel zeigt den einfachsten Weg, Text aus einem Bild mit IronOCR zu lesen. Die `IronOcr.IronTesseract`-Klasse extrahiert Text und gibt ihn als String zurück.
```csharp
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.LowQuality.tiff", pageindices);
input.Deskew(); // removes rotation and perspective
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
```
Dieser Code erreicht 100% Genauigkeit bei klaren Bildern und extrahiert Text genau so, wie er erscheint:
```txt
IronOCR Simple Example
In this simple example we test the accuracy of our C# OCR library to read text from a PNG Image. This is a very basic test, but things will get more complicated as the tutorial continues.
The quick brown fox jumps over the lazy dog
```
Die `IronTesseract`-Klasse bearbeitet intern komplexe OCR-Operationen. Sie scannt automatisch die Ausrichtung, optimiert die Auflösung und verwendet KI, um Text aus Bildern mit menschlicher Genauigkeit zu lesen.
Trotz der ausgeklügelten Verarbeitung im Hintergrund - einschließlich Bildanalyse, Engine-Optimierung und intelligenter Texterkennung - entspricht der OCR-Prozess der menschlichen Lesegeschwindigkeit und erhält außergewöhnliche Genauigkeitsniveaus.

*Screenshot, der die Fähigkeit von IronOCR demonstriert, Text aus einem PNG-Bild mit perfekter Genauigkeit zu extrahieren*
## Wie man fortgeschrittenes C# OCR ohne Tesseract-Konfiguration implementiert?
Für Produktionsanwendungen, die optimale Leistung erfordern, wenn Sie in C# Bilder in Text umwandeln, verwenden Sie die `OcrInput` und `IronTesseract`-Klassen zusammen. Dieser Ansatz bietet fein abgestimmte Kontrolle über den OCR-Prozess.
### Funktionen der `OcrInput`-Klasse
- Verarbeitet mehrere Bildformate: JPEG, TIFF, GIF, BMP, PNG
- Importiert vollständige PDFs oder spezifische Seiten
- Verbessert automatisch Kontrast, Auflösung und Bildqualität
- Korrigiert Drehung, Rauschunterdrückung, Verzerrung und negative Bilder
### Funktionen der `IronTesseract`-Klasse
- Zugriff auf über 127 vorkonfigurierte Sprachen
- Enthält Tesseract 5, 4 und 3 Engines
- Dokumenttyp-Spezifikation (Screenshot, Ausschnitt oder vollständiges Dokument)
- Integrierte Barcode-Lesefähigkeiten
- Mehrere Ausgabeformate: durchsuchbare PDFs, HOCR HTML, DOM-Objekte und Zeichenfolgen
### Wie beginnen Sie mit `OcrInput` und `IronTesseract`?
Hier ist eine empfohlene Konfiguration für dieses IronOCR C#-Tutorial, die gut mit den meisten Dokumenttypen funktioniert:
```csharp
using IronOcr;
using IronSoftware.Drawing;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// restrict OCR to a content area for faster processing
Rectangle contentArea = new Rectangle(x: 215, y: 1250, height: 280, width: 1335);
input.LoadImage("img/ComSci.png", contentArea);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
```
Diese Konfiguration erreicht konstant nahezu perfekte Genauigkeit bei Scans mittlerer Qualität. Die `LoadImageFrames`-Methode bearbeitet effizient mehrseitige Dokumente, was sie ideal für Batch-Verarbeitungsszenarien macht.
<br />
<center>
<a href="/img/tutorials/how-to-read-text-from-an-image-in-csharp-net/Potter.tiff" target="_blank">
<img src="/img/tutorials/how-to-read-text-from-an-image-in-csharp-net/Potter.thumb.png" alt="Mehrseitiges TIFF-Dokument mit Harry-Potter-Text, bereit für die C#-OCR-Verarbeitung" class="img-responsive add-shadow img-margin" style="max-height:250px; border:1px solid gray" />
</a>
</center>
*Beispiel-TIFF-Dokument, das die Fähigkeiten von IronOCR zur Extraktion mehrseitiger Texte demonstriert.*
Die Fähigkeit, Text aus Bildern und Barcodes in gescannten Dokumenten wie TIFFs zu lesen, zeigt, wie IronOCR komplexe OCR-Aufgaben vereinfacht. Die Bibliothek überzeugt bei realen Dokumenten und verarbeitet problemlos mehrseitige TIFFs und [PDF-Textextraktion](/csharp/ocr/how-to/input-pdfs/).
### Wie verarbeitet IronOCR niedrigqualitative Scans?
<br />
<center>
<a href="/img/tutorials/how-to-read-text-from-an-image-in-csharp-net/Potter.LowQuality.tiff" target="_blank">
<img src="/img/tutorials/how-to-read-text-from-an-image-in-csharp-net/Potter.LowQualitythumb.png" alt="Ein Scan von geringer Qualität mit digitalem Rauschen demonstriert die Bildverbesserungsfähigkeiten von IronOCR." class="img-responsive add-shadow img-margin" style="max-height:250px; border:1px solid gray" />
</a>
</center>
*Niedrig aufgelöste, verrauschte Dokumente, die IronOCR mithilfe von Bildfiltern präzise verarbeiten kann.*
Beim Arbeiten mit unvollkommenen Scans mit Verzerrung und digitalem Rauschen übertrifft **IronOCR andere C# OCR-Bibliotheken**. Es ist speziell für reale Szenarien konzipiert und nicht für makellose Testbilder.
```csharp
// PM> Install IronOcr.Languages.Arabic
using IronOcr;
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;
using OcrInput input = new OcrInput();
input.LoadImageFrame("img/arabic.gif", 1);
// add image filters if needed
// In this case, even thought input is very low quality
// IronTesseract can read what conventional Tesseract cannot.
OcrResult result = ocr.Read(input);
// Console can't print Arabic on Windows easily.
// Let's save to disk instead.
result.SaveAsTextFile("arabic.txt");
```
Durch die Verwendung von `Input.Deskew()` verbessert sich die Genauigkeit bei minderwertigen Scans auf **99,8%**, fast gleich mit Qualitätsresultaten. Dies zeigt, warum IronOCR die bevorzugte Wahl für C# OCR ohne Tesseract-Komplikationen ist.
Bildfilter können die Bearbeitungszeit leicht erhöhen, verkürzen aber erheblich die Gesamt-OCR-Dauer. Das richtige Gleichgewicht hängt von Ihrer Dokumentqualität ab.
Für die meisten Szenarien bieten `Input.Deskew()` und `Input.DeNoise()` zuverlässige Verbesserungen der OCR-Leistung. Erfahren Sie mehr über [Bildvorverarbeitungstechniken](/csharp/ocr/tutorials/c-sharp-ocr-image-filters/).
## Wie optimiere ich die OCR-Leistung und -Geschwindigkeit?
Der wichtigste Faktor, der die OCR-Geschwindigkeit beeinflusst, wenn Sie Bilder in C# in Text umwandeln, ist die Eingabequalität. Eine höhere DPI (~200 dpi) mit minimalem Rauschen liefert die schnellsten und genauesten Ergebnisse.
Während IronOCR hervorragend darin ist, unvollkommene Dokumente zu korrigieren, erfordert diese Verbesserung zusätzliche Rechenzeit.
Wählen Sie Bildformate mit minimalen Kompressionsartefakten. TIFF und PNG führen in der Regel zu schnelleren Ergebnissen als JPEG aufgrund geringeren digitalen Rauschens.
### Welche Bildfilter verbessern die OCR-Geschwindigkeit?
Die folgenden Filter können die Leistung in Ihrem C# OCR Bild-zu-Text-Arbeitsablauf erheblich verbessern:
- **`OcrInput.Rotate(double degrees)`:** Dreht Bilder im Uhrzeigersinn (negativ für gegen den Uhrzeigersinn)
- **`OcrInput.Binarize()`:** Wandelt in Schwarz/Weiß um, verbessert die Leistung in kontrastarmen Szenarien
- **`OcrInput.ToGrayScale()`:** Wandelt in Graustufen um für potenzielle Geschwindigkeitsverbesserungen
- **`OcrInput.Contrast()`:** Passt den Kontrast automatisch für bessere Genauigkeit an
- **`OcrInput.DeNoise()`:** Entfernt digitale Artefakte, wenn Rauschen erwartet wird
- **`OcrInput.Invert()`:** Kehrt Farben für Weiß-auf-Schwarz-Text um
- **`OcrInput.Dilate()`:** Erweitert Textgrenzen
- **`OcrInput.Erode()`:** Reduziert Textgrenzen
- **`OcrInput.Deskew()`:** Korrigiert die Ausrichtung - essenziell für verzerrte Dokumente
- **`OcrInput.DeepCleanBackgroundNoise()`:** Aggressive Rauschunterdrückung
- **`OcrInput.EnhanceResolution`:** Verbessert die Qualität von Bildern mit niedriger Auflösung
- **`OcrInput.DetectPageOrientation()`**: Erkennt und korrigiert die Seitenrotation. Geben Sie ein `OrientationDetectionMode` an, um den Genauigkeits-/Geschwindigkeits-Kompromiss zu steuern: `Fast`, `Balanced`, `Detailed` oder `ExtremeDetailed` (v2025.8.6 hinzugefügt)
`Scale()` und `EnhanceResolution()` sind mit `SaveAsSearchablePdf()` aufgrund eines bekannten Problems in v2025.12.3 nicht kompatibel. Alle anderen Filter funktionieren korrekt mit durchsuchbarer PDF-Ausgabe.
### Wie konfigurieren Sie IronOCR für maximale Geschwindigkeit?
Verwenden Sie diese Einstellungen zur Geschwindigkeitsoptimierung bei hochwertigen Scans:
```csharp
using IronOcr;
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
// We can add any number of languages.
ocr.AddSecondaryLanguage(OcrLanguage.English);
// Optionally add custom tesseract .traineddata files by specifying a file path
using OcrInput input = new OcrInput();
input.LoadImage("img/MultiLanguage.jpeg");
OcrResult result = ocr.Read(input);
result.SaveAsTextFile("MultiLanguage.txt");
```
Diese optimierte Konfiguration hält **99,8%** Genauigkeit bei gleichzeitiger Verbesserung der Geschwindigkeit um **35%** gegenüber den Standardeinstellungen.
## Wie Sie bestimmte Bildbereiche mit C# OCR lesen können?
Das unten stehende Iron Tesseract C#-Beispiel zeigt, wie spezifische Regionen mit `System.Drawing.Rectangle` anvisiert werden können. Diese Technik ist von unschätzbarem Wert für die Verarbeitung standardisierter Formulare, bei denen Text an vorhersehbaren Stellen erscheint.
### Kann IronOCR zugeschnittene Bereiche für schnellere Ergebnisse verarbeiten?
Mit pixelbasierten Koordinaten können Sie die OCR auf bestimmte Bereiche begrenzen, die Geschwindigkeit erheblich verbessern und unerwünschte Textextraktion verhindern:
```csharp
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", pageindices);
OcrResult result = ocr.Read(input);
Console.WriteLine($"{result.Pages.Length} Pages"); // 3 Pages
```
Dieser gezielte Ansatz bringt eine **41%** Geschwindigkeitsverbesserung, während nur relevanter Text extrahiert wird. Es eignet sich ideal für strukturierte Dokumente wie [Rechnungen](/csharp/ocr/blog/using-ironocr/invoice-ocr-csharp-tutorial/), Schecks und Formulare. Die gleiche Zuschneidemethode funktioniert nahtlos mit [PDF-OCR-Operationen](/csharp/ocr/how-to/input-pdfs/).

*Dokument, das präzise regionsbasierte Textextraktion mithilfe der Rechteckauswahl von IronOCR demonstriert*
## Wie viele Sprachen unterstützt IronOCR?
IronOCR bietet **127 internationale Sprachen** über praktische Sprachpakete an. Laden Sie sie als DLLs von unserer Website oder über den [NuGet Package Manager](https://www.nuget.org/packages?q=IronOcr.Languages) herunter.
Installieren Sie die Sprachpakete über die NuGet-Oberfläche (['IronOcr.Languages' suchen](https://www.nuget.org/packages?q=IronOcr.Languages)) oder besuchen Sie die [vollständige Liste der Sprachpakete](/csharp/ocr/languages/).
Unterstützte Sprachen sind darunter Arabisch, Chinesisch (Vereinfacht/Traditionell), Japanisch, Koreanisch, Hindi, Russisch, Deutsch, Französisch, Spanisch und 115+ andere, die jeweils für eine genaue Texterkennung optimiert sind.
### Wie implementiert man OCR in mehreren Sprachen?
Dieses IronOCR C#-Tutorial-Beispiel zeigt die Erkennung von arabischem Text:
```shell
:InstallCmd Install-Package IronOcr.Languages.Arabic
```
<center>
<img src="/img/tutorials/how-to-read-text-from-an-image-in-csharp-net/arabic.gif" alt="Arabischer Text wird von IronOCR verarbeitet, was die Unterstützung von OCR für mehrere Sprachen demonstriert." class="img-responsive add-shadow img-margin" style="max-height:250px; border:1px solid gray;" />
</center>
*IronOCR extrahiert präzise arabischen Text aus einem GIF-Bild*
```csharp
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.LoadPdf("example.pdf", Password: "password");
// We can also select specific PDF page numbers to OCR
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Console.WriteLine($"{result.Pages.Length} Pages");
// 1 page for every page of the PDF
```
### Kann IronOCR Dokumente mit mehreren Sprachen verarbeiten?
Wenn Dokumente gemischte Sprachen enthalten, konfigurieren Sie IronOCR für die Unterstützung mehrerer Sprachen:
```shell
:InstallCmd Install-Package IronOcr.Languages.ChineseSimplified
```
```csharp
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Pdf Metadata Name";
input.LoadPdf("example.pdf", Password: "password");
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
```
## Wie man mehrseitige Dokumente mit C# OCR verarbeitet?
IronOCR kombiniert nahtlos mehrere Seiten oder Bilder zu einem einzigen `OcrResult`. Diese Funktion ermöglicht leistungsstarke Fähigkeiten, wie das [Erstellen von durchsuchbaren PDFs](/csharp/ocr/how-to/searchable-pdf/) und das Extrahieren von Text aus ganzen Dokumentensätzen.
Kombinieren Sie verschiedene Quellen - Bilder, TIFF-Rahmen und PDF-Seiten - in einem einzigen OCR-Vorgang:
```csharp
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Pdf Title";
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
```
Verarbeiten Sie alle Seiten einer TIFF-Datei effizient:
```csharp
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Html Title";
// Add more content as required...
input.LoadImage("image2.jpeg");
input.LoadPdf("example.pdf",Password: "password");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);
OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("hocr.html");
```
Konvertieren Sie TIFFs oder PDFs in durchsuchbare Formate:
```csharp
using IronOcr;
IronTesseract ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
input.LoadImage("img/Barcode.png");
OcrResult result = ocr.Read(input);
foreach (var barcode in result.Barcodes)
{
Console.WriteLine(barcode.Value);
// type and location properties also exposed
}
```
Konvertieren Sie vorhandene PDFs in durchsuchbare Versionen:
```csharp
using IronOcr;
using IronSoftware.Drawing;
// We can delve deep into OCR results as an object model of Pages, Barcodes, Paragraphs, Lines, Words and Characters
// This allows us to explore, export and draw OCR content using other APIs
IronTesseract ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);
OcrResult result = ocr.Read(input);
foreach (var page in result.Pages)
{
// Page object
int pageNumber = page.PageNumber;
string pageText = page.Text;
int pageWordCount = page.WordCount;
// null if we don't set Ocr.Configuration.ReadBarCodes = true;
OcrResult.Barcode[] barcodes = page.Barcodes;
AnyBitmap pageImage = page.ToBitmap(input);
System.Drawing.Bitmap pageImageLegacy = page.ToBitmap(input);
double pageWidth = page.Width;
double pageHeight = page.Height;
foreach (var paragraph in page.Paragraphs)
{
// Pages -> Paragraphs
int paragraphNumber = paragraph.ParagraphNumber;
String paragraphText = paragraph.Text;
System.Drawing.Bitmap paragraphImage = paragraph.ToBitmap(input);
int paragraphXLocation = paragraph.X;
int paragraphYLocation = paragraph.Y;
int paragraphWidth = paragraph.Width;
int paragraphHeight = paragraph.Height;
double paragraphOcrAccuracy = paragraph.Confidence;
var paragraphTextDirection = paragraph.TextDirection;
foreach (var line in paragraph.Lines)
{
// Pages -> Paragraphs -> Lines
int lineNumber = line.LineNumber;
String lineText = line.Text;
AnyBitmap lineImage = line.ToBitmap(input);
System.Drawing.Bitmap lineImageLegacy = line.ToBitmap(input);
int lineXLocation = line.X;
int lineYLocation = line.Y;
int lineWidth = line.Width;
int lineHeight = line.Height;
double lineOcrAccuracy = line.Confidence;
double lineSkew = line.BaselineAngle;
double lineOffset = line.BaselineOffset;
foreach (var word in line.Words)
{
// Pages -> Paragraphs -> Lines -> Words
int wordNumber = word.WordNumber;
String wordText = word.Text;
AnyBitmap wordImage = word.ToBitmap(input);
System.Drawing.Image wordImageLegacy = word.ToBitmap(input);
int wordXLocation = word.X;
int wordYLocation = word.Y;
int wordWidth = word.Width;
int wordHeight = word.Height;
double wordOcrAccuracy = word.Confidence;
if (word.Font != null)
{
// Word.Font is only set when using Tesseract Engine Modes rather than LTSM
String fontName = word.Font.FontName;
double fontSize = word.Font.FontSize;
bool isBold = word.Font.IsBold;
bool isFixedWidth = word.Font.IsFixedWidth;
bool isItalic = word.Font.IsItalic;
bool isSerif = word.Font.IsSerif;
bool isUnderlined = word.Font.IsUnderlined;
bool fontIsCaligraphic = word.Font.IsCaligraphic;
}
foreach (var character in word.Characters)
{
// Pages -> Paragraphs -> Lines -> Words -> Characters
int characterNumber = character.CharacterNumber;
String characterText = character.Text;
AnyBitmap characterImage = character.ToBitmap(input);
System.Drawing.Bitmap characterImageLegacy = character.ToBitmap(input);
int characterXLocation = character.X;
int characterYLocation = character.Y;
int characterWidth = character.Width;
int characterHeight = character.Height;
double characterOcrAccuracy = character.Confidence;
// Output alternative symbols choices and their probability.
// Very useful for spell checking
OcrResult.Choice[] characterChoices = character.Choices;
}
}
}
}
}
```
Wenden Sie die gleiche Technik auf TIFF-Konvertierungen an:
```csharp
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Configure document properties
input.Title = "Scanned Archive Document";
// Select pages to process
var pageIndices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageIndices);
// Create searchable PDF from TIFF
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
}
```
## Wie exportiere ich OCR-Ergebnisse als HOCR HTML?
IronOCR unterstützt den HOCR HTML-Export und ermöglicht strukturierte **PDF zu HTML**- und **TIFF zu HTML**-Konvertierungen bei gleichzeitiger Beibehaltung der Layoutinformationen:
```csharp
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Set HTML title
input.Title = "Document Archive";
// Process multiple document types
input.LoadImage("image2.jpeg");
input.LoadPdf("example.pdf", "password");
// Add TIFF pages
var pageIndices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageIndices);
// Export as HOCR with position data
OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("hocr.html");
}
```
## Kann IronOCR Barcodes zusammen mit Text lesen?
IronOCR kombiniert einzigartig die Texterkennung mit [Barcode-Lesefunktionen](/csharp/ocr/how-to/barcodes/) und eliminiert die Notwendigkeit für separate Bibliotheken:
```csharp
// Enable combined text and barcode recognition
using IronOcr;
var ocr = new IronTesseract();
// Enable barcode detection
ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
// Load image containing both text and barcodes
input.LoadImage("img/Barcode.png");
// Process both text and barcodes
var result = ocr.Read(input);
// Extract barcode data
foreach (var barcode in result.Barcodes)
{
Console.WriteLine($"Barcode Value: {barcode.Value}");
Console.WriteLine($"Format: {barcode.Format}");
}
}
```
## Wie greife ich auf detaillierte OCR-Ergebnisse und Metadaten zu?
Das IronOCR-Ergebnisobjekt bietet umfassende Daten, die fortgeschrittene Entwickler für anspruchsvolle Anwendungen nutzen können.
Jeder `OcrResult` enthält hierarchische Sammlungen: Seiten, Absätze, Zeilen, Wörter und Zeichen. Alle Elemente enthalten detaillierte Metadaten wie Standort, Schriftinformationen und Vertrauenswerte.
Einzelelemente (Absätze, Wörter, Barcodes) können als Bilder oder Bitmaps für die weitere Verarbeitung exportiert werden:
```csharp
using System;
using IronOcr;
using IronSoftware.Drawing;
// Configure with barcode support
IronTesseract ocr = new IronTesseract
{
Configuration = { ReadBarCodes = true }
};
using OcrInput input = new OcrInput();
// Process multi-page document
int[] pageIndices = { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageIndices);
OcrResult result = ocr.Read(input);
// Navigate the complete results hierarchy
foreach (var page in result.Pages)
{
// Page-level data
int pageNumber = page.PageNumber;
string pageText = page.Text;
int pageWordCount = page.WordCount;
// Extract page elements
OcrResult.Barcode[] barcodes = page.Barcodes;
AnyBitmap pageImage = page.ToBitmap();
double pageWidth = page.Width;
double pageHeight = page.Height;
foreach (var paragraph in page.Paragraphs)
{
// Paragraph properties
int paragraphNumber = paragraph.ParagraphNumber;
string paragraphText = paragraph.Text;
double paragraphConfidence = paragraph.Confidence;
var textDirection = paragraph.TextDirection;
foreach (var line in paragraph.Lines)
{
// Line details including baseline information
string lineText = line.Text;
double lineConfidence = line.Confidence;
double baselineAngle = line.BaselineAngle;
double baselineOffset = line.BaselineOffset;
foreach (var word in line.Words)
{
// Word-level data
string wordText = word.Text;
double wordConfidence = word.Confidence;
// Font information (when available)
if (word.Font != null)
{
string fontName = word.Font.FontName;
double fontSize = word.Font.FontSize;
bool isBold = word.Font.IsBold;
bool isItalic = word.Font.IsItalic;
}
foreach (var character in word.Characters)
{
// Character-level analysis
string charText = character.Text;
double charConfidence = character.Confidence;
// Alternative character choices for spell-checking
OcrResult.Choice[] alternatives = character.Choices;
}
}
}
}
}
```
## Zusammenfassung
IronOCR bietet C#-Entwicklern die fortschrittlichste [Tesseract-API-Implementierung](/csharp/ocr/), die nahtlos über Windows, Linux und Mac hinweg läuft. Seine Fähigkeit, Text aus Bildern mit IronOCR genau zu lesen - auch aus unvollkommenen Dokumenten - hebt es von grundlegenden OCR-Lösungen ab.
Die einzigartigen Funktionen der Bibliothek umfassen integriertes Barcode-Lesen und die Fähigkeit, Ergebnisse als durchsuchbare PDFs oder HOCR HTML zu exportieren, Funktionen, die in Standard-Tesseract-Implementierungen nicht verfügbar sind.
### Weiterführende Schritte
Um IronOCR weiter zu meistern:
- Entdecken Sie unseren [umfassenden Einstiegsguide](/csharp/ocr/docs/)
- Durchsuchen Sie [praktische C#-Codebeispiele](/csharp/ocr/examples/simple-csharp-ocr-tesseract/)
- Siehe die [detaillierte API-Dokumentation](/csharp/ocr/object-reference/)
### Quellcodedownload
- [GitHub-Repository](https://github.com/iron-software/IronOcr.Examples/tree/main/src/ironsoftware.IronOcr.Examples/ironsoftware.IronOcr.Examples)
- [Vollständigen Quellcode herunterladen](/downloads/assets/tutorials/how-to-read-text-from-an-image-in-csharp-net/CSharp-Image-to-Text.zip)
Bereit, die C# OCR Bild-zu-Text-Konvertierung in Ihren Anwendungen zu implementieren? [Laden Sie IronOCR herunter](download-modal) und starten Sie noch heute Ihre [kostenlose Testversion](trial-license).
Möchten Sie Bilder in C# ohne den Aufwand komplexer Tesseract-Konfigurationen in Text umwandeln? Dieses umfassende IronOCR C#-Tutorial zeigt Ihnen, wie Sie in Ihren .NET-Anwendungen mit nur wenigen Codezeilen leistungsstarke optische Zeichenerkennung implementieren können.
Schnellstart: Text aus einem Bild in einer Zeile extrahieren
Dieses Beispiel zeigt, wie einfach es ist, IronOCR zu erfassen – nur eine Zeile C# verwandelt Ihr Bild in Text. Es demonstriert die Initialisierung der OCR-Engine und das sofortige Lesen und Abrufen von Text ohne komplexe Einrichtung.
1Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr
Install-Package IronOcr
2Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.
string text = new IronTesseract().Read("image.png").Text;
string text = new IronTesseract().Read("image.png").Text;
C#
3Bereitstellen zum Testen in Ihrer Live-Umgebung
Beginnen Sie noch heute, IronOCR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
Verwenden Sie IronTesseract Klasse, um Text sofort aus Bildern zu lesen.
Bildfilter anwenden, um die OCR-Genauigkeit bei Scans mit geringer Qualität zu verbessern.
Mehrere Sprachen mit herunterladbaren Sprachpaketen verarbeiten
Ergebnisse als durchsuchbare PDFs exportieren oder Textzeichenfolgen extrahieren
Wie lese ich Text von Bildern in .NET-Anwendungen?
Um C# OCR Bild-zu-Text-Funktionalität in Ihren .NET-Anwendungen zu erreichen, benötigen Sie eine zuverlässige OCR-Bibliothek. IronOCR bietet eine verwaltete Lösung, die die IronOcr.IronTesseract-Klasse verwendet, um sowohl Genauigkeit als auch Geschwindigkeit ohne externe Abhängigkeiten zu maximieren.
Wenn Sie Bilder in C# in Text umwandeln müssen, bietet IronOCR erhebliche Vorteile gegenüber traditionellen Tesseract-Implementierungen:
Funktioniert sofort in reinen .NET-Umgebungen
Keine Tesseract-Installation oder -Konfiguration erforderlich
Führt die neuesten Engines aus: Tesseract 5 (plus Tesseract 4 & 3)
Kompatibel mit .NET Framework 4.6.2+, .NET Standard 2+ und .NET Core 2, 3, 5, 6, 7, 8, 9 und 10
Verbessert Genauigkeit und Geschwindigkeit im Vergleich zu herkömmlichem Tesseract
Unterstützt Xamarin, Mono, Azure und Docker-Deployments
Verwalten komplexer Tesseract-Wörterbücher über NuGet-Pakete
Unterstützt PDFs, Multi-Frame-TIFFs und alle wichtigen Bildformate automatisch
Korrigiert niedrige Qualität und verzerrte Scans für optimale Ergebnisse
Wie man das IronOCR C# Tutorial für grundlegendes OCR verwendet?
Dieses Iron Tesseract C#-Beispiel zeigt den einfachsten Weg, Text aus einem Bild mit IronOCR zu lesen. Die IronOcr.IronTesseract-Klasse extrahiert Text und gibt ihn als String zurück.
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames(@"img\Potter.LowQuality.tiff", pageindices);input.Deskew(); // removes rotation and perspectiveOcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.LowQuality.tiff", pageindices);
input.Deskew(); // removes rotation and perspective
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusingPrivate pageindices = New Integer() { 1, 2 }input.LoadImageFrames("img\Potter.LowQuality.tiff", pageindices)input.Deskew() ' removes rotation and perspectiveDim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\Potter.LowQuality.tiff", pageindices)
input.Deskew() ' removes rotation and perspective
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
Dieser Code erreicht 100% Genauigkeit bei klaren Bildern und extrahiert Text genau so, wie er erscheint:
IronOCR Simple ExampleIn this simple example we test the accuracy of our C# OCR library to read text from a PNG Image. This is a very basic test, but things will get more complicated as the tutorial continues.The quick brown fox jumps over the lazy dog
IronOCR Simple Example
In this simple example we test the accuracy of our C# OCR library to read text from a PNG Image. This is a very basic test, but things will get more complicated as the tutorial continues.
The quick brown fox jumps over the lazy dog
Text
Die IronTesseract-Klasse bearbeitet intern komplexe OCR-Operationen. Sie scannt automatisch die Ausrichtung, optimiert die Auflösung und verwendet KI, um Text aus Bildern mit menschlicher Genauigkeit zu lesen.
Trotz der ausgeklügelten Verarbeitung im Hintergrund - einschließlich Bildanalyse, Engine-Optimierung und intelligenter Texterkennung - entspricht der OCR-Prozess der menschlichen Lesegeschwindigkeit und erhält außergewöhnliche Genauigkeitsniveaus.
Screenshot, der die Fähigkeit von IronOCR demonstriert, Text aus einem PNG-Bild mit perfekter Genauigkeit zu extrahieren
Wie man fortgeschrittenes C# OCR ohne Tesseract-Konfiguration implementiert?
Für Produktionsanwendungen, die optimale Leistung erfordern, wenn Sie in C# Bilder in Text umwandeln, verwenden Sie die OcrInput und IronTesseract-Klassen zusammen. Dieser Ansatz bietet fein abgestimmte Kontrolle über den OCR-Prozess.
Funktionen der OcrInput-Klasse
Verarbeitet mehrere Bildformate: JPEG, TIFF, GIF, BMP, PNG
Importiert vollständige PDFs oder spezifische Seiten
Verbessert automatisch Kontrast, Auflösung und Bildqualität
Korrigiert Drehung, Rauschunterdrückung, Verzerrung und negative Bilder
Funktionen der IronTesseract-Klasse
Zugriff auf über 127 vorkonfigurierte Sprachen
Enthält Tesseract 5, 4 und 3 Engines
Dokumenttyp-Spezifikation (Screenshot, Ausschnitt oder vollständiges Dokument)
Integrierte Barcode-Lesefähigkeiten
Mehrere Ausgabeformate: durchsuchbare PDFs, HOCR HTML, DOM-Objekte und Zeichenfolgen
Wie beginnen Sie mit OcrInput und IronTesseract?
Hier ist eine empfohlene Konfiguration für dieses IronOCR C#-Tutorial, die gut mit den meisten Dokumenttypen funktioniert:
using IronOcr;using IronSoftware.Drawing;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();// restrict OCR to a content area for faster processingRectangle contentArea = new Rectangle(x: 215, y: 1250, height: 280, width: 1335);input.LoadImage("img/ComSci.png", contentArea);OcrResult result = ocr.Read(input);Console.WriteLine(result.Text);
using IronOcr;
using IronSoftware.Drawing;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// restrict OCR to a content area for faster processing
Rectangle contentArea = new Rectangle(x: 215, y: 1250, height: 280, width: 1335);
input.LoadImage("img/ComSci.png", contentArea);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
C#
Diese Konfiguration erreicht konstant nahezu perfekte Genauigkeit bei Scans mittlerer Qualität. Die LoadImageFrames-Methode bearbeitet effizient mehrseitige Dokumente, was sie ideal für Batch-Verarbeitungsszenarien macht.
Beispiel-TIFF-Dokument, das die Fähigkeiten von IronOCR zur Extraktion mehrseitiger Texte demonstriert.
Die Fähigkeit, Text aus Bildern und Barcodes in gescannten Dokumenten wie TIFFs zu lesen, zeigt, wie IronOCR komplexe OCR-Aufgaben vereinfacht. Die Bibliothek überzeugt bei realen Dokumenten und verarbeitet problemlos mehrseitige TIFFs und PDF-Textextraktion.
Wie verarbeitet IronOCR niedrigqualitative Scans?
Niedrig aufgelöste, verrauschte Dokumente, die IronOCR mithilfe von Bildfiltern präzise verarbeiten kann.
Beim Arbeiten mit unvollkommenen Scans mit Verzerrung und digitalem Rauschen übertrifft IronOCR andere C# OCR-Bibliotheken. Es ist speziell für reale Szenarien konzipiert und nicht für makellose Testbilder.
// PM> Install IronOcr.Languages.Arabicusing IronOcr;IronTesseract ocr = new IronTesseract();ocr.Language = OcrLanguage.Arabic;using OcrInput input = new OcrInput();input.LoadImageFrame("img/arabic.gif", 1);// add image filters if needed// In this case, even thought input is very low quality// IronTesseract can read what conventional Tesseract cannot.OcrResult result = ocr.Read(input);// Console can't print Arabic on Windows easily.// Let's save to disk instead.result.SaveAsTextFile("arabic.txt");
// PM> Install IronOcr.Languages.Arabic
using IronOcr;
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;
using OcrInput input = new OcrInput();
input.LoadImageFrame("img/arabic.gif", 1);
// add image filters if needed
// In this case, even thought input is very low quality
// IronTesseract can read what conventional Tesseract cannot.
OcrResult result = ocr.Read(input);
// Console can't print Arabic on Windows easily.
// Let's save to disk instead.
result.SaveAsTextFile("arabic.txt");
' PM> Install IronOcr.Languages.ArabicImportsIronOcrPrivate ocr As New IronTesseract()ocr.Language = OcrLanguage.ArabicUsing input As New OcrInput() input.LoadImageFrame("img/arabic.gif", 1) ' add image filters if needed ' In this case, even thought input is very low quality ' IronTesseract can read what conventional Tesseract cannot. Dim result AsOcrResult = ocr.Read(input) ' Console can't print Arabic on Windows easily. ' Let's save to disk instead. result.SaveAsTextFile("arabic.txt")EndUsing
' PM> Install IronOcr.Languages.Arabic
Imports IronOcr
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.Arabic
Using input As New OcrInput()
input.LoadImageFrame("img/arabic.gif", 1)
' add image filters if needed
' In this case, even thought input is very low quality
' IronTesseract can read what conventional Tesseract cannot.
Dim result As OcrResult = ocr.Read(input)
' Console can't print Arabic on Windows easily.
' Let's save to disk instead.
result.SaveAsTextFile("arabic.txt")
End Using
Durch die Verwendung von Input.Deskew() verbessert sich die Genauigkeit bei minderwertigen Scans auf 99,8%, fast gleich mit Qualitätsresultaten. Dies zeigt, warum IronOCR die bevorzugte Wahl für C# OCR ohne Tesseract-Komplikationen ist.
Bildfilter können die Bearbeitungszeit leicht erhöhen, verkürzen aber erheblich die Gesamt-OCR-Dauer. Das richtige Gleichgewicht hängt von Ihrer Dokumentqualität ab.
Für die meisten Szenarien bieten Input.Deskew() und Input.DeNoise() zuverlässige Verbesserungen der OCR-Leistung. Erfahren Sie mehr über Bildvorverarbeitungstechniken.
Wie optimiere ich die OCR-Leistung und -Geschwindigkeit?
Der wichtigste Faktor, der die OCR-Geschwindigkeit beeinflusst, wenn Sie Bilder in C# in Text umwandeln, ist die Eingabequalität. Eine höhere DPI (~200 dpi) mit minimalem Rauschen liefert die schnellsten und genauesten Ergebnisse.
Während IronOCR hervorragend darin ist, unvollkommene Dokumente zu korrigieren, erfordert diese Verbesserung zusätzliche Rechenzeit.
Wählen Sie Bildformate mit minimalen Kompressionsartefakten. TIFF und PNG führen in der Regel zu schnelleren Ergebnissen als JPEG aufgrund geringeren digitalen Rauschens.
Welche Bildfilter verbessern die OCR-Geschwindigkeit?
Die folgenden Filter können die Leistung in Ihrem C# OCR Bild-zu-Text-Arbeitsablauf erheblich verbessern:
OcrInput.Rotate(double degrees): Dreht Bilder im Uhrzeigersinn (negativ für gegen den Uhrzeigersinn)
OcrInput.Binarize(): Wandelt in Schwarz/Weiß um, verbessert die Leistung in kontrastarmen Szenarien
OcrInput.ToGrayScale(): Wandelt in Graustufen um für potenzielle Geschwindigkeitsverbesserungen
OcrInput.Contrast(): Passt den Kontrast automatisch für bessere Genauigkeit an
OcrInput.DeNoise(): Entfernt digitale Artefakte, wenn Rauschen erwartet wird
OcrInput.Invert(): Kehrt Farben für Weiß-auf-Schwarz-Text um
OcrInput.Dilate(): Erweitert Textgrenzen
OcrInput.Erode(): Reduziert Textgrenzen
OcrInput.Deskew(): Korrigiert die Ausrichtung - essenziell für verzerrte Dokumente
OcrInput.EnhanceResolution: Verbessert die Qualität von Bildern mit niedriger Auflösung
OcrInput.DetectPageOrientation(): Erkennt und korrigiert die Seitenrotation. Geben Sie ein OrientationDetectionMode an, um den Genauigkeits-/Geschwindigkeits-Kompromiss zu steuern: Fast, Balanced, Detailed oder ExtremeDetailed (v2025.8.6 hinzugefügt)
Scale() und EnhanceResolution() sind mit SaveAsSearchablePdf() aufgrund eines bekannten Problems in v2025.12.3 nicht kompatibel. Alle anderen Filter funktionieren korrekt mit durchsuchbarer PDF-Ausgabe.
Wie konfigurieren Sie IronOCR für maximale Geschwindigkeit?
Verwenden Sie diese Einstellungen zur Geschwindigkeitsoptimierung bei hochwertigen Scans:
using IronOcr;IronTesseract ocr = new IronTesseract();ocr.Language = OcrLanguage.ChineseSimplified;// We can add any number of languages.ocr.AddSecondaryLanguage(OcrLanguage.English);// Optionally add custom tesseract .traineddata files by specifying a file pathusing OcrInput input = new OcrInput();input.LoadImage("img/MultiLanguage.jpeg");OcrResult result = ocr.Read(input);result.SaveAsTextFile("MultiLanguage.txt");
using IronOcr;
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
// We can add any number of languages.
ocr.AddSecondaryLanguage(OcrLanguage.English);
// Optionally add custom tesseract .traineddata files by specifying a file path
using OcrInput input = new OcrInput();
input.LoadImage("img/MultiLanguage.jpeg");
OcrResult result = ocr.Read(input);
result.SaveAsTextFile("MultiLanguage.txt");
ImportsIronOcrPrivate ocr As New IronTesseract()ocr.Language = OcrLanguage.ChineseSimplified' We can add any number of languages.ocr.AddSecondaryLanguage(OcrLanguage.English)' Optionally add custom tesseract .traineddata files by specifying a file pathUsing input As New OcrInput() input.LoadImage("img/MultiLanguage.jpeg") Dim result AsOcrResult = ocr.Read(input) result.SaveAsTextFile("MultiLanguage.txt")EndUsing
Imports IronOcr
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.ChineseSimplified
' We can add any number of languages.
ocr.AddSecondaryLanguage(OcrLanguage.English)
' Optionally add custom tesseract .traineddata files by specifying a file path
Using input As New OcrInput()
input.LoadImage("img/MultiLanguage.jpeg")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsTextFile("MultiLanguage.txt")
End Using
Diese optimierte Konfiguration hält 99,8% Genauigkeit bei gleichzeitiger Verbesserung der Geschwindigkeit um 35% gegenüber den Standardeinstellungen.
Wie Sie bestimmte Bildbereiche mit C# OCR lesen können?
Das unten stehende Iron Tesseract C#-Beispiel zeigt, wie spezifische Regionen mit System.Drawing.Rectangle anvisiert werden können. Diese Technik ist von unschätzbarem Wert für die Verarbeitung standardisierter Formulare, bei denen Text an vorhersehbaren Stellen erscheint.
Kann IronOCR zugeschnittene Bereiche für schnellere Ergebnisse verarbeiten?
Mit pixelbasierten Koordinaten können Sie die OCR auf bestimmte Bereiche begrenzen, die Geschwindigkeit erheblich verbessern und unerwünschte Textextraktion verhindern:
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();input.LoadImage("image1.jpeg");input.LoadImage("image2.png");var pageindices = new int[] { 1, 2 };input.LoadImageFrames("image3.gif", pageindices);OcrResult result = ocr.Read(input);Console.WriteLine($"{result.Pages.Length} Pages"); // 3 Pages
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", pageindices);
OcrResult result = ocr.Read(input);
Console.WriteLine($"{result.Pages.Length} Pages"); // 3 Pages
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusinginput.LoadImage("image1.jpeg")input.LoadImage("image2.png")Dim pageindices = New Integer() { 1, 2 }input.LoadImageFrames("image3.gif", pageindices)Dim result AsOcrResult = ocr.Read(input)Console.WriteLine($"{result.Pages.Length} Pages") ' 3 Pages
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("image3.gif", pageindices)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine($"{result.Pages.Length} Pages") ' 3 Pages
Dieser gezielte Ansatz bringt eine 41% Geschwindigkeitsverbesserung, während nur relevanter Text extrahiert wird. Es eignet sich ideal für strukturierte Dokumente wie Rechnungen, Schecks und Formulare. Die gleiche Zuschneidemethode funktioniert nahtlos mit PDF-OCR-Operationen.
Dokument, das präzise regionsbasierte Textextraktion mithilfe der Rechteckauswahl von IronOCR demonstriert
Wie viele Sprachen unterstützt IronOCR?
IronOCR bietet 127 internationale Sprachen über praktische Sprachpakete an. Laden Sie sie als DLLs von unserer Website oder über den NuGet Package Manager herunter.
Unterstützte Sprachen sind darunter Arabisch, Chinesisch (Vereinfacht/Traditionell), Japanisch, Koreanisch, Hindi, Russisch, Deutsch, Französisch, Spanisch und 115+ andere, die jeweils für eine genaue Texterkennung optimiert sind.
Wie implementiert man OCR in mehreren Sprachen?
Dieses IronOCR C#-Tutorial-Beispiel zeigt die Erkennung von arabischem Text:
PM > Install-Package IronOcr.Languages.Arabic
Install-Package IronOcr.Languages.Arabic
IronOCR extrahiert präzise arabischen Text aus einem GIF-Bild
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();input.LoadPdf("example.pdf", Password: "password");// We can also select specific PDF page numbers to OCROcrResult result = ocr.Read(input);Console.WriteLine(result.Text);Console.WriteLine($"{result.Pages.Length} Pages");// 1 page for every page of the PDF
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.LoadPdf("example.pdf", Password: "password");
// We can also select specific PDF page numbers to OCR
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Console.WriteLine($"{result.Pages.Length} Pages");
// 1 page for every page of the PDF
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusinginput.LoadPdf("example.pdf", Password:= "password")' We can also select specific PDF page numbers to OCRDim result AsOcrResult = ocr.Read(input)Console.WriteLine(result.Text)Console.WriteLine($"{result.Pages.Length} Pages")' 1 page for every page of the PDF
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.LoadPdf("example.pdf", Password:= "password")
' We can also select specific PDF page numbers to OCR
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
Console.WriteLine($"{result.Pages.Length} Pages")
' 1 page for every page of the PDF
Kann IronOCR Dokumente mit mehreren Sprachen verarbeiten?
Wenn Dokumente gemischte Sprachen enthalten, konfigurieren Sie IronOCR für die Unterstützung mehrerer Sprachen:
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();input.Title = "Pdf Metadata Name";input.LoadPdf("example.pdf", Password: "password");OcrResult result = ocr.Read(input);result.SaveAsSearchablePdf("searchable.pdf");
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Pdf Metadata Name";
input.LoadPdf("example.pdf", Password: "password");
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusinginput.Title = "Pdf Metadata Name"input.LoadPdf("example.pdf", Password:= "password")Dim result AsOcrResult = ocr.Read(input)result.SaveAsSearchablePdf("searchable.pdf")
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Pdf Metadata Name"
input.LoadPdf("example.pdf", Password:= "password")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
Wie man mehrseitige Dokumente mit C# OCR verarbeitet?
IronOCR kombiniert nahtlos mehrere Seiten oder Bilder zu einem einzigen OcrResult. Diese Funktion ermöglicht leistungsstarke Fähigkeiten, wie das Erstellen von durchsuchbaren PDFs und das Extrahieren von Text aus ganzen Dokumentensätzen.
Kombinieren Sie verschiedene Quellen - Bilder, TIFF-Rahmen und PDF-Seiten - in einem einzigen OCR-Vorgang:
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();input.Title = "Pdf Title";var pageindices = new int[] { 1, 2 };input.LoadImageFrames("example.tiff", pageindices);OcrResult result = ocr.Read(input);result.SaveAsSearchablePdf("searchable.pdf");
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Pdf Title";
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusinginput.Title = "Pdf Title"Dim pageindices = New Integer() { 1, 2 }input.LoadImageFrames("example.tiff", pageindices)Dim result AsOcrResult = ocr.Read(input)result.SaveAsSearchablePdf("searchable.pdf")
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Pdf Title"
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
Verarbeiten Sie alle Seiten einer TIFF-Datei effizient:
using IronOcr;IronTesseract ocr = new IronTesseract();using OcrInput input = new OcrInput();input.Title = "Html Title";// Add more content as required...input.LoadImage("image2.jpeg");input.LoadPdf("example.pdf",Password: "password");var pageindices = new int[] { 1, 2 };input.LoadImageFrames("example.tiff", pageindices);OcrResult result = ocr.Read(input);result.SaveAsHocrFile("hocr.html");
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Html Title";
// Add more content as required...
input.LoadImage("image2.jpeg");
input.LoadPdf("example.pdf",Password: "password");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);
OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("hocr.html");
ImportsIronOcrPrivate ocr As New IronTesseract()PrivateOcrInputAsusinginput.Title = "Html Title"' Add more content as required...input.LoadImage("image2.jpeg")input.LoadPdf("example.pdf",Password:= "password")Dim pageindices = New Integer() { 1, 2 }input.LoadImageFrames("example.tiff", pageindices)Dim result AsOcrResult = ocr.Read(input)result.SaveAsHocrFile("hocr.html")
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Html Title"
' Add more content as required...
input.LoadImage("image2.jpeg")
input.LoadPdf("example.pdf",Password:= "password")
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
result.SaveAsHocrFile("hocr.html")
Konvertieren Sie TIFFs oder PDFs in durchsuchbare Formate:
using IronOcr;IronTesseract ocr = new IronTesseract();ocr.Configuration.ReadBarCodes = true;using OcrInput input = new OcrInput();input.LoadImage("img/Barcode.png");OcrResult result = ocr.Read(input);foreach (var barcode in result.Barcodes){Console.WriteLine(barcode.Value); // type and location properties also exposed}
using IronOcr;
IronTesseract ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
input.LoadImage("img/Barcode.png");
OcrResult result = ocr.Read(input);
foreach (var barcode in result.Barcodes)
{
Console.WriteLine(barcode.Value);
// type and location properties also exposed
}
ImportsIronOcrPrivate ocr As New IronTesseract()ocr.Configuration.ReadBarCodes = TrueUsing input As New OcrInput() input.LoadImage("img/Barcode.png") Dim result AsOcrResult = ocr.Read(input) For Each barcode In result.BarcodesConsole.WriteLine(barcode.Value) ' type and location properties also exposed Next barcodeEndUsing
Imports IronOcr
Private ocr As New IronTesseract()
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
input.LoadImage("img/Barcode.png")
Dim result As OcrResult = ocr.Read(input)
For Each barcode In result.Barcodes
Console.WriteLine(barcode.Value)
' type and location properties also exposed
Next barcode
End Using
Konvertieren Sie vorhandene PDFs in durchsuchbare Versionen:
using IronOcr;using IronSoftware.Drawing;// We can delve deep into OCR results as an object model of Pages, Barcodes, Paragraphs, Lines, Words and Characters// This allows us to explore, export and draw OCR content using other APIsIronTesseract ocr = new IronTesseract();ocr.Configuration.ReadBarCodes = true;using OcrInput input = new OcrInput();var pageindices = new int[] { 1, 2 };input.LoadImageFrames(@"img\Potter.tiff", pageindices);OcrResult result = ocr.Read(input);foreach (var page in result.Pages){ // Page object int pageNumber = page.PageNumber; string pageText = page.Text; int pageWordCount = page.WordCount; // null if we don't set Ocr.Configuration.ReadBarCodes = true; OcrResult.Barcode[] barcodes = page.Barcodes; AnyBitmap pageImage = page.ToBitmap(input); System.Drawing.Bitmap pageImageLegacy = page.ToBitmap(input); double pageWidth = page.Width; double pageHeight = page.Height; foreach (var paragraph in page.Paragraphs) { // Pages -> Paragraphs int paragraphNumber = paragraph.ParagraphNumber; String paragraphText = paragraph.Text; System.Drawing.Bitmap paragraphImage = paragraph.ToBitmap(input); int paragraphXLocation = paragraph.X; int paragraphYLocation = paragraph.Y; int paragraphWidth = paragraph.Width; int paragraphHeight = paragraph.Height; double paragraphOcrAccuracy = paragraph.Confidence; var paragraphTextDirection = paragraph.TextDirection; foreach (var line in paragraph.Lines) { // Pages -> Paragraphs -> Lines int lineNumber = line.LineNumber; String lineText = line.Text; AnyBitmap lineImage = line.ToBitmap(input); System.Drawing.Bitmap lineImageLegacy = line.ToBitmap(input); int lineXLocation = line.X; int lineYLocation = line.Y; int lineWidth = line.Width; int lineHeight = line.Height; double lineOcrAccuracy = line.Confidence; double lineSkew = line.BaselineAngle; double lineOffset = line.BaselineOffset; foreach (var word in line.Words) { // Pages -> Paragraphs -> Lines -> Words int wordNumber = word.WordNumber; String wordText = word.Text; AnyBitmap wordImage = word.ToBitmap(input); System.Drawing.Image wordImageLegacy = word.ToBitmap(input); int wordXLocation = word.X; int wordYLocation = word.Y; int wordWidth = word.Width; int wordHeight = word.Height; double wordOcrAccuracy = word.Confidence; if (word.Font != null) { // Word.Font is only set when using Tesseract Engine Modes rather than LTSM String fontName = word.Font.FontName; double fontSize = word.Font.FontSize; bool isBold = word.Font.IsBold; bool isFixedWidth = word.Font.IsFixedWidth; bool isItalic = word.Font.IsItalic; bool isSerif = word.Font.IsSerif; bool isUnderlined = word.Font.IsUnderlined; bool fontIsCaligraphic = word.Font.IsCaligraphic; } foreach (var character in word.Characters) { // Pages -> Paragraphs -> Lines -> Words -> Characters int characterNumber = character.CharacterNumber; String characterText = character.Text; AnyBitmap characterImage = character.ToBitmap(input); System.Drawing.Bitmap characterImageLegacy = character.ToBitmap(input); int characterXLocation = character.X; int characterYLocation = character.Y; int characterWidth = character.Width; int characterHeight = character.Height; double characterOcrAccuracy = character.Confidence; // Output alternative symbols choices and their probability. // Very useful for spell checking OcrResult.Choice[] characterChoices = character.Choices; } } } }}
using IronOcr;
using IronSoftware.Drawing;
// We can delve deep into OCR results as an object model of Pages, Barcodes, Paragraphs, Lines, Words and Characters
// This allows us to explore, export and draw OCR content using other APIs
IronTesseract ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);
OcrResult result = ocr.Read(input);
foreach (var page in result.Pages)
{
// Page object
int pageNumber = page.PageNumber;
string pageText = page.Text;
int pageWordCount = page.WordCount;
// null if we don't set Ocr.Configuration.ReadBarCodes = true;
OcrResult.Barcode[] barcodes = page.Barcodes;
AnyBitmap pageImage = page.ToBitmap(input);
System.Drawing.Bitmap pageImageLegacy = page.ToBitmap(input);
double pageWidth = page.Width;
double pageHeight = page.Height;
foreach (var paragraph in page.Paragraphs)
{
// Pages -> Paragraphs
int paragraphNumber = paragraph.ParagraphNumber;
String paragraphText = paragraph.Text;
System.Drawing.Bitmap paragraphImage = paragraph.ToBitmap(input);
int paragraphXLocation = paragraph.X;
int paragraphYLocation = paragraph.Y;
int paragraphWidth = paragraph.Width;
int paragraphHeight = paragraph.Height;
double paragraphOcrAccuracy = paragraph.Confidence;
var paragraphTextDirection = paragraph.TextDirection;
foreach (var line in paragraph.Lines)
{
// Pages -> Paragraphs -> Lines
int lineNumber = line.LineNumber;
String lineText = line.Text;
AnyBitmap lineImage = line.ToBitmap(input);
System.Drawing.Bitmap lineImageLegacy = line.ToBitmap(input);
int lineXLocation = line.X;
int lineYLocation = line.Y;
int lineWidth = line.Width;
int lineHeight = line.Height;
double lineOcrAccuracy = line.Confidence;
double lineSkew = line.BaselineAngle;
double lineOffset = line.BaselineOffset;
foreach (var word in line.Words)
{
// Pages -> Paragraphs -> Lines -> Words
int wordNumber = word.WordNumber;
String wordText = word.Text;
AnyBitmap wordImage = word.ToBitmap(input);
System.Drawing.Image wordImageLegacy = word.ToBitmap(input);
int wordXLocation = word.X;
int wordYLocation = word.Y;
int wordWidth = word.Width;
int wordHeight = word.Height;
double wordOcrAccuracy = word.Confidence;
if (word.Font != null)
{
// Word.Font is only set when using Tesseract Engine Modes rather than LTSM
String fontName = word.Font.FontName;
double fontSize = word.Font.FontSize;
bool isBold = word.Font.IsBold;
bool isFixedWidth = word.Font.IsFixedWidth;
bool isItalic = word.Font.IsItalic;
bool isSerif = word.Font.IsSerif;
bool isUnderlined = word.Font.IsUnderlined;
bool fontIsCaligraphic = word.Font.IsCaligraphic;
}
foreach (var character in word.Characters)
{
// Pages -> Paragraphs -> Lines -> Words -> Characters
int characterNumber = character.CharacterNumber;
String characterText = character.Text;
AnyBitmap characterImage = character.ToBitmap(input);
System.Drawing.Bitmap characterImageLegacy = character.ToBitmap(input);
int characterXLocation = character.X;
int characterYLocation = character.Y;
int characterWidth = character.Width;
int characterHeight = character.Height;
double characterOcrAccuracy = character.Confidence;
// Output alternative symbols choices and their probability.
// Very useful for spell checking
OcrResult.Choice[] characterChoices = character.Choices;
}
}
}
}
}
ImportsIronOcrImportsIronSoftware.Drawing' We can delve deep into OCR results as an object model of Pages, Barcodes, Paragraphs, Lines, Words and Characters' This allows us to explore, export and draw OCR content using other APIsPrivate ocr As New IronTesseract()ocr.Configuration.ReadBarCodes = TrueUsing input As New OcrInput() Dim pageindices = New Integer() { 1, 2 } input.LoadImageFrames("img\Potter.tiff", pageindices) Dim result AsOcrResult = ocr.Read(input) For Each page In result.Pages ' Page object Dim pageNumber AsInteger = page.PageNumber Dim pageText AsString = page.Text Dim pageWordCount AsInteger = page.WordCount ' null if we don't set Ocr.Configuration.ReadBarCodes = true; Dim barcodes() AsOcrResult.Barcode = page.Barcodes Dim pageImage AsAnyBitmap = page.ToBitmap(input) Dim pageImageLegacy AsSystem.Drawing.Bitmap = page.ToBitmap(input) Dim pageWidth AsDouble = page.Width Dim pageHeight AsDouble = page.Height For Each paragraph In page.Paragraphs ' Pages -> Paragraphs Dim paragraphNumber AsInteger = paragraph.ParagraphNumber Dim paragraphText AsString = paragraph.Text Dim paragraphImage AsSystem.Drawing.Bitmap = paragraph.ToBitmap(input) Dim paragraphXLocation AsInteger = paragraph.X Dim paragraphYLocation AsInteger = paragraph.Y Dim paragraphWidth AsInteger = paragraph.Width Dim paragraphHeight AsInteger = paragraph.Height Dim paragraphOcrAccuracy AsDouble = paragraph.Confidence Dim paragraphTextDirection = paragraph.TextDirection For Each line In paragraph.Lines ' Pages -> Paragraphs -> Lines Dim lineNumber AsInteger = line.LineNumber Dim lineText AsString = line.Text Dim lineImage AsAnyBitmap = line.ToBitmap(input) Dim lineImageLegacy AsSystem.Drawing.Bitmap = line.ToBitmap(input) Dim lineXLocation AsInteger = line.X Dim lineYLocation AsInteger = line.Y Dim lineWidth AsInteger = line.Width Dim lineHeight AsInteger = line.Height Dim lineOcrAccuracy AsDouble = line.Confidence Dim lineSkew AsDouble = line.BaselineAngle Dim lineOffset AsDouble = line.BaselineOffset For Each word In line.Words ' Pages -> Paragraphs -> Lines -> Words Dim wordNumber AsInteger = word.WordNumber Dim wordText AsString = word.Text Dim wordImage AsAnyBitmap = word.ToBitmap(input) Dim wordImageLegacy AsSystem.Drawing.Image = word.ToBitmap(input) Dim wordXLocation AsInteger = word.X Dim wordYLocation AsInteger = word.Y Dim wordWidth AsInteger = word.Width Dim wordHeight AsInteger = word.Height Dim wordOcrAccuracy AsDouble = word.Confidence If word.FontIsNot Nothing Then ' Word.Font is only set when using Tesseract Engine Modes rather than LTSM Dim fontName AsString = word.Font.FontName Dim fontSize AsDouble = word.Font.FontSize Dim isBold AsBoolean = word.Font.IsBold Dim isFixedWidth AsBoolean = word.Font.IsFixedWidth Dim isItalic AsBoolean = word.Font.IsItalic Dim isSerif AsBoolean = word.Font.IsSerif Dim isUnderlined AsBoolean = word.Font.IsUnderlined Dim fontIsCaligraphic AsBoolean = word.Font.IsCaligraphic End If For Each character In word.Characters ' Pages -> Paragraphs -> Lines -> Words -> Characters Dim characterNumber AsInteger = character.CharacterNumber Dim characterText AsString = character.Text Dim characterImage AsAnyBitmap = character.ToBitmap(input) Dim characterImageLegacy AsSystem.Drawing.Bitmap = character.ToBitmap(input) Dim characterXLocation AsInteger = character.X Dim characterYLocation AsInteger = character.Y Dim characterWidth AsInteger = character.Width Dim characterHeight AsInteger = character.Height Dim characterOcrAccuracy AsDouble = character.Confidence ' Output alternative symbols choices and their probability. ' Very useful for spell checking Dim characterChoices() AsOcrResult.Choice = character.Choices Next character Next word Next line Next paragraph Next pageEndUsing
Imports IronOcr
Imports IronSoftware.Drawing
' We can delve deep into OCR results as an object model of Pages, Barcodes, Paragraphs, Lines, Words and Characters
' This allows us to explore, export and draw OCR content using other APIs
Private ocr As New IronTesseract()
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\Potter.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
For Each page In result.Pages
' Page object
Dim pageNumber As Integer = page.PageNumber
Dim pageText As String = page.Text
Dim pageWordCount As Integer = page.WordCount
' null if we don't set Ocr.Configuration.ReadBarCodes = true;
Dim barcodes() As OcrResult.Barcode = page.Barcodes
Dim pageImage As AnyBitmap = page.ToBitmap(input)
Dim pageImageLegacy As System.Drawing.Bitmap = page.ToBitmap(input)
Dim pageWidth As Double = page.Width
Dim pageHeight As Double = page.Height
For Each paragraph In page.Paragraphs
' Pages -> Paragraphs
Dim paragraphNumber As Integer = paragraph.ParagraphNumber
Dim paragraphText As String = paragraph.Text
Dim paragraphImage As System.Drawing.Bitmap = paragraph.ToBitmap(input)
Dim paragraphXLocation As Integer = paragraph.X
Dim paragraphYLocation As Integer = paragraph.Y
Dim paragraphWidth As Integer = paragraph.Width
Dim paragraphHeight As Integer = paragraph.Height
Dim paragraphOcrAccuracy As Double = paragraph.Confidence
Dim paragraphTextDirection = paragraph.TextDirection
For Each line In paragraph.Lines
' Pages -> Paragraphs -> Lines
Dim lineNumber As Integer = line.LineNumber
Dim lineText As String = line.Text
Dim lineImage As AnyBitmap = line.ToBitmap(input)
Dim lineImageLegacy As System.Drawing.Bitmap = line.ToBitmap(input)
Dim lineXLocation As Integer = line.X
Dim lineYLocation As Integer = line.Y
Dim lineWidth As Integer = line.Width
Dim lineHeight As Integer = line.Height
Dim lineOcrAccuracy As Double = line.Confidence
Dim lineSkew As Double = line.BaselineAngle
Dim lineOffset As Double = line.BaselineOffset
For Each word In line.Words
' Pages -> Paragraphs -> Lines -> Words
Dim wordNumber As Integer = word.WordNumber
Dim wordText As String = word.Text
Dim wordImage As AnyBitmap = word.ToBitmap(input)
Dim wordImageLegacy As System.Drawing.Image = word.ToBitmap(input)
Dim wordXLocation As Integer = word.X
Dim wordYLocation As Integer = word.Y
Dim wordWidth As Integer = word.Width
Dim wordHeight As Integer = word.Height
Dim wordOcrAccuracy As Double = word.Confidence
If word.Font IsNot Nothing Then
' Word.Font is only set when using Tesseract Engine Modes rather than LTSM
Dim fontName As String = word.Font.FontName
Dim fontSize As Double = word.Font.FontSize
Dim isBold As Boolean = word.Font.IsBold
Dim isFixedWidth As Boolean = word.Font.IsFixedWidth
Dim isItalic As Boolean = word.Font.IsItalic
Dim isSerif As Boolean = word.Font.IsSerif
Dim isUnderlined As Boolean = word.Font.IsUnderlined
Dim fontIsCaligraphic As Boolean = word.Font.IsCaligraphic
End If
For Each character In word.Characters
' Pages -> Paragraphs -> Lines -> Words -> Characters
Dim characterNumber As Integer = character.CharacterNumber
Dim characterText As String = character.Text
Dim characterImage As AnyBitmap = character.ToBitmap(input)
Dim characterImageLegacy As System.Drawing.Bitmap = character.ToBitmap(input)
Dim characterXLocation As Integer = character.X
Dim characterYLocation As Integer = character.Y
Dim characterWidth As Integer = character.Width
Dim characterHeight As Integer = character.Height
Dim characterOcrAccuracy As Double = character.Confidence
' Output alternative symbols choices and their probability.
' Very useful for spell checking
Dim characterChoices() As OcrResult.Choice = character.Choices
Next character
Next word
Next line
Next paragraph
Next page
End Using
Wenden Sie die gleiche Technik auf TIFF-Konvertierungen an:
using IronOcr;var ocr = new IronTesseract();using (var input = new OcrInput()){ // Configure document properties input.Title = "Scanned Archive Document"; // Select pages to process var pageIndices = new int[] { 1, 2 }; input.LoadImageFrames("example.tiff", pageIndices); // Create searchable PDF from TIFF OcrResult result = ocr.Read(input); result.SaveAsSearchablePdf("searchable.pdf");}
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Configure document properties
input.Title = "Scanned Archive Document";
// Select pages to process
var pageIndices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageIndices);
// Create searchable PDF from TIFF
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
}
ImportsIronOcrDim ocr As New IronTesseract()Using input As New OcrInput() ' Configure document properties input.Title = "Scanned Archive Document" ' Select pages to process Dim pageIndices AsInteger() = {1, 2} input.LoadImageFrames("example.tiff", pageIndices) ' Create searchable PDF from TIFF Dim result AsOcrResult = ocr.Read(input) result.SaveAsSearchablePdf("searchable.pdf")EndUsing
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
' Configure document properties
input.Title = "Scanned Archive Document"
' Select pages to process
Dim pageIndices As Integer() = {1, 2}
input.LoadImageFrames("example.tiff", pageIndices)
' Create searchable PDF from TIFF
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
End Using
Wie exportiere ich OCR-Ergebnisse als HOCR HTML?
IronOCR unterstützt den HOCR HTML-Export und ermöglicht strukturierte PDF zu HTML- und TIFF zu HTML-Konvertierungen bei gleichzeitiger Beibehaltung der Layoutinformationen:
using IronOcr;var ocr = new IronTesseract();using (var input = new OcrInput()){ // Set HTML title input.Title = "Document Archive"; // Process multiple document types input.LoadImage("image2.jpeg"); input.LoadPdf("example.pdf", "password"); // Add TIFF pages var pageIndices = new int[] { 1, 2 }; input.LoadImageFrames("example.tiff", pageIndices); // Export as HOCR with position data OcrResult result = ocr.Read(input); result.SaveAsHocrFile("hocr.html");}
using IronOcr;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// Set HTML title
input.Title = "Document Archive";
// Process multiple document types
input.LoadImage("image2.jpeg");
input.LoadPdf("example.pdf", "password");
// Add TIFF pages
var pageIndices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageIndices);
// Export as HOCR with position data
OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("hocr.html");
}
ImportsIronOcrDim ocr As New IronTesseract()Using input As New OcrInput() ' Set HTML title input.Title = "Document Archive" ' Process multiple document types input.LoadImage("image2.jpeg") input.LoadPdf("example.pdf", "password") ' Add TIFF pages Dim pageIndices AsInteger() = {1, 2} input.LoadImageFrames("example.tiff", pageIndices) ' Export as HOCR with position data Dim result AsOcrResult = ocr.Read(input) result.SaveAsHocrFile("hocr.html")EndUsing
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
' Set HTML title
input.Title = "Document Archive"
' Process multiple document types
input.LoadImage("image2.jpeg")
input.LoadPdf("example.pdf", "password")
' Add TIFF pages
Dim pageIndices As Integer() = {1, 2}
input.LoadImageFrames("example.tiff", pageIndices)
' Export as HOCR with position data
Dim result As OcrResult = ocr.Read(input)
result.SaveAsHocrFile("hocr.html")
End Using
Kann IronOCR Barcodes zusammen mit Text lesen?
IronOCR kombiniert einzigartig die Texterkennung mit Barcode-Lesefunktionen und eliminiert die Notwendigkeit für separate Bibliotheken:
// Enable combined text and barcode recognitionusing IronOcr;var ocr = new IronTesseract();// Enable barcode detectionocr.Configuration.ReadBarCodes = true;using (var input = new OcrInput()){ // Load image containing both text and barcodes input.LoadImage("img/Barcode.png"); // Process both text and barcodes var result = ocr.Read(input); // Extract barcode data foreach (var barcode in result.Barcodes) {Console.WriteLine($"Barcode Value: {barcode.Value}");Console.WriteLine($"Format: {barcode.Format}"); }}
// Enable combined text and barcode recognition
using IronOcr;
var ocr = new IronTesseract();
// Enable barcode detection
ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
// Load image containing both text and barcodes
input.LoadImage("img/Barcode.png");
// Process both text and barcodes
var result = ocr.Read(input);
// Extract barcode data
foreach (var barcode in result.Barcodes)
{
Console.WriteLine($"Barcode Value: {barcode.Value}");
Console.WriteLine($"Format: {barcode.Format}");
}
}
C#
Wie greife ich auf detaillierte OCR-Ergebnisse und Metadaten zu?
Das IronOCR-Ergebnisobjekt bietet umfassende Daten, die fortgeschrittene Entwickler für anspruchsvolle Anwendungen nutzen können.
Jeder OcrResult enthält hierarchische Sammlungen: Seiten, Absätze, Zeilen, Wörter und Zeichen. Alle Elemente enthalten detaillierte Metadaten wie Standort, Schriftinformationen und Vertrauenswerte.
Einzelelemente (Absätze, Wörter, Barcodes) können als Bilder oder Bitmaps für die weitere Verarbeitung exportiert werden:
using System;using IronOcr;using IronSoftware.Drawing;// Configure with barcode supportIronTesseract ocr = new IronTesseract{Configuration = { ReadBarCodes = true }};using OcrInput input = new OcrInput();// Process multi-page documentint[] pageIndices = { 1, 2 };input.LoadImageFrames(@"img\Potter.tiff", pageIndices);OcrResult result = ocr.Read(input);// Navigate the complete results hierarchyforeach (var page in result.Pages){ // Page-level data int pageNumber = page.PageNumber; string pageText = page.Text; int pageWordCount = page.WordCount; // Extract page elements OcrResult.Barcode[] barcodes = page.Barcodes; AnyBitmap pageImage = page.ToBitmap(); double pageWidth = page.Width; double pageHeight = page.Height; foreach (var paragraph in page.Paragraphs) { // Paragraph properties int paragraphNumber = paragraph.ParagraphNumber; string paragraphText = paragraph.Text; double paragraphConfidence = paragraph.Confidence; var textDirection = paragraph.TextDirection; foreach (var line in paragraph.Lines) { // Line details including baseline information string lineText = line.Text; double lineConfidence = line.Confidence; double baselineAngle = line.BaselineAngle; double baselineOffset = line.BaselineOffset; foreach (var word in line.Words) { // Word-level data string wordText = word.Text; double wordConfidence = word.Confidence; // Font information (when available) if (word.Font != null) { string fontName = word.Font.FontName; double fontSize = word.Font.FontSize; bool isBold = word.Font.IsBold; bool isItalic = word.Font.IsItalic; } foreach (var character in word.Characters) { // Character-level analysis string charText = character.Text; double charConfidence = character.Confidence; // Alternative character choices for spell-checking OcrResult.Choice[] alternatives = character.Choices; } } } }}
using System;
using IronOcr;
using IronSoftware.Drawing;
// Configure with barcode support
IronTesseract ocr = new IronTesseract
{
Configuration = { ReadBarCodes = true }
};
using OcrInput input = new OcrInput();
// Process multi-page document
int[] pageIndices = { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageIndices);
OcrResult result = ocr.Read(input);
// Navigate the complete results hierarchy
foreach (var page in result.Pages)
{
// Page-level data
int pageNumber = page.PageNumber;
string pageText = page.Text;
int pageWordCount = page.WordCount;
// Extract page elements
OcrResult.Barcode[] barcodes = page.Barcodes;
AnyBitmap pageImage = page.ToBitmap();
double pageWidth = page.Width;
double pageHeight = page.Height;
foreach (var paragraph in page.Paragraphs)
{
// Paragraph properties
int paragraphNumber = paragraph.ParagraphNumber;
string paragraphText = paragraph.Text;
double paragraphConfidence = paragraph.Confidence;
var textDirection = paragraph.TextDirection;
foreach (var line in paragraph.Lines)
{
// Line details including baseline information
string lineText = line.Text;
double lineConfidence = line.Confidence;
double baselineAngle = line.BaselineAngle;
double baselineOffset = line.BaselineOffset;
foreach (var word in line.Words)
{
// Word-level data
string wordText = word.Text;
double wordConfidence = word.Confidence;
// Font information (when available)
if (word.Font != null)
{
string fontName = word.Font.FontName;
double fontSize = word.Font.FontSize;
bool isBold = word.Font.IsBold;
bool isItalic = word.Font.IsItalic;
}
foreach (var character in word.Characters)
{
// Character-level analysis
string charText = character.Text;
double charConfidence = character.Confidence;
// Alternative character choices for spell-checking
OcrResult.Choice[] alternatives = character.Choices;
}
}
}
}
}
ImportsSystemImportsIronOcrImportsIronSoftware.Drawing' Configure with barcode supportDim ocr As New IronTesseractWith { .Configuration = New TesseractConfigurationWith { .ReadBarCodes = True }}Using input As New OcrInput() ' Process multi-page document Dim pageIndices AsInteger() = {1, 2} input.LoadImageFrames("img\Potter.tiff", pageIndices) Dim result AsOcrResult = ocr.Read(input) ' Navigate the complete results hierarchy For Each page In result.Pages ' Page-level data Dim pageNumber AsInteger = page.PageNumber Dim pageText AsString = page.Text Dim pageWordCount AsInteger = page.WordCount ' Extract page elements Dim barcodes AsOcrResult.Barcode() = page.Barcodes Dim pageImage AsAnyBitmap = page.ToBitmap() Dim pageWidth AsDouble = page.Width Dim pageHeight AsDouble = page.Height For Each paragraph In page.Paragraphs ' Paragraph properties Dim paragraphNumber AsInteger = paragraph.ParagraphNumber Dim paragraphText AsString = paragraph.Text Dim paragraphConfidence AsDouble = paragraph.Confidence Dim textDirection = paragraph.TextDirection For Each line In paragraph.Lines ' Line details including baseline information Dim lineText AsString = line.Text Dim lineConfidence AsDouble = line.Confidence Dim baselineAngle AsDouble = line.BaselineAngle Dim baselineOffset AsDouble = line.BaselineOffset For Each word In line.Words ' Word-level data Dim wordText AsString = word.Text Dim wordConfidence AsDouble = word.Confidence ' Font information (when available) If word.FontIsNot Nothing Then Dim fontName AsString = word.Font.FontName Dim fontSize AsDouble = word.Font.FontSize Dim isBold AsBoolean = word.Font.IsBold Dim isItalic AsBoolean = word.Font.IsItalic End If For Each character In word.Characters ' Character-level analysis Dim charText AsString = character.Text Dim charConfidence AsDouble = character.Confidence ' Alternative character choices for spell-checking Dim alternatives AsOcrResult.Choice() = character.Choices Next Next Next Next NextEndUsing
Imports System
Imports IronOcr
Imports IronSoftware.Drawing
' Configure with barcode support
Dim ocr As New IronTesseract With {
.Configuration = New TesseractConfiguration With {
.ReadBarCodes = True
}
}
Using input As New OcrInput()
' Process multi-page document
Dim pageIndices As Integer() = {1, 2}
input.LoadImageFrames("img\Potter.tiff", pageIndices)
Dim result As OcrResult = ocr.Read(input)
' Navigate the complete results hierarchy
For Each page In result.Pages
' Page-level data
Dim pageNumber As Integer = page.PageNumber
Dim pageText As String = page.Text
Dim pageWordCount As Integer = page.WordCount
' Extract page elements
Dim barcodes As OcrResult.Barcode() = page.Barcodes
Dim pageImage As AnyBitmap = page.ToBitmap()
Dim pageWidth As Double = page.Width
Dim pageHeight As Double = page.Height
For Each paragraph In page.Paragraphs
' Paragraph properties
Dim paragraphNumber As Integer = paragraph.ParagraphNumber
Dim paragraphText As String = paragraph.Text
Dim paragraphConfidence As Double = paragraph.Confidence
Dim textDirection = paragraph.TextDirection
For Each line In paragraph.Lines
' Line details including baseline information
Dim lineText As String = line.Text
Dim lineConfidence As Double = line.Confidence
Dim baselineAngle As Double = line.BaselineAngle
Dim baselineOffset As Double = line.BaselineOffset
For Each word In line.Words
' Word-level data
Dim wordText As String = word.Text
Dim wordConfidence As Double = word.Confidence
' Font information (when available)
If word.Font IsNot Nothing Then
Dim fontName As String = word.Font.FontName
Dim fontSize As Double = word.Font.FontSize
Dim isBold As Boolean = word.Font.IsBold
Dim isItalic As Boolean = word.Font.IsItalic
End If
For Each character In word.Characters
' Character-level analysis
Dim charText As String = character.Text
Dim charConfidence As Double = character.Confidence
' Alternative character choices for spell-checking
Dim alternatives As OcrResult.Choice() = character.Choices
Next
Next
Next
Next
Next
End Using
Zusammenfassung
IronOCR bietet C#-Entwicklern die fortschrittlichste Tesseract-API-Implementierung, die nahtlos über Windows, Linux und Mac hinweg läuft. Seine Fähigkeit, Text aus Bildern mit IronOCR genau zu lesen - auch aus unvollkommenen Dokumenten - hebt es von grundlegenden OCR-Lösungen ab.
Die einzigartigen Funktionen der Bibliothek umfassen integriertes Barcode-Lesen und die Fähigkeit, Ergebnisse als durchsuchbare PDFs oder HOCR HTML zu exportieren, Funktionen, die in Standard-Tesseract-Implementierungen nicht verfügbar sind.
Wie kann ich Bilder in C# ohne Verwendung von Tesseract in Text umwandeln?
Sie können IronOCR verwenden, um Bilder in C# ohne Tesseract in Text umzuwandeln. IronOCR vereinfacht den Prozess mit eingebauten Methoden, die die Umwandlung von Bild zu Text direkt abwickeln.
Wie verbessere ich die OCR-Genauigkeit bei schlechten Bildern?
IronOCR bietet Bildfilter wie Input.Deskew() und Input.DeNoise(), die zur Verbesserung von Bildern von schlechter Qualität durch Begradigung und Rauschunterdrückung verwendet werden können, wodurch die OCR-Genauigkeit erheblich verbessert wird.
Welche Schritte sind nötig, um Text aus einem mehrseitigen Dokument mit OCR in C# zu extrahieren?
Um Text aus mehrseitigen Dokumenten zu extrahieren, können Sie mit IronOCR jede Seite mit Methoden wie LoadPdf() für PDFs oder TIFF-Dateien laden und verarbeiten und jede Seite effektiv in Text umwandeln.
Ist es möglich, Barcodes und Text gleichzeitig aus einem Bild zu lesen?
Ja, IronOCR kann sowohl Text als auch Barcodes aus einem einzelnen Bild lesen. Sie können das Barcode-Lesen mit ocr.Configuration.ReadBarCodes = true aktivieren, was die Extraktion sowohl von Text- als auch Barcode-Daten ermöglicht.
Wie kann ich OCR für die Verarbeitung von Dokumenten in mehreren Sprachen einrichten?
IronOCR unterstützt über 125 Sprachen und ermöglicht es Ihnen, eine Primärsprache mit ocr.Language einzustellen und zusätzliche Sprachen mit ocr.AddSecondaryLanguage() für die mehrsprachige Dokumentenverarbeitung hinzuzufügen.
Welche Methoden gibt es, um OCR-Ergebnisse in verschiedenen Formaten zu exportieren?
IronOCR bietet mehrere Methoden zum Exportieren von OCR-Ergebnissen, wie z.B. SaveAsSearchablePdf() für PDFs, SaveAsTextFile() für reinen Text und SaveAsHocrFile() für das HOCR-HTML-Format.
Wie kann ich die OCR-Verarbeitungsgeschwindigkeit für große Bilddateien optimieren?
Um die OCR-Verarbeitungsgeschwindigkeit zu optimieren, verwenden Sie IronOCR's OcrLanguage.EnglishFast für schnellere Spracherkennung und definieren Sie bestimmte Bereiche für OCR mit System.Drawing.Rectangle, um die Verarbeitungszeit zu reduzieren.
Wie gehe ich mit der OCR-Verarbeitung geschützter PDF-Dateien um?
Beim Umgang mit geschützten PDFs verwenden Sie die LoadPdf()-Methode zusammen mit dem richtigen Passwort. IronOCR verarbeitet bildbasierte PDFs, indem es Seiten automatisch in Bilder konvertiert für die OCR-Verarbeitung.
Was sollte ich tun, wenn die OCR-Ergebnisse nicht genau sind?
Wenn OCR-Ergebnisse ungenau sind, ziehen Sie in Betracht, die Bildverbesserungsfunktionen von IronOCR wie Input.Deskew() und Input.DeNoise() zu verwenden, und stellen Sie sicher, dass die richtigen Sprachpakete installiert sind.
Kann ich den OCR-Prozess anpassen, um bestimmte Zeichen auszuschließen?
Ja, IronOCR ermöglicht die Anpassung des OCR-Prozesses durch die Verwendung der BlackListCharacters-Eigenschaft, um bestimmte Zeichen auszuschließen und so die Genauigkeit zu verbessern und die Verarbeitung zu beschleunigen, indem sich nur auf relevanten Text konzentriert wird.
Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der Pionierarbeit in der C# PDF-Technologie leistet. Als der ursprüngliche Entwickler hinter der Kern-Codebasis von Iron Software hat er die Produktarchitektur des Unternehmens seit seiner Gründung geprägt und es zusammen mit CEO Cameron Rimington in ein Unternehmen mit mehr als 50 Mitarbeitern verwandelt, das die NASA, Tesla und globale Regierungsbehörden beliefert.