Zum Fußzeileninhalt springen
MIT ANDEREN KOMPONENTEN VERGLEICHEN

Tesseract C# vs IronOCR: Welche OCR-Bibliothek sollten Sie in .NET verwenden?

Wenn Ihre .NET Framework 4.5-Codebasis noch die OCR-Schicht verwendet und Sie kürzlich festgestellt haben, dass das Tesseract .NET.SDK von Patagames nicht gegen .NET 6, .NET 8oder ein Linux-Docker-Image kompiliert werden kann, befinden Sie sich genau in der Situation, die dieser Artikel untersucht. Das Tesseract .NET.SDK zielt auf .NET Framework 2.0 bis 4.5 ab, liefert native Binärdateien nur für Windows aus und verlangt zusätzlich zur kostenlosen Tesseract-Engine eine kommerzielle Lizenzgebühr – eine Kombination, die Teams in einer immer kleiner werdenden Insel veralteter Infrastruktur gefangen hält, und zwar genau zu dem Zeitpunkt, an dem die meisten Unternehmen Workloads containerisieren und Laufzeitumgebungen aktualisieren.

Tesseract .NET SDK verstehen

Tesseract .NET.SDK ist ein kommerzieller .NET Wrapper für die Open-Source-OCR-Engine Tesseract und wird von Patagames vertrieben. Das Produkt bündelt vorab kompilierte Tesseract-Binärdateien für Windows x86 und x64, umschließt die C/C++ Tesseract-API in einer verwalteten .NET-Oberfläche und liefert dieses Paket über NuGet unter der Tesseract.Net.SDK Paket-ID aus.

Das Produkt wurde für eine Ära entwickelt, in der .NET Framework 4.5 die Bereitstellungsgrundlage war und Windows Server das einzige Ziel. Diese Ära ist für die meisten Teams zu Ende gegangen, aber das SDK hat nicht Schritt gehalten. Die offizielle Supportmatrix umfasst .NET Framework 2.0, 3.0, 3.5, 4.0 und 4.5. .NET Core, .NET Standard, .NET 5, .NET 6, .NET 7, .NET 8und .NET 9werden nicht unterstützt. Linux wird nicht unterstützt. macOSwird nicht unterstützt. Docker-Container – die fast ausschließlich Linux-Basis-Images ausführen – werden nicht unterstützt.

Wichtigste architektonische Merkmale des Tesseract .NET.SDK:

  • Laufzeitziel: ausschließlich .NET Framework 2.0–4.5; keine .NET Core oder modernen .NET -Laufzeitumgebungen
  • Plattform: Nur Windows x86 und x64; P/Invoke-Aufrufe in Windows-spezifische native Bibliotheken werfen DllNotFoundException auf jedem Nicht-Windows-System.
  • Tessdata-Verwaltung: Sprachen sind nicht gebündelt; Entwickler laden .traineddata Dateien aus dem Tesseract GitHub-Repository herunter, legen sie im bin/tessdata/ Ordner ab und konfigurieren die Build-Aktion jeder Datei in Visual Studio.
  • Thread-Sicherheit: OcrApi Instanzen sind nicht thread-sicher; Parallele Arbeitslasten erfordern eine Engine-Instanz pro Thread, wobei jede 40–100 MB Sprachdaten in den Speicher lädt.
  • Vorverarbeitung: Keine integriert; Für verzerrte, verrauschte oder niedrig aufgelöste Bilder wird eine externe Bibliothek wie OpenCV oder ImageMagick benötigt.
  • PDF-Eingabe: Wird nicht nativ unterstützt; Entwickler installieren eine zweite Bibliothek wie beispielsweise PdfiumViewer, um PDF-Seiten vor der OCR in temporäre Bilddateien umzuwandeln.
  • Entwickler: Patagames wird von einem einzelnen Entwickler betrieben; Es gibt keine Service-Level-Vereinbarung (SLA), keinen Support für Enterprise und keine Redundanz, falls der Entwickler ausfällt.

Legacy .NET Framework Targeting in der Praxis

Die strikte Abgrenzung bei .NET Framework 4.5 ist nicht nur eine Checkbox – sie prägt jede nachfolgende Architekturentscheidung. Ein Projekt, das von Tesseract.Net.SDK abhängt, kann nicht auf <TargetFramework>net8.0</TargetFramework> in seinem .csproj abzielen. Es kann nicht von einem GitHub Actions-Runner mit mcr.microsoft.com/dotnet/sdk:8.0 gebaut werden. Es kann nicht in einem Kubernetes-Pod bereitgestellt werden, der einen Linux-Container ausführt. Sobald der Rest der Organisation diese Grenze überschreitet, wird der OCR-Dienst zum Waisenkind.

Der Initialisierungscode des SDKs selbst legt dies direkt offen. Das Basisnutzungsmuster in tesseract-net-sdk-basic-ocr.cs enthält eine explizite Windows-Plattform-Schutzmaßnahme:

// Install: Install-Package Tesseract.Net.SDK
// Platform: Windows ONLY (.NET Framework 2.0-4.5)
using Patagames.Ocr;

public string ExtractTextSimple(string imagePath)
{
    // Platform check — Tesseract.Net.SDK is Windows-only
    if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
    {
        throw new PlatformNotSupportedException(
            "Tesseract.Net.SDK only supports Windows.");
    }

    // Verify tessdata exists
    if (!Directory.Exists(@".\tessdata"))
    {
        throw new DirectoryNotFoundException(
            "tessdata folder not found. Download traineddata files from GitHub.");
    }

    using (var api = OcrApi.Create())
    {
        api.Init(Languages.English);       // loads eng.traineddata (~40 MB)
        return api.GetTextFromImage(imagePath);
    }
}
// Install: Install-Package Tesseract.Net.SDK
// Platform: Windows ONLY (.NET Framework 2.0-4.5)
using Patagames.Ocr;

public string ExtractTextSimple(string imagePath)
{
    // Platform check — Tesseract.Net.SDK is Windows-only
    if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
    {
        throw new PlatformNotSupportedException(
            "Tesseract.Net.SDK only supports Windows.");
    }

    // Verify tessdata exists
    if (!Directory.Exists(@".\tessdata"))
    {
        throw new DirectoryNotFoundException(
            "tessdata folder not found. Download traineddata files from GitHub.");
    }

    using (var api = OcrApi.Create())
    {
        api.Init(Languages.English);       // loads eng.traineddata (~40 MB)
        return api.GetTextFromImage(imagePath);
    }
}
Imports Patagames.Ocr
Imports System.Runtime.InteropServices
Imports System.IO

Public Function ExtractTextSimple(ByVal imagePath As String) As String
    ' Platform check — Tesseract.Net.SDK is Windows-only
    If Not RuntimeInformation.IsOSPlatform(OSPlatform.Windows) Then
        Throw New PlatformNotSupportedException("Tesseract.Net.SDK only supports Windows.")
    End If

    ' Verify tessdata exists
    If Not Directory.Exists(".\tessdata") Then
        Throw New DirectoryNotFoundException("tessdata folder not found. Download traineddata files from GitHub.")
    End If

    Using api = OcrApi.Create()
        api.Init(Languages.English) ' loads eng.traineddata (~40 MB)
        Return api.GetTextFromImage(imagePath)
    End Using
End Function
$vbLabelText   $csharpLabel

Vor der eigentlichen OCR-Verarbeitung werden zwei Sicherheitsprüfungen durchgeführt: Bestätigung von Windows und Bestätigung von Tessdata. Auf allen Nicht-Windows-Hosts löst die Methode eine Ausnahme aus, bevor sie die Engine erreicht. Auf allen Rechnern, auf denen der Ordner "tessdata" während der Bereitstellung nicht kopiert wurde, wird ebenfalls eine Ausnahme ausgelöst. Keine der beiden Prüfungen ist Standard – beide stellen Fehlermodi dar, denen Entwickler im Produktivbetrieb begegnen.

IronOCR verstehen

IronOCR ist eine kommerzielle OCR-Bibliothek für .NET , die auf einer optimierten Tesseract 5-Engine basiert und über automatische Bildvorverarbeitung, native PDF-Eingabe sowie plattformübergreifende Unterstützung für Windows, Linux, macOS, Docker, Azure und AWS verfügt. Es wird als einzelnes NuGet Paket ohne externe native Bibliothekskonfiguration, ohne Verwaltung des tessdata-Ordners und ohne plattformspezifische Bereitstellungsskripte ausgeliefert.

Hauptmerkmale:

  • Laufzeitunterstützung: .NET Framework 4.6.2 und höher, .NET Core 2.0 und höher, .NET 5, 6, 7, 8 und 9; Eine einzelne Paketdatei funktioniert auf allen unterstützten Laufzeitumgebungen.
  • Plattformunterstützung: Windows x86/x64, Linux x64, macOS; Lässt sich identisch in Docker-Containern, Azure App Service, AWS Lambdaund Kubernetes-Pods bereitstellen.
  • Vorverarbeitung: Eingebaute Filter — Deskew(), DeNoise(), Contrast(), Binarize(), EnhanceResolution(), Sharpen(), Rotate() und mehr — werden über das OcrInput Objekt vor der Motorausführung angewendet.
  • PDF-Eingabe: Native; input.LoadPdf() akzeptiert gescannte und digitale PDFs ohne eine sekundäre Bibliothek; Passwortgeschützte PDFs übergeben das Passwort als Parameter
  • Durchsuchbares PDF-Ausgabe: result.SaveAsSearchablePdf() konvertiert jedes gescannte Dokument in einen textdurchsuchbaren PDF in einem Aufruf.
  • Thread-Sicherheit: IronTesseract Instanzen sind thread-sicher; Eine einzelne Instanz bedient alle Threads, ohne die Speicherzuweisung zu vervielfachen.
  • Sprachunterstützung: Über 125 Sprachen werden als separate NuGet -Sprachpakete installiert und beim ersten Gebrauch automatisch heruntergeladen; keine manuelle Dateiplatzierung erforderlich.
  • Lizenzierung: Unbefristete Einmalkauf beginnt bei $999 für die Lite-Stufe; no per-document or per-transaction billing

Funktionsvergleich

Feature Tesseract.Net.SDK IronOCR
.NET Framework -Unterstützung 2,0–4,5 nur 4.6.2+
Modernes .NET (5/6/7/8/9) Nein Ja
Windows-Bereitstellung Ja Ja
Linux-Bereitstellung Nein Ja
Docker-Container Nein Ja
PDF-Eingabe (nativ) Nein Ja
Automatische Vorverarbeitung Nein Ja
Gewindesicherer Motor Nein Ja

Detaillierter Funktionsvergleich

Feature Tesseract.Net.SDK IronOCR
Laufzeitkompatibilität
.NET Framework 2.0-4.5 Ja Nein
.NET Framework 4.6.2+ Nein Ja
.NET Core 2.x/3.x Nein Ja
.NET 5 Nein Ja
.NET 6 Nein Ja
.NET 7 Nein Ja
.NET 8 Nein Ja
.NET 9 Nein Ja
Windows, Linux, macOS, Docker, Azure, AWS.
Windows x86/x64 Ja Ja
Linux x64 Nein Ja
macOS Nein Ja
Docker (Linux-Image) Nein Ja
Azure App Service (Linux) Nein Ja
AWS Lambda Nein Ja
Kubernetes-Pod Nein Ja
Eingangsquellen
Bilddateien (BMP, PNG, JPEG, TIFF) Ja Ja
PDF-Eingabe (nativ) Nein Ja
Passwortgeschütztes PDF Nein Ja
Byte-Array / Datenstrom Ja Ja
Vorverarbeitung
Entschiefen Nein (externe Bibliothek) Eingebaut
Rauschunterdrückung Nein (externe Bibliothek) Eingebaut
Kontrastverbesserung Nein (externe Bibliothek) Eingebaut
Binarisieren Nein (externe Bibliothek) Eingebaut
Auflösungsverbesserung Nein (externe Bibliothek) Eingebaut
Ausgabe
Klartext Ja Ja
Durchsuchbares PDF Nein Ja
hOCR-Export Nein Ja
Strukturierte Daten (Wörter, Zeilen, Absätze mit Koordinaten) Nein Ja
Vertrauensindex Ja (GetMeanConfidence()) Ja (result.Confidence)
Sprachunterstützung
Wortanzahl 120+ (manueller Download) 125+ (NuGet Pakete)
Automatischer Sprach-Download Nein Ja
Gewindeschneiden
Threadsichere Engine-Instanz Nein Ja
Eingebaute Parallelverarbeitung Nein Ja
Speicher-Overhead pro Thread ~40–100 MB pro Motor Gemeinsame Einzelinstanz
Lizenzierung
Lizenzmodell Einmalige kommerzielle Veranstaltung Ewige einmalige
Einstiegspreis ca. 20–50 US-Dollar $999
Abrechnung pro Dokument Nein Nein
Enterprise Support / SLA Nein Ja

.NET -Versionsunterstützung und Laufzeitkompatibilität

Der wichtigste Unterschied zwischen diesen beiden Bibliotheken liegt nicht im API-Design oder in der Genauigkeit – sondern in der Laufzeitkompatibilität.

Tesseract .NET SDK-Ansatz

Das Tesseract .NET.SDK ist für .NET Framework 2.0 bis 4.5 ausgelegt. Jedes Projekt, das davon abhängt, muss selbst eine dieser Framework-Versionen unterstützen. Die Migrationsvergleichsdatei bestätigt diese Einschränkung im Setup-Abschnitt:

// Install: Install-Package Tesseract.Net.SDK
// License: Commercial (Patagames)
// Platform: Windows ONLY (.NET Framework 2.0-4.5)
//
// Requirements:
//   - tessdata folder must exist in bin/Debug/or bin/Release/
//   - Download traineddata files from https://github.com/tesseract-ocr/tessdata
//   - Windows operating system (no Linux/macOS support)

using Patagames.Ocr;

// Multi-language setup — all traineddata files must be manually downloaded
using (var api = OcrApi.Create())
{
    // Combine languages with bitwise OR
    api.Init(Languages.English | Languages.German | Languages.French);

    string text = api.GetTextFromImage(imagePath);
    return text;
}
// Install: Install-Package Tesseract.Net.SDK
// License: Commercial (Patagames)
// Platform: Windows ONLY (.NET Framework 2.0-4.5)
//
// Requirements:
//   - tessdata folder must exist in bin/Debug/or bin/Release/
//   - Download traineddata files from https://github.com/tesseract-ocr/tessdata
//   - Windows operating system (no Linux/macOS support)

using Patagames.Ocr;

// Multi-language setup — all traineddata files must be manually downloaded
using (var api = OcrApi.Create())
{
    // Combine languages with bitwise OR
    api.Init(Languages.English | Languages.German | Languages.French);

    string text = api.GetTextFromImage(imagePath);
    return text;
}
Imports Patagames.Ocr

' Install: Install-Package Tesseract.Net.SDK
' License: Commercial (Patagames)
' Platform: Windows ONLY (.NET Framework 2.0-4.5)
'
' Requirements:
'   - tessdata folder must exist in bin/Debug/or bin/Release/
'   - Download traineddata files from https://github.com/tesseract-ocr/tessdata
'   - Windows operating system (no Linux/macOS support)

' Multi-language setup — all traineddata files must be manually downloaded
Using api = OcrApi.Create()
    ' Combine languages with bitwise OR
    api.Init(Languages.English Or Languages.German Or Languages.French)

    Dim text As String = api.GetTextFromImage(imagePath)
    Return text
End Using
$vbLabelText   $csharpLabel

Das using (var api = OcrApi.Create()) Muster ist idiomatisch für das .NET Framework 2.0. Es verwendet die C# 1.0 using Anweisung anstelle der C# 8.0 using var Deklaration. Der Namespace ist Patagames.Ocr. Die Sprachkombination verwendet bitweises ODER auf einem Enum. Keiner dieser Codes kompiliert gegen ein net6.0 oder net8.0 Ziel-Framework in einer SDK-Stil-Projektdatei, da Tesseract.Net.SDK selbst keine kompatible Assembly erzeugt.

Teams, die noch auf .NET Framework 4.5 setzen, tun dies nicht aus freier Wahl. Sie sind vorhanden, weil Abhängigkeiten – manchmal auch eine OCR-Bibliothek – nicht aktualisiert werden können. Die Wahl des Tesseract .NET.SDK vertieft diese Abhängigkeitskette.

IronOCR-Ansatz

IronOCR unterstützt .NET Framework 4.6.2 und alle modernen .NET Laufzeitumgebungen bis einschließlich .NET 9. Die gleiche Paketdatei läuft auf allen. Beim Upgrade eines Projekts von .NET Framework 4.8 auf .NET 8ist es nicht erforderlich, die OCR-Bibliothek zu ersetzen.

// Works on .NET Framework 4.6.2, .NET Core, .NET 5/6/7/8/9
// Same NuGet package, same API, same results
using IronOcr;

IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.German);
ocr.AddSecondaryLanguage(OcrLanguage.French);

var result = ocr.Read("document.jpg");
Console.WriteLine(result.Text);
Console.WriteLine($"Confidence: {result.Confidence}%");
// Works on .NET Framework 4.6.2, .NET Core, .NET 5/6/7/8/9
// Same NuGet package, same API, same results
using IronOcr;

IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.German);
ocr.AddSecondaryLanguage(OcrLanguage.French);

var result = ocr.Read("document.jpg");
Console.WriteLine(result.Text);
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

' Works on .NET Framework 4.6.2, .NET Core, .NET 5/6/7/8/9
' Same NuGet package, same API, same results

IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
ocr.AddSecondaryLanguage(OcrLanguage.German)
ocr.AddSecondaryLanguage(OcrLanguage.French)

Dim result = ocr.Read("document.jpg")
Console.WriteLine(result.Text)
Console.WriteLine($"Confidence: {result.Confidence}%")
$vbLabelText   $csharpLabel

Keine bitweise ODER-Verknüpfung von Sprach-Enumerationen. Kein tessdata-Ordner vorhanden. Keine Plattformprüfung. Die IronTesseract-Einrichtungsanleitung beschreibt die Konfigurationsoptionen für alle unterstützten Laufzeitumgebungen in einem einzigen Dokument.

Die praktische Konsequenz für Teams mitten in der Migration: Ein ASP.NET Core 8-Projekt und ein älteres .NET Framework 4.8-Projekt können dieselbe IronOCR Dienstschicht gemeinsam nutzen. Keine bedingte Kompilierung, keine separaten Bibliotheksversionen, keine Abstraktionsschicht zur Verschleierung inkompatibler APIs.

Plattformabdeckung und Containerbereitstellung

Tesseract .NET SDK-Ansatz

Das Tesseract .NET.SDK liefert native Binärdateien für Windows x86 und x64. Die P/Invoke-Aufrufe, die die Tesseract-Engine initialisieren, werden auf diese Windows-DLLs aufgelöst. Auf einem Linux-Host — einschließlich jedes Docker-Containers basierend auf mcr.microsoft.com/dotnet/aspnet:8.0, ubuntu oder alpine — kann die DLL nicht geladen werden und die Anwendung wirft zur Laufzeit DllNotFoundException.

Das Parallelverarbeitungsbeispiel aus tesseract-net-sdk-pdf-processing.cs zeigt, was dies für Batch-Workloads auf Windows selbst bedeutet, bevor Linux überhaupt in Betracht gezogen wird:

// Windows-only: Parallel.ForEach with separate engine per thread
// Each engine loads ~40-100 MB per language
Parallel.ForEach(
    imagePaths,
    new ParallelOptions { MaxDegreeOfParallelism = 4 },
    imagePath =>
    {
        // WARNING: Must create separate OcrApi for each thread!
        // Memory usage: 4 threads × 100MB = 400MB minimum
        using (var api = OcrApi.Create())
        {
            api.Init(Languages.English);
            string text = api.GetTextFromImage(imagePath);
            results[imagePath] = text;
        }
    });
// Windows-only: Parallel.ForEach with separate engine per thread
// Each engine loads ~40-100 MB per language
Parallel.ForEach(
    imagePaths,
    new ParallelOptions { MaxDegreeOfParallelism = 4 },
    imagePath =>
    {
        // WARNING: Must create separate OcrApi for each thread!
        // Memory usage: 4 threads × 100MB = 400MB minimum
        using (var api = OcrApi.Create())
        {
            api.Init(Languages.English);
            string text = api.GetTextFromImage(imagePath);
            results[imagePath] = text;
        }
    });
$vbLabelText   $csharpLabel

Vier parallele Threads, vier Engine-Instanzen, 400 MB an Sprachdaten gleichzeitig geladen – und das nur für Englisch. Fügt man Deutsch und Französisch hinzu, verdoppelt sich diese Grundquote. Das SDK bietet keinen Pooling-Mechanismus, um dies zu beheben. Die Architektur ist mit den modernen Ressourcenbeschränkungen für Container inkompatibel, die typischerweise eine Speicherobergrenze pro Pod erzwingen.

Es gibt auch keinen Weg zu Azure Functions auf einem Linux-Verbrauchsplan, keinen Weg zu AWS Lambda(das auf Amazon Linux läuft) und keinen Weg zu Google Cloud Run. Alle großen Serverless-Plattformen verwenden standardmäßig Linux. Tesseract .NET.SDK ist von all dem absichtlich ausgeschlossen.

IronOCR-Ansatz

IronOCR wird in Docker ohne zusätzliche Konfiguration bereitgestellt, abgesehen von einer einzigen apt-get Zeile für libgdiplus auf Debian-basierten Images. Der Docker-Bereitstellungsleitfaden behandelt sowohl Linux- als auch Windows-Container. Das Gleiche gilt für Linux-Bereitstellungen , Azure und AWS .

Thread-Sicherheit ist in IronTesseract integriert. Eine einzige Instanz bedient alle parallelen Worker:

// Cross-platform: Windows, Linux, macOS, Docker
// Single instance — thread-safe
using IronOcr;

var ocr = new IronTesseract();

// Single engine instance shared across all threads
//Neinmemory multiplication
Parallel.ForEach(imagePaths, imagePath =>
{
    using var input = new OcrInput();
    input.LoadImage(imagePath);
    var result = ocr.Read(input);
    SaveResult(imagePath, result.Text);
});
// Cross-platform: Windows, Linux, macOS, Docker
// Single instance — thread-safe
using IronOcr;

var ocr = new IronTesseract();

// Single engine instance shared across all threads
//Neinmemory multiplication
Parallel.ForEach(imagePaths, imagePath =>
{
    using var input = new OcrInput();
    input.LoadImage(imagePath);
    var result = ocr.Read(input);
    SaveResult(imagePath, result.Text);
});
Imports IronOcr

' Cross-platform: Windows, Linux, macOS, Docker
' Single instance — thread-safe
Dim ocr As New IronTesseract()

' Single engine instance shared across all threads
' Neinmemory multiplication
Parallel.ForEach(imagePaths, Sub(imagePath)
    Using input As New OcrInput()
        input.LoadImage(imagePath)
        Dim result = ocr.Read(input)
        SaveResult(imagePath, result.Text)
    End Using
End Sub)
$vbLabelText   $csharpLabel

Vier Threads, eine Engine-Instanz, eine Kopie der Sprachdaten im Speicher. Ein Beispiel für Multithreading mit Durchsatz-Benchmarks finden Sie in der IronOCR Dokumentation, die die Konfigurationsoptionen detailliert beschreibt.

PDF-Verarbeitung

Tesseract .NET SDK-Ansatz

Das Tesseract .NET.SDK bietet keine PDF-Unterstützung. Die tesseract-net-sdk-pdf-processing.cs Datei ist offen über diese Einschränkung in ihrem Header:

// KRITISCHE EINSCHRÄNKUNG:
// Das Tesseract .NET.SDK unterstützt PDF-Eingabe nicht nativ.
// Sie müssen zunächst eine separate Bibliothek verwenden, um PDF-Seiten in Bilder umzuwandeln.
// Dieses Beispiel verwendet PdfiumViewer, Alternativen sind aber beispielsweise:
// - iTextSharp
// - Ghostscript .NET
// - Docnet.Core

Das Ergebnis ist eine mehrstufige Bibliothekeneinbindung. Installieren Sie PdfiumViewer. Rendern Sie jede PDF-Seite zu einem Bitmap bei 200–300 DPI. Schreiben Sie dieses Bitmap in eine temporäre Datei. Führen Sie api.GetTextFromImage() auf der temporären Datei aus. Löschen Sie die temporäre Datei. Wiederholen Sie dies für jede Seite. Implementieren Sie eine Fehlerbehandlung für Teilfehler mitten im Dokument. Verwalten Sie den Speicher explizit — das ProcessLargeTiff Beispiel zwingt GC.Collect() alle zehn Seiten, um Speicherüberschreitungsfehler bei großen Dokumenten zu verhindern.

Das ist der tatsächliche Produktionscode, kein vereinfachtes Beispiel. Es läuft nur unter Windows, nur unter .NET Framework und benötigt eine zweite kommerzielle oder Open-Source-Abhängigkeit, die selbst ein Bereitstellungsmanagement erfordert.

IronOCR-Ansatz

IronOCR liest PDFs nativ. Keine sekundäre Bibliothek, keine temporären Dateien, keine Seitenrendering-Schleife:

// Native PDF OCR — no PdfiumViewer, no temp files
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("scanned-report.pdf");   // native PDF support
var result = ocr.Read(input);

// Access page-by-page results
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Text}");
}

// Or produce a searchable PDF output
result.SaveAsSearchablePdf("searchable-report.pdf");
// Native PDF OCR — no PdfiumViewer, no temp files
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("scanned-report.pdf");   // native PDF support
var result = ocr.Read(input);

// Access page-by-page results
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Text}");
}

// Or produce a searchable PDF output
result.SaveAsSearchablePdf("searchable-report.pdf");
Imports IronOcr

Dim ocr As New IronTesseract()

Using input As New OcrInput()
    input.LoadPdf("scanned-report.pdf") ' native PDF support
    Dim result = ocr.Read(input)

    ' Access page-by-page results
    For Each page In result.Pages
        Console.WriteLine($"Page {page.PageNumber}: {page.Text}")
    Next

    ' Or produce a searchable PDF output
    result.SaveAsSearchablePdf("searchable-report.pdf")
End Using
$vbLabelText   $csharpLabel

Passwortgeschützte PDFs erfordern einen zusätzlichen Parameter: input.LoadPdf("encrypted.pdf", Password: "secret"). Spezifische Seitenbereiche verwenden input.LoadPdfPages("document.pdf", 1, 10). Die PDF-Eingabeanleitung und die durchsuchbare PDF-Anleitung decken alle Varianten ab.

Das PDF-OCR-Beispiel zeigt das vollständige Muster einschließlich Konfidenzprüfung und strukturierter Ausgabe. Das Beispiel der durchsuchbaren PDFs veranschaulicht den Anwendungsfall der Dokumentenarchivierung, bei dem gescannte PDFs indiziert und durchsuchbar werden.

Bildvorverarbeitung und Dokumentenqualität in der Praxis

Tesseract .NET SDK-Ansatz

Tesseract-Engines reagieren empfindlich auf die Bildqualität. Verzerrte, niedrig aufgelöste oder verrauschte Dokumente führen ohne Vorverarbeitung zu deutlich schlechteren Ergebnissen. Das Tesseract .NET.SDK bietet keine an.

Die Migrationsvergleichsdatei quantifiziert die Lücke direkt:

// Tesseract.Net.SDK:Neinpreprocessing available
// Direct OCR on problematic image = garbage output
using (var api = OcrApi.Create())
{
    api.Init(Languages.English);

    // Direct OCR on problematic image — poor results
    string text = api.GetTextFromImage(imagePath);
    return text;

    // To preprocess, you need:
    // 1. Install Emgu CV or OpenCvSharp
    // 2. Implement Hough transform for skew detection
    // 3. Implement affine rotation for deskew
    // 4. Implement FastNlMeansDenoising for noise reduction
    // 5. Handle all the native OpenCV dependencies
    // This is often 200+ lines of code
}
// Tesseract.Net.SDK:Neinpreprocessing available
// Direct OCR on problematic image = garbage output
using (var api = OcrApi.Create())
{
    api.Init(Languages.English);

    // Direct OCR on problematic image — poor results
    string text = api.GetTextFromImage(imagePath);
    return text;

    // To preprocess, you need:
    // 1. Install Emgu CV or OpenCvSharp
    // 2. Implement Hough transform for skew detection
    // 3. Implement affine rotation for deskew
    // 4. Implement FastNlMeansDenoising for noise reduction
    // 5. Handle all the native OpenCV dependencies
    // This is often 200+ lines of code
}
Imports Tesseract.Net.SDK

' Tesseract.Net.SDK:Neinpreprocessing available
' Direct OCR on problematic image = garbage output
Using api = OcrApi.Create()
    api.Init(Languages.English)

    ' Direct OCR on problematic image — poor results
    Dim text As String = api.GetTextFromImage(imagePath)
    Return text

    ' To preprocess, you need:
    ' 1. Install Emgu CV or OpenCvSharp
    ' 2. Implement Hough transform for skew detection
    ' 3. Implement affine rotation for deskew
    ' 4. Implement FastNlMeansDenoising for noise reduction
    ' 5. Handle all the native OpenCV dependencies
    ' This is often 200+ lines of code
End Using
$vbLabelText   $csharpLabel

Die Aussage ist keine Übertreibung. Eine produktionsreife Implementierung der Entzerrung mit OpenCV in .NET umfasst 100–200 Zeilen Code für Initialisierung, Winkelerkennung, Matrixberechnung und affine Transformation. Dieser Code muss dann getestet, gewartet und bereitgestellt werden – mit einer eigenen nativen Abhängigkeitskette, die wiederum nur unter Windows funktioniert.

IronOCR-Ansatz

IronOCR bündelt die Vorverarbeitung als First-Class-API-Methoden auf OcrInput. Die gleichen Operationen, die eine OpenCV-Integration im Tesseract .NET.SDK erfordern, sind hier einzelne Methodenaufrufe:

// Eingebaut preprocessing — no external library required
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadImage("skewed-invoice-scan.jpg");

input.Deskew();               // automatic angle detection and correction
input.DeNoise();              // scanner artifact removal
input.Contrast();             // contrast enhancement
input.Binarize();             // optimal threshold conversion
input.EnhanceResolution(300); // scale low-DPI images to 300 DPI

var result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
// Eingebaut preprocessing — no external library required
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadImage("skewed-invoice-scan.jpg");

input.Deskew();               // automatic angle detection and correction
input.DeNoise();              // scanner artifact removal
input.Contrast();             // contrast enhancement
input.Binarize();             // optimal threshold conversion
input.EnhanceResolution(300); // scale low-DPI images to 300 DPI

var result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

Dim ocr As New IronTesseract()

Using input As New OcrInput()
    input.LoadImage("skewed-invoice-scan.jpg")

    input.Deskew()               ' automatic angle detection and correction
    input.DeNoise()              ' scanner artifact removal
    input.Contrast()             ' contrast enhancement
    input.Binarize()             ' optimal threshold conversion
    input.EnhanceResolution(300) ' scale low-DPI images to 300 DPI

    Dim result = ocr.Read(input)
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
$vbLabelText   $csharpLabel

Der Leitfaden zur Bildqualitätskorrektur und der Leitfaden zur Bildfarbkorrektur dokumentieren alle verfügbaren Filter mit Vorher/Nachher-Vergleichen der Genauigkeit. Das Beispiel des Scans mit niedriger Qualität zeigt die Verbesserungszahlen der Genauigkeit für typische Dokumente unter realen Anwendungsbedingungen.

Speziell für Workflows mit gescannten Dokumenten behandelt der Leitfaden zur Verarbeitung gescannter Dokumente die Ausrichtungserkennung, die Verarbeitung mehrseitiger Dokumente und die Optimierung des Stapelverarbeitungsdurchsatzes in einem einzigen Artikel.

API-Mapping-Referenz

Tesseract.Net.SDK IronOCR-Äquivalent Notizen
Install-Package Tesseract.Net.SDK dotnet add package IronOcr IronOCR unterstützt alle modernen Laufzeitumgebungen.
using Patagames.Ocr; using IronOcr;
OcrApi.Create() new IronTesseract() IronTesseract ist fadensicher; eine Instanz pro Anwendung
api.Init(Languages.English) ocr.Language = OcrLanguage.English IronOCR verwendet die Zuweisung von Eigenschaften, nicht den Methodenaufruf.
api.Init(Languages.English) Sprachen.Deutsch)|ocr.AddSecondaryLanguage(OcrLanguage.German)` Keine bitweise ODER-Verknüpfung erforderlich
api.GetTextFromImage(path) ocr.Read("path.jpg").Text Verkettung direkt oder über OcrInput
OcrImage.FromFile(path) new OcrInput("path.jpg") OcrInput akzeptiert Dateien, Datenströme, Byte-Arrays, URLs und Bitmaps.
OcrImage.FromBitmap(bmp) input.LoadImage(bitmap)
api.SetImage(img); api.GetText()|ocr.Read(input).Text` OcrInput entspricht SetImage.
api.GetMeanConfidence() result.Confidence Wurde mit dem Ergebnisobjekt zurückgegeben
api.SetRectangle(x, y, w, h) new CropRectangle(x, y, w, h) übergeben an input.LoadImage() Leitfaden für regionsbasierte OCR
api.SetVariable("tessedit_char_whitelist", x) ocr.Configuration.WhiteListCharacters = x
api.SetVariable("tessedit_char_blacklist", x) ocr.Configuration.BlackListCharacters = x
(no PDF support) input.LoadPdf("file.pdf") Keine zusätzliche Bibliothek erforderlich
(no preprocessing) input.Deskew(); input.DeNoise(); usw. Alle Vorverarbeitungsprozesse sind integriert
(no structured output) result.Words, result.Lines, result.Pages Wortkoordinaten und Konfidenz
(no searchable PDF) result.SaveAsSearchablePdf("out.pdf") PDF-Ausgabe mit Suchfunktion nach einem einzigen Aufruf

Wenn Teams einen Wechsel von Tesseract .NET.SDK zu IronOCR erwägen

Das .NET -Upgrade erzwingt das Problem

Der häufigste Auslöser ist nicht die Unzufriedenheit mit der OCR-Qualität – es handelt sich vielmehr um ein geplantes .NET Framework Upgrade, das auf der OCR-Ebene an seine Grenzen stößt. Ein Team, das eine Dokumentenverwaltungsanwendung von .NET Framework 4.7 auf .NET 8aktualisiert, entdeckt, dass Tesseract.Net.SDK keine kompatible Ziel-Framework-Assembly erzeugt. Das Upgrade bleibt entweder hängen, oder der OCR-Dienst wird in einen separaten, nur unter Windows lauffähigen Prozess isoliert, der über HTTP kommuniziert – was einen Netzwerk-Hop, ein separates Bereitstellungsartefakt und eine Kompatibilitätsschicht zur Folge hat, die auf unbestimmte Zeit gewartet werden muss. Für die meisten Teams, die sich auf einem aktiven Modernisierungspfad befinden, ist keines der beiden Ergebnisse akzeptabel. Durch den Austausch des Tesseract .NET.SDK durch IronOCR wird das Hindernis beseitigt und ein reibungsloses Upgrade ermöglicht, da IronOCR sowohl auf dem alten .NET Framework 4.6.2+als auch auf dem neuen .NET 8-Ziel gleichzeitig läuft, sodass der Dienst schrittweise migriert werden kann.

Containerisierung der Verarbeitungspipeline

Dokumentenverarbeitungs-Workloads gehören zu den ersten Kandidaten für die Containerisierung: Sie sind zustandslos, CPU-gebunden und profitieren von horizontaler Skalierung. Ein Team, das den Rest seiner Pipeline containerisiert hat, stellt fest, dass Tesseract .NET.SDK beim Docker-Image-Build-Schritt fehlschlägt, wenn das Basis-Image Linux ist. Zur Auswahl stehen Windows-Container – die Lizenzkosten verursachen, größere Image-Größen aufweisen und mit den meisten verwalteten Kubernetes-Diensten, die standardmäßig Linux-Knotenpools verwenden, inkompatibel sind – oder eine Bibliothek, die Linux tatsächlich unterstützt.IronOCR lässt sich mit einem Standard-Dockerfile in jedem Linux-Container bereitstellen. Die Docker-Bereitstellungsanleitung enthält die genaue Dockerfile-Konfiguration für die Basis-Images von Debian und Alpine.

Parallele Stapelverarbeitung im großen Maßstab

Eine Pipeline zur Rechnungsverarbeitung, die 50.000 Dokumente pro Tag mit vier parallelen Workern unter Verwendung des Tesseract .NET.SDK verarbeitet, benötigt mindestens 400 MB allein für die vier Engine-Instanzen, die mit englischen Daten geladen sind. Kommt eine zweite Sprache hinzu, verdoppelt sich die Zahl. Durch die Vorverarbeitung mittels OpenCV steigt der Speicherverbrauch noch weiter an. Auf einem Server mit begrenzten Ressourcen oder in einer containerisierten Bereitstellung mit einem Speicherlimit von 2 GB pro Pod wird diese Berechnung zu einem Bereitstellungshindernis. Das threadsichere Einzelinstanzmodell von IronOCR eliminiert die Speichermultiplikation pro Thread. Eine Engine-Instanz verarbeitet vier, acht oder sechzehn parallele Worker mit einem einzigen, einmal geladenen Sprachmodell. Das Multithreading-Beispiel veranschaulicht die Konfiguration.

PDF-native Workflows ohne sekundäre Abhängigkeit

Organisationen, die Dokumente hauptsächlich im PDF-Format erhalten – Versicherungsansprüche, Verträge, Rechnungen, Steuerformulare – stehen mit dem Tesseract .NET.SDK vor einem doppelten Problem: Sie müssen neben der OCR-Bibliothek auch eine PDF-Rendering-Bibliothek pflegen. Wenn PdfiumViewer oder iText einen Sicherheitspatch herausgeben, benötigen beide Bibliotheken koordinierte Updates und Regressionstests. Wenn die PDF-Bibliothek einen Fehler beim Rendern einer bestimmten PDF-Version aufweist, erzeugt die OCR-Pipeline unleserlichen Text ohne erkennbare Ursache. Die native PDF-Unterstützung von IronOCR reduziert den bisherigen Zwei-Bibliotheken-Stack auf eine einzige. Eine einzige Paketinstallation ersetzt beide. Die Seite zum Anwendungsfall von PDF-OCR beschreibt den kompletten Arbeitsablauf.

Anforderungen für die Enterprise

Eine Patagames-Lizenz für das Tesseract .NET.SDK beinhaltet E-Mail- und Forum-Support von einem einzelnen Entwickler. Es gibt keine Service-Level-Vereinbarung (SLA), keine garantierte Reaktionszeit und keinen Eskalationsweg. Bei Anwendungen in regulierten Branchen – Gesundheitswesen, Finanzen, Regierung – fordern Beschaffungsteams zunehmend von Softwareanbietern dokumentierte SLAs, Prozesse zur Offenlegung von Sicherheitslücken und Garantien für die organisatorische Kontinuität. Patagames kann, da es von einem einzelnen Entwickler betrieben wird, diese Anforderungen nicht erfüllen.IronOCR wird von Iron Software entwickelt, einem kommerziellen Unternehmen mit dediziertem Support, Sicherheitsprozessen und Lizenzbedingungen, die mit den Beschaffungsanforderungen von Enterprise kompatibel sind. Die Lizenzierungsseite dokumentiert die verfügbaren Supportstufen.

Gemeinsame Überlegungen zur Migration

Namensraum- und Instanzmuster

Die Codeänderung von Tesseract .NET.SDK zu IronOCR ist oberflächlich. Ersetzen Sie using Patagames.Ocr; durch using IronOcr;. Ersetzen Sie OcrApi.Create() durch new IronTesseract(). Ersetzen Sie api.Init(Languages.English) durch ocr.Language = OcrLanguage.English. Die funktionale Logik des aufrufenden Codes ändert sich nicht. Ein unkomplizierter Extraktionsdienst kann in weniger als einer Stunde migriert werden.

// Before: Tesseract.Net.SDK
using Patagames.Ocr;

using (var api = OcrApi.Create())
{
    api.Init(Languages.English);
    return api.GetTextFromImage(imagePath);
}

// After: IronOCR
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage(imagePath);
return ocr.Read(input).Text;
// Before: Tesseract.Net.SDK
using Patagames.Ocr;

using (var api = OcrApi.Create())
{
    api.Init(Languages.English);
    return api.GetTextFromImage(imagePath);
}

// After: IronOCR
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage(imagePath);
return ocr.Read(input).Text;
Imports Patagames.Ocr

Using api = OcrApi.Create()
    api.Init(Languages.English)
    Return api.GetTextFromImage(imagePath)
End Using

Imports IronOcr

Dim ocr As New IronTesseract()
Using input As New OcrInput()
    input.LoadImage(imagePath)
    Return ocr.Read(input).Text
End Using
$vbLabelText   $csharpLabel

Das Tutorial zum Lesen von Text aus Bildern und das einfache OCR-Beispiel bieten vollständige, ausführbare Beispiele mit Eingabevalidierung und Konfidenzprüfung.

Entfernung des Tessdata-Ordners

Nach der Migration kann der gesamte tessdata/ Ordner aus dem Projekt gelöscht werden.IronOCR bündelt Sprachdaten in seinen NuGet Paketen. Entfernen Sie alle .traineddata Referenzen aus dem .csproj, entfernen Sie das tessdata-Verzeichnis aus den Bereitstellungsskripten und entfernen Sie alle CI/CD-Pipeline-Schritte, die die traineddata-Dateien kopieren. Die IronOcr.Languages.* NuGet-Pakete installieren Sprachdaten als Teil des normalen Paket-Wiederherstellungsschritts — kein separater Download, keine manuelle Ordnerkonfiguration, keine Build-Aktions-Einstellungen in Visual Studio. Die Anleitung für mehrere Sprachen behandelt die Installation von Sprachpaketen.

PDF-Pipeline-Vereinfachung

Jeder Code, der PdfiumViewer, iText oder Ghostscript.NET installiert hat, um PDF-Seiten vor der OCR darzustellen, kann vollständig entfernt werden. Ersetzen Sie die gesamte mehrstufige Pipeline zum Rendern in eine temporäre Datei und dann OCR durch input.LoadPdf(pdfPath). Testen Sie insbesondere passwortgeschützte PDFs, bestimmte Seitenbereiche und große Dokumente mit mehr als 100 Seiten – dies sind die Grenzfälle, bei denen am ehesten Verhaltensunterschiede während der Validierung sichtbar werden.

Thread-Modell und Instanzlebensdauer

Tesseract.Net.SDK-Code erstellt typischerweise eine OcrApi Instanz pro Anfrage oder pro Thread, um Thread-Sicherheitsprobleme zu vermeiden.IronOCR ist thread-sicher, daher sollte die IronTesseract Instanz einmal erstellt werden (beim Anwendungsstart oder als Singleton in einem DI-Container) und über alle Anfragen hinweg wiederverwendet werden. Das Erstellen einer neuen IronTesseract() pro Anfrage verschwendet den Initialisierungsaufwand. Registrieren Sie es als Singleton im Servicecontainer von ASP.NET Core und injizieren Sie es bei Bedarf.

Zusätzliche Funktionen von IronOCR

Über die oben direkt verglichenen Funktionen hinaus bietet IronOCR Funktionen, die im Tesseract .NET.SDK nicht vorhanden sind:

Die Barcode-Erkennung während der OCR liest QR-Codes und lineare Barcodes, die im selben Dokument eingebettet sind, wodurch ein separater Barcode-Scanvorgang entfällt; siehe das Beispiel zur Barcode-OCR für die Konfiguration.

  • Async OCR provides ReadAsync() for non-blocking integration into ASP.NET Core request pipelines Die Tabellenextraktion identifiziert die Tabellenstruktur in Dokumenten und ermöglicht so die Extraktion strukturierter Daten aus Finanzberichten, Rechnungen und Berichten. Die Pass- und Ausweislesung nutzt eine spezielle Erkennungstechnologie, die auf maschinenlesbare Reisedokumente und Ausweise abgestimmt ist.
  • Die Fortschrittsverfolgung löst während der Verarbeitung mehrseitiger Dokumente seitenweise Fortschrittsereignisse aus und ermöglicht so genaue Fortschrittsanzeigen bei langlaufenden Stapelverarbeitungen.

.NET-Kompatibilität und Zukunftsfähigkeit

IronOCR unterstützt .NET Framework 4.6.2 bis zum aktuellen .NET 9-Release und wird zukünftige .NET-Veröffentlichungen weiterhin unterstützen, sobald sie veröffentlicht werden. Die Bibliothek zielt auf netstandard2.0 ab, um eine breite Framework-Kompatibilität zu gewährleisten und bietet plattformspezifische native Binärdateien für Windows, Linux und macOSinnerhalb desselben NuGet-Pakets. Teams, die von .NET Framework auf .NET 8oder .NET 9aktualisieren, müssen die OCR-Bibliothek nicht ändern — derselbe IronOcr Paketverweis wird auf beiden kompiliert und ausgeführt. Das Tesseract .NET.SDK ist für .NET Framework 2.0 bis 4.5 ausgelegt und verfügt über keine veröffentlichte Roadmap für die Unterstützung moderner .NET ; Es ist strukturell inkompatibel mit dem aktuellen Veröffentlichungszyklus von Microsoft .NET , bei dem jedes Jahr im November eine neue Hauptversion erscheint. Jedes Team, das plant, über .NET Framework 4.5 hinauszugehen – sei es in sechs Monaten oder in drei Jahren –, muss das Tesseract .NET.SDK zu diesem Zeitpunkt ersetzen, unabhängig von allen anderen Bewertungskriterien.

Abschluss

Das Tesseract .NET.SDK besetzt eine spezifische und immer kleiner werdende Nische: Es ist die richtige Wahl für ein Team, das sich dauerhaft der Bereitstellung auf Windows Server und dem .NET Framework 4.5 verschrieben hat und 15 bis 40 Stunden Entwicklerzeit für die Konfiguration von tessdata, die externe Implementierung der Vorverarbeitung und den Aufbau einer PDF-Rendering-Pipeline aus einer separaten Bibliothek eingeplant hat. Die Lizenzgebühr ist nicht der eigentliche Kostenfaktor. Die Kosten umfassen alles, was damit zusammenhängt.

Das Problem, mit dem dieser Artikel begann – die Entdeckung mitten im Upgrade, dass eine OCR-Abhängigkeit nicht auf .NET 8abzielen kann – ist kein Sonderfall. Das ist die vorhersehbare Folge der Wahl einer Bibliothek, die moderne .NET -Laufzeitumgebungen explizit nicht unterstützt.IronOCR beseitigt diese Einschränkung vollständig: Ein einziges NuGet Paket zielt auf jede Laufzeitumgebung von .NET Framework 4.6.2 bis .NET 9ab, läuft unter Windows, Linux, macOSund Docker und beinhaltet Vorverarbeitung und PDF-Unterstützung, die andernfalls zwei zusätzliche Abhängigkeiten und Hunderte von Zeilen Integrationscode erfordern würden.

Für Teams, die derzeit Tesseract .NET.SDK in einer stabilen .NET Framework 4.5-Anwendung einsetzen und keine Pläne zur Modernisierung der Laufzeitumgebung haben, bleibt der Status quo bestehen – bis eine Container-Vorschrift, eine Linux-Migration oder ein Framework-Upgrade das Thema erzwingt. Für Teams, die aktiv modernisieren – sei es durch die Containerisierung von Diensten, die Einführung von .NET 8, den Wechsel zu einer Linux-Infrastruktur oder die Skalierung von Batch-Dokumentpipelines – ist das Tesseract .NET.SDK ein Hindernis und keine Grundlage. Der Wechsel von der alten API zu IronOCR erfordert nur wenige Stunden Codeänderungen. Die Alternative wäre, einen Windows-spezifischen Dienst als verwaisten Rest am Rande einer ansonsten modernisierten Architektur auf unbestimmte Zeit aufrechtzuerhalten.

Die Lizenzgebühr für IronOCR ist höher als die Gebühr für das Patagames SDK, aber der tatsächliche Kostenvergleich muss die 15–40 Stunden für die Tessdata-Konfiguration, die Integration externer Vorverarbeitungsbibliotheken und den Aufbau der PDF-Rendering-Pipeline berücksichtigen, die das Tesseract .NET.SDK benötigt, bevor ein einziges Dokument in der Produktion verarbeitet werden kann. Dieser Einrichtungsaufwand ist im obigen Vergleich dokumentiert und verringert sich auch dann nicht, wenn das Team wächst oder das Dokumentenvolumen zunimmt.

Hinweis:Ghostscript, PDFium, Tesseract und iText sind eingetragene Marken ihrer jeweiligen Eigentümer. Diese Website ist nicht mit Artifex Software, Chromium Project, Google oder iText Group verbunden, von ihnen gesponsert oder anerkannt. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Besitzer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.

Häufig gestellte Fragen

Was ist Tesseract .NET SDK (offiziell)?

Tesseract .NET SDK (offiziell) ist eine OCR-Lösung, die von Entwicklern und Unternehmen zur Extraktion von Text aus Bildern und Dokumenten verwendet wird. Es ist eine von mehreren OCR-Optionen, die neben IronOCR for .NET Application Development evaluiert wurden.

Wie ist IronOCR im Vergleich zu Tesseract .NET SDK (offiziell) for .NET-Entwickler?

IronOCR ist eine NuGet-native OCR-Bibliothek für .NET, die IronTesseract als Kern-Engine verwendet. Im Vergleich zum Tesseract .NET SDK (offiziell) bietet sie eine einfachere Bereitstellung (keine SDK-Installationsprogramme), Pauschalpreise und eine saubere C#-API ohne COM-Interop oder Cloud-Abhängigkeiten.

Ist IronOCR einfacher einzurichten als Tesseract .NET SDK (offiziell)?

IronOCR wird über ein einziges NuGet-Paket installiert. Es gibt keine SDK-Installationsprogramme, keine Lizenzdateien, die kopiert werden müssen, keine COM-Komponenten, die registriert werden müssen, und keine separaten Laufzeit-Binärdateien, die verwaltet werden müssen. Die gesamte OCR-Engine ist in diesem Paket enthalten.

Welche Genauigkeitsunterschiede bestehen zwischen Tesseract .NET SDK (offiziell) und IronOCR?

IronOCR erreicht eine hohe Erkennungsgenauigkeit für Standardgeschäftsdokumente, Rechnungen, Quittungen und gescannte Formulare. Bei stark degradierten Dokumenten oder ungewöhnlichen Skripten variiert die Genauigkeit je nach Qualität der Quelle. IronOCR enthält Bildvorverarbeitungsfilter zur Verbesserung der Erkennung bei Eingaben von geringer Qualität.

Unterstützt IronOCR die PDF-Textextraktion?

Ja, IronOCR extrahiert Text sowohl aus nativen PDF-Dateien als auch aus gescannten PDF-Bildern in einem einzigen Aufruf. Es unterstützt auch mehrseitige TIFF-Dateien, Bilder und Streams. Bei gescannten PDFs wird die OCR seitenweise mit seitenweisen Ergebnisobjekten angewendet.

Wie ist die Lizenzierung von Tesseract .NET SDK (offiziell) im Vergleich zu IronOCR?

IronOCR verwendet eine unbefristete Pauschallizenz, bei der keine Gebühren pro Seite oder pro Scan anfallen. Unternehmen, die große Dokumentenmengen verarbeiten, zahlen unabhängig vom Volumen die gleichen Lizenzkosten. Einzelheiten und Volumenpreise finden Sie auf der IronOCR-Lizenzierungsseite.

Welche Sprachen unterstützt IronOCR?

IronOCR unterstützt 127 Sprachen über separate NuGet-Sprachpakete. Das Hinzufügen einer Sprache erfordert einen einzigen Befehl 'dotnet add package IronOcr.Languages.{Language}'. Es ist keine manuelle Dateiablage oder Pfadkonfiguration erforderlich.

Wie installiere ich IronOCR in einem .NET -Projekt?

Installation über NuGet: 'Install-Package IronOcr' in der Paketmanager-Konsole oder 'dotnet add package IronOcr' in der CLI. Zusätzliche Sprachpakete werden auf die gleiche Weise installiert. Es ist kein natives SDK-Installationsprogramm erforderlich.

Ist IronOCR im Gegensatz zum Tesseract .NET SDK für Docker und containerisierte Implementierungen geeignet?

Ja, IronOCR funktioniert in Docker-Containern über sein NuGet-Paket. Der Lizenzschlüssel wird über eine Umgebungsvariable festgelegt. Für die OCR-Engine selbst sind keine Lizenzdateien, SDK-Pfade oder Volume-Mounts erforderlich.

Kann ich IronOCR im Vergleich zum Tesseract .NET SDK vor dem Kauf ausprobieren?

Ja. Der IronOCR-Testmodus verarbeitet Dokumente und liefert OCR-Ergebnisse mit einem Wasserzeichen als Overlay auf der Ausgabe. Sie können die Genauigkeit an Ihren eigenen Dokumenten überprüfen, bevor Sie eine Lizenz erwerben.

Unterstützt IronOCR neben der Textextraktion auch das Lesen von Barcodes?

IronOCR konzentriert sich auf die Textextraktion und OCR. Für das Lesen von Barcodes bietet Iron Software IronBarcode als Begleitbibliothek an. Beide sind einzeln oder als Teil des Iron Suite-Pakets erhältlich.

Ist es einfach, von Tesseract .NET SDK (offiziell) zu IronOCR zu migrieren?

Die Migration von Tesseract .NET SDK (offiziell) zu IronOCR umfasst in der Regel das Ersetzen von Initialisierungssequenzen durch IronTesseract-Instanziierung, das Entfernen des COM-Lifecycle-Managements und die Aktualisierung von API-Aufrufen. Die meisten Migrationen reduzieren die Code-Komplexität erheblich.

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

Iron-Support-Team

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