Zum Fußzeileninhalt springen
MIT ANDEREN KOMPONENTEN VERGLEICHEN

iOS OCR-Bibliothek (Vergleich: kostenlos vs. kostenpflichtig)

PaddleSharp (Sdcb.PaddleOCR) ist drei Abstraktionsebenen von der OCR-Engine entfernt, die Ihr Code tatsächlich ausführt: Baidu trainiert die neuronalen Netzwerkmodelle, RapidOCR verpackt sie für eine ressourcenschonende Inferenz neu, und PaddleSharp verpackt das Ganze erneut für die Verwendung mit .NET . Jede weitere Ebene bringt eine Wartungsabhängigkeit mit sich, und die Kette stößt an ihre Grenzen, sobald man eine Sprache außerhalb von CJK, ein PDF als Eingabe oder eine Produktionsbereitstellung ohne CUDA benötigt. Dieser Vergleich untersucht, wo sich diese Architektur auszahlt und wo sie Kosten verursacht , die .NET -Teams selten im Voraus vorhersehen.

PaddleSharp OCRverstehen

PaddleSharp ist ein .NET-Wrapper um Baidus PaddleOCR-Deep-Learning-Framework, veröffentlicht auf NuGet als Sdcb.PaddleOCR. Anstatt herkömmliche OCR-Algorithmen zu verwenden, setzt PaddleOCR auf eine dreistufige neuronale Netzwerkpipeline: Ein Detektionsmodell lokalisiert Textbereiche im Bild, ein Klassifikationsmodell bestimmt die Textausrichtung und ein Erkennungsmodell wandelt jeden Bereich in Text um. Jede Stufe ist eine separate Modelldatei, die Sie herunterladen und unabhängig konfigurieren.

Der Wrapper wurde entwickelt, um die PaddlePaddle-Inferenz in .NET zu integrieren, ohne dass Python erforderlich ist. Dieses Ziel wird technisch erreicht, allerdings auf Kosten eines Abhängigkeitsstapels, der die OpenCvSharp-Bildverarbeitungsbibliothek (die ihrerseits plattformspezifische Laufzeitpakete benötigt), die native PaddleInference-Laufzeitumgebung und die Modelldateien selbst umfasst. Unter Windowssind mindestens vier NuGet Pakete erforderlich, bevor überhaupt ein einziges Zeichen erkannt werden kann.

Wichtigste architektonische Merkmale von PaddleSharp:

  • Wrapper-Tiefe: Drei Ebenen — PaddlePaddle (Baidu) → PaddleOCR-Modelle → Sdcb.PaddleSharp .NET Bindungen
  • Modellverwaltung: Detektions-, Klassifizierungs- und Erkennungsmodelle sind separate Downloads (jeweils ca. 3 MB, ca. 2 MB und ca. 10 MB für den chinesischen V3-Satz); sie verwalten Pfade und Versionen manuell
  • OpenCV-Abhängigkeit: OpenCvSharp4 wird für das Laden von Bildern benötigt; Für den Plattformwechsel ist der Austausch des OpenCvSharp4.runtime.* Pakets erforderlich
  • Sprachschwerpunkt: Hauptstärke liegt in Chinesisch und Englisch; Die Unterstützung anderer Sprachen beschränkt sich auf die verfügbaren und gewarteten PaddleOCR-Modellpakete.
  • GPU-Beschleunigung: NativeCUDA-Unterstützung über das Sdcb.PaddleInference.runtime.win64.cuda Paket, das ein kompatibles CUDA-Toolkit und eine cuDNN-Installation auf dem Host erfordert
  • Leistungseinbußen bei der CPU: Ohne GPU ist die Inferenz langsamer als bei CPU-optimierten Alternativen – 500–1500 ms pro Bild gegenüber 100–400 ms bei optimierten Nicht-Deep-Learning-Engines.
  • Gemeinschaftsstruktur: Kleine englischsprachige Gemeinde; Die meisten Dokumentationen, Stack-Overflow-Antworten und GitHub Issues sind auf Chinesisch.

Das dreistufige Inferenz-Setup

Um PaddleSharp für eine einfache Textextraktionsaufgabe einzurichten, müssen alle drei Modellstufen miteinander verbunden werden:

// Simplified — see Sdcb.PaddleOCR documentation for full API
using Sdcb.PaddleOCR;
using Sdcb.PaddleOCR.Models;
using OpenCvSharp;

public class PaddleOcrService
{
    private readonly PaddleOcrAll _ocr;

    public PaddleOcrService()
    {
        // Three separate models, each downloaded independently
        var detModel = LocalFullModels.ChineseV3.DetectionModel;
        var clsModel = LocalFullModels.ChineseV3.ClassifierModel;
        var recModel = LocalFullModels.ChineseV3.RecognitionModel;

        // GPU config: set GpuDeviceId = 0 and install CUDA runtime packages
        _ocr = new PaddleOcrAll(detModel, clsModel, recModel);
    }

    public string ExtractText(string imagePath)
    {
        // OpenCV required for image loading — not System.Drawing
        using var image = Cv2.ImRead(imagePath);
        var result = _ocr.Run(image);

        // Manual sort by position; no automatic reading-order guarantee
        return string.Join("\n", result.Regions
            .OrderBy(r => r.Rect.Center.Y)
            .ThenBy(r => r.Rect.Center.X)
            .Select(r => r.Text));
    }
}
// Simplified — see Sdcb.PaddleOCR documentation for full API
using Sdcb.PaddleOCR;
using Sdcb.PaddleOCR.Models;
using OpenCvSharp;

public class PaddleOcrService
{
    private readonly PaddleOcrAll _ocr;

    public PaddleOcrService()
    {
        // Three separate models, each downloaded independently
        var detModel = LocalFullModels.ChineseV3.DetectionModel;
        var clsModel = LocalFullModels.ChineseV3.ClassifierModel;
        var recModel = LocalFullModels.ChineseV3.RecognitionModel;

        // GPU config: set GpuDeviceId = 0 and install CUDA runtime packages
        _ocr = new PaddleOcrAll(detModel, clsModel, recModel);
    }

    public string ExtractText(string imagePath)
    {
        // OpenCV required for image loading — not System.Drawing
        using var image = Cv2.ImRead(imagePath);
        var result = _ocr.Run(image);

        // Manual sort by position; no automatic reading-order guarantee
        return string.Join("\n", result.Regions
            .OrderBy(r => r.Rect.Center.Y)
            .ThenBy(r => r.Rect.Center.X)
            .Select(r => r.Text));
    }
}
Imports Sdcb.PaddleOCR
Imports Sdcb.PaddleOCR.Models
Imports OpenCvSharp

Public Class PaddleOcrService
    Private ReadOnly _ocr As PaddleOcrAll

    Public Sub New()
        ' Three separate models, each downloaded independently
        Dim detModel = LocalFullModels.ChineseV3.DetectionModel
        Dim clsModel = LocalFullModels.ChineseV3.ClassifierModel
        Dim recModel = LocalFullModels.ChineseV3.RecognitionModel

        ' GPU config: set GpuDeviceId = 0 and install CUDA runtime packages
        _ocr = New PaddleOcrAll(detModel, clsModel, recModel)
    End Sub

    Public Function ExtractText(imagePath As String) As String
        ' OpenCV required for image loading — not System.Drawing
        Using image = Cv2.ImRead(imagePath)
            Dim result = _ocr.Run(image)

            ' Manual sort by position; no automatic reading-order guarantee
            Return String.Join(vbLf, result.Regions _
                .OrderBy(Function(r) r.Rect.Center.Y) _
                .ThenBy(Function(r) r.Rect.Center.X) _
                .Select(Function(r) r.Text))
        End Using
    End Function
End Class
$vbLabelText   $csharpLabel

Der Konstruktor allein erledigt echte Arbeit: Er lädt die Modellbinaries von der Festplatte und initialisiert die Inferenz-Engine. Diese Initialisierungskosten fallen einmal pro PaddleOcrAll Instanz an, was das Objekt teuer in der Erstellung macht und ein sorgfältiges Lebenszyklusmanagement in dienstorientierten .NET-Anwendungen erfordert.

IronOCR verstehen

IronOCR ist eine kommerzielle OCR-Bibliothek für .NET , die auf einer optimierten Tesseract-5-Engine mit einer darüberliegenden automatischen Vorverarbeitungspipeline basiert. Sie wird als einzelnes NuGet Paket installiert und benötigt weder externe Modelldateien noch eine native Binärkonfiguration oder weitere Bildverarbeitungsbibliotheken. Das Designziel besteht darin, die Lücke zwischen "Installation" und "korrekter Textausgabe" zu schließen – eine Lücke, die die meisten anderen .NET OCR-Optionen kennzeichnet.

Wichtige Merkmale von IronOCR:

  • Einzelpaket-Bereitstellung: dotnet add package IronOcr — keine Modell-Downloads, keine tessdata-Ordner, kein OpenCV
  • Automatische Vorverarbeitung: Entzerren, Rauschen entfernen, Kontrastverstärkung, Binarisierung und Auflösungsnormalisierung erfolgen automatisch bei der Bildeingabe; explizite Preprocessing-Filter sind bei Bedarf verfügbar
  • Native PDF-Unterstützung: Sowohl gescannte als auch Text-PDFs werden direkt akzeptiert; Passwortgeschützte PDFs benötigen einen Parameter
  • 125+ Sprachen: Bereitgestellt als einzelne NuGet-Sprachpakete (z.B. IronOcr.Languages.ChineseSimplified), verwaltet wie jede andere Paketabhängigkeit
  • Strukturierte Ausgabe: Die Ergebnisse zeigen Seiten, Absätze, Zeilen, Wörter und einzelne Zeichenbegrenzungsrahmen mit Konfidenzwerten an.
  • Thread-sicher: Mehrere IronTesseract Instanzen laufen parallel ohne geteilten Zustand; die Parallelisierung einer Batch-Arbeitslast ist ein Parallel.ForEach Aufruf
  • Preise: $999 unbefristet (Lite, 1 Entwickler), $1,499 (Plus, 3 Entwickler), $2,999 (Professional, 10 Entwickler), $5,999 (Unlimited)

Funktionsvergleich

Feature PaddleSharp OCR IronOCR
Erforderliche NuGet Pakete Mindestens 3-4 1
Modellmanagement Handbuch (3 separate Dateien) None
PDF-Eingabe Nein (erfordert Umrechnung) Native
Wortanzahl ~10-20 125+
GPU-Beschleunigung Ja (CUDA) CPU-optimiert
Vorverarbeitung Handbuch (OpenCV) Automatisch
Preisgestaltung Kostenlos (Apache 2.0) $5,999 unbefristet

Detaillierter Funktionsvergleich

Feature PaddleSharp OCR IronOCR
Einrichtung und Bereitstellung
Erforderliche NuGet Pakete 3-4 1
Modelldateien herunterladen Ja (3 Dateien, insgesamt ca. 15 MB) Nein
OpenCV-Abhängigkeit Erforderlich None
CUDA/cuDNN für GPU Erforderlich für den GPU-Modus Nicht zutreffend
Docker-Einsatz Komplexe (native Laufzeitumgebungen) Einschichtige Hinzufügung
Air-Gapped-Bereitstellung Ja (nach dem Herunterladen des Modells) Ja
Texterkennung
Chinesische/Japanische/Koreanische Genauigkeit Hoch (primärer Fokus) Hoch
Genauigkeit der lateinischen Schrift Mäßig Hoch
Handschrift Beschränkt Unterstützt
Verarbeitung von Scans mit geringer Qualität Manuelle Vorverarbeitung erforderlich Automatisch
Automatische Schräglagenkorrektur Nein Ja
Automatische Rauschunterdrückung Nein Ja
Eingangsquellen
Bilddateien Ja (über OpenCV) Ja
PDF-Dateien (nativ) Nein Ja
Passwortgeschütztes PDF Nein Ja
Streams und Byte-Arrays Über OpenCV Ja
Mehrseitiges TIFF Über OpenCV Ja
Ausgabe
Klartext Ja Ja
Durchsuchbares PDF Nein Ja
hOCR Nein Ja
Begrenzungsrahmen auf Wortebene Ja Ja
Konfidenzwerte Ja Ja
Strukturierte Seiten-/Zeilen-/Worthierarchie Teilweise (nur Regionen) Voll
Sprachunterstützung
Wortanzahl ~10-20 125+
Methode zur Sprachinstallation Modellpaket herunterladen NuGet-Paket
Mehrsprachiges Dokument Beschränkt Ja
Individuelle Sprachschulung Ja (PaddlePaddle) Ja
Windows, Linux, macOS, Docker, Azure, AWS.
Windows Ja Ja
Linux Ja (komplexe Konfiguration) Ja
macOS Beschränkt Ja
Docker Ja (mit nativen Laufzeitumgebungen) Ja
AWS Lambda Komplex Ja
Leistung
CPU-Einzelbild 500–1500 ms 100–400 ms
GPU-Einzelbild 100–300 ms Nicht zutreffend
Speicher (CPU-Modus) Höher Mäßig
Barcode-Lesung während der OCR Nein Ja
Marktreife
Gewerbelizenz Apache 2.0 Dauerhaft pro Entwickler
Supportkanal GitHub Probleme E-Mail-Support
Englische Dokumentation Spärlich Umfangreiche Dokumentationen, Tutorials und Anleitungen
Produktionsfallstudien Selten (.NET spezifisch) Dokumentiert

Abstraktionstiefe und Wartungsrisiko

PaddleSharp ist die einzige .NET OCR-Option in dieser Kategorie, die drei separate Upstream-Projekte als Voraussetzungen benötigt. Diese Tiefe stellt das zentrale Risiko für die Produktionsteams dar.

PaddleSharp-Ansatz

Die Abhängigkeitskette sieht in der Praxis folgendermaßen aus:

  1. Baidu PaddlePaddle — das zugrunde liegende Deep-Learning-Framework. Modellformate und Inferenz-APIs werden hier definiert.
  2. PaddleOCR — Baidus Modelltrainingsprojekt, das die Modellgewichte für Erkennung, Klassifizierung und Identifizierung erzeugt.
  3. Sdcb.PaddleSharp — die .NET Bindungsschicht, die PaddleInference-native Bibliotheken aufruft und die Modelllade-API umschließt.

Jede Ebene hat ihren eigenen Veröffentlichungsrhythmus, ihre eigene Änderungshistorie und ihre eigene Community. Wenn Baidu die PaddlePaddle-Inferenz-APIs aktualisiert, muss die Bindungsschicht entsprechend angepasst werden. Ändert sich das Modellformat zwischen verschiedenen PaddleOCR-Versionen, müssen die Modell-Downloadpfade und der Ladecode in PaddleSharp aktualisiert werden. Für ein .NET Team sind diese Probleme unsichtbar, bis ein Deployment fehlschlägt.

Eine vereinfachte Darstellung der Initialisierungskosten:

// Simplified — see Sdcb.PaddleOCR documentation for full API
// This is not one line of setup; it represents several coordinated decisions:
// - Which model version to use (ChineseV3, V4, etc.)
// - Whether models are local files or downloaded on first use
// - Which inference backend (CPU, MKL, GPU)
// - Which OpenCvSharp runtime package matches the deployment OS

var detModel = LocalFullModels.ChineseV3.DetectionModel;  // Version-specific
var clsModel = LocalFullModels.ChineseV3.ClassifierModel; // Version-specific
var recModel = LocalFullModels.ChineseV3.RecognitionModel; // Version-specific

var ocr = new PaddleOcrAll(detModel, clsModel, recModel);
// If a newer model format is released, these names and classes may change
// Simplified — see Sdcb.PaddleOCR documentation for full API
// This is not one line of setup; it represents several coordinated decisions:
// - Which model version to use (ChineseV3, V4, etc.)
// - Whether models are local files or downloaded on first use
// - Which inference backend (CPU, MKL, GPU)
// - Which OpenCvSharp runtime package matches the deployment OS

var detModel = LocalFullModels.ChineseV3.DetectionModel;  // Version-specific
var clsModel = LocalFullModels.ChineseV3.ClassifierModel; // Version-specific
var recModel = LocalFullModels.ChineseV3.RecognitionModel; // Version-specific

var ocr = new PaddleOcrAll(detModel, clsModel, recModel);
// If a newer model format is released, these names and classes may change
' Simplified — see Sdcb.PaddleOCR documentation for full API
' This is not one line of setup; it represents several coordinated decisions:
' - Which model version to use (ChineseV3, V4, etc.)
' - Whether models are local files or downloaded on first use
' - Which inference backend (CPU, MKL, GPU)
' - Which OpenCvSharp runtime package matches the deployment OS

Dim detModel = LocalFullModels.ChineseV3.DetectionModel  ' Version-specific
Dim clsModel = LocalFullModels.ChineseV3.ClassifierModel ' Version-specific
Dim recModel = LocalFullModels.ChineseV3.RecognitionModel ' Version-specific

Dim ocr As New PaddleOcrAll(detModel, clsModel, recModel)
' If a newer model format is released, these names and classes may change
$vbLabelText   $csharpLabel

Die Versionsabhängigkeit ist hier real. Teams, die auf Sdcb.PaddleOCR 2.x festgelegt sind und ein Upgrade benötigen, um neuere Modelle zugänglich zu machen, stehen API-Änderungen auf der Bindungsebene gegenüber. Die Upstream-Modelldateien sind zwischen den Hauptversionen von PaddleOCR nicht rückwärtskompatibel.

IronOCR-Ansatz

IronOCR liefert die Engine und alle Abhängigkeiten als NuGet Paket aus. Es gibt keine Modellversion zur Auswahl, kein Inferenz-Backend zur Konfiguration und keine sekundäre Bibliothek, die synchronisiert werden muss:

// One package: dotnet add package IronOcr
//Neinmodel downloads.NeinOpenCV.Neinruntime packages.
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

var result = new IronTesseract().Read("document.jpg");
Console.WriteLine(result.Text);
Console.WriteLine($"Confidence: {result.Confidence}%");
// One package: dotnet add package IronOcr
//Neinmodel downloads.NeinOpenCV.Neinruntime packages.
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

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

' One package: dotnet add package IronOcr
' Neinmodel downloads.NeinOpenCV.Neinruntime packages.
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

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

Ein Upgrade von IronOCR erfordert lediglich eine Aktualisierung der NuGet Version. Die Änderungen an der API-Oberfläche sind in den Versionshinweisen dokumentiert, und die Abwärtskompatibilität innerhalb der Hauptversionen bleibt erhalten. Für Teams, die in CI/CD-Pipelines arbeiten, ist der Unterschied im Bereitstellungsbereich erheblich: ein Paket versus vier Pakete Plus plattformspezifische Laufzeitpakete Plus Modelldateien, die auf der Festplatte an den richtigen Pfaden vorhanden sein müssen.

Informationen zu den Konfigurationsoptionen finden Sie im IronTesseract-Setup-Leitfaden und eine vollständige Liste der akzeptierten Eingabequellen im Leitfaden zur Bildeingabe .

Sprachabdeckung

PaddleOCR wurde primär für Chinesisch trainiert, Englisch ist eine Nebensprache. Die .NET Community rund um PaddleSharp spiegelt diesen Ursprung wider: Es gibt Modellpakete für chinesische Schriftzeichen (vereinfacht, traditionell), Englisch und eine Handvoll anderer Sprachen, aber die Abdeckung über etwa 10–20 Sprachen hinaus ist gering, und die Pflege von Nicht-CJK-Modellen hängt davon ab, ob das Interesse am Upstream-Projekt aufrechterhalten wird.

PaddleSharp-Ansatz

In PaddleSharp bedeutet das Umschalten der Sprache das Umschalten des Modellsatzes. Das Erkennungsmodell ist sprachspezifisch, und es gibt kein einfaches API-Flag – Sie instanziieren einen anderen Satz von Modellobjekten:

// Simplified — see Sdcb.PaddleOCR documentation for full API
// English model set (if available for your version)
// var recModel = LocalFullModels.EnglishV3.RecognitionModel;

// Chinese model set (primary supported use case)
var detModel = LocalFullModels.ChineseV3.DetectionModel;
var recModel = LocalFullModels.ChineseV3.RecognitionModel;
var clsModel = LocalFullModels.ChineseV3.ClassifierModel;

var ocr = new PaddleOcrAll(detModel, clsModel, recModel);
// Non-CJK languages require checking upstream PaddleOCR model availability
// Mixed CJK + Latin in the same document may require model selection decisions
// Simplified — see Sdcb.PaddleOCR documentation for full API
// English model set (if available for your version)
// var recModel = LocalFullModels.EnglishV3.RecognitionModel;

// Chinese model set (primary supported use case)
var detModel = LocalFullModels.ChineseV3.DetectionModel;
var recModel = LocalFullModels.ChineseV3.RecognitionModel;
var clsModel = LocalFullModels.ChineseV3.ClassifierModel;

var ocr = new PaddleOcrAll(detModel, clsModel, recModel);
// Non-CJK languages require checking upstream PaddleOCR model availability
// Mixed CJK + Latin in the same document may require model selection decisions
' Simplified — see Sdcb.PaddleOCR documentation for full API
' English model set (if available for your version)
' Dim recModel = LocalFullModels.EnglishV3.RecognitionModel

' Chinese model set (primary supported use case)
Dim detModel = LocalFullModels.ChineseV3.DetectionModel
Dim recModel = LocalFullModels.ChineseV3.RecognitionModel
Dim clsModel = LocalFullModels.ChineseV3.ClassifierModel

Dim ocr = New PaddleOcrAll(detModel, clsModel, recModel)
' Non-CJK languages require checking upstream PaddleOCR model availability
' Mixed CJK + Latin in the same document may require model selection decisions
$vbLabelText   $csharpLabel

Für ein Team, das französische Rechnungen, deutsche Verträge oder arabische Formulare bearbeitet, geht es nicht nur darum, ob heute ein Musterpaket existiert – sondern auch darum, ob es im nächsten Jahr noch gepflegt wird und ob die englische Dokumentation zur Konfiguration existiert.

IronOCR-Ansatz

IronOCR bietet mehr als 125 Sprachen als NuGet Pakete an. Jedes Sprachpaket wird genau wie jede andere Abhängigkeit installiert und lässt sich ohne manuelle Dateibereitstellung in Standard-CI/CD-Pipelines integrieren:

// dotnet add package IronOcr.Languages.ChineseSimplified
// dotnet add package IronOcr.Languages.French
// dotnet add package IronOcr.Languages.Arabic

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
ocr.AddSecondaryLanguage(OcrLanguage.English); // Mixed-language document

var result = ocr.Read("mixed-document.jpg");
// dotnet add package IronOcr.Languages.ChineseSimplified
// dotnet add package IronOcr.Languages.French
// dotnet add package IronOcr.Languages.Arabic

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
ocr.AddSecondaryLanguage(OcrLanguage.English); // Mixed-language document

var result = ocr.Read("mixed-document.jpg");
' dotnet add package IronOcr.Languages.ChineseSimplified
' dotnet add package IronOcr.Languages.French
' dotnet add package IronOcr.Languages.Arabic

Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.ChineseSimplified
ocr.AddSecondaryLanguage(OcrLanguage.English) ' Mixed-language document

Dim result = ocr.Read("mixed-document.jpg")
$vbLabelText   $csharpLabel

Der mehrsprachige Leitfaden deckt die gleichzeitige mehrsprachige Erkennung für Dokumente ab, die Skripte mischen — eine Fähigkeit, die keine Modellentscheidung erfordert, sondern nur einen AddSecondaryLanguage Aufruf.

Für Teams, deren Dokumente mehrere Sprachen umfassen oder deren Sprachanforderungen voraussichtlich über den anfänglichen Umfang hinauswachsen werden, ist ein Katalog mit 125 Sprachen, der durch gepflegte NuGet Pakete unterstützt wird, eine nachhaltigere Wahl als ein Satz von 10–20 Sprachen mit variablem Wartungsaufwand.

Vorverarbeitung und PDF-Unterstützung

Die neuronale Netzwerkpipeline von PaddleOCR bewältigt einige Bildqualitätsschwankungen bei CJK-Texten besser als herkömmliche OCR-Verfahren, bietet jedoch keine integrierte Bildvorverarbeitungs-API für Aufgaben wie Entzerren, Rauschentfernung oder Auflösungsnormalisierung. Jegliche Vorverarbeitung muss in OpenCV geschrieben werden – einer Bibliothek, die PaddleSharp bereits benötigt, die aber für Teams, die keine Spezialisten für Bildverarbeitung sind, eine erhebliche zusätzliche Programmierfläche bietet.

Die PDF-Unterstützung stellt die größte Herausforderung dar. PaddleSharp verfügt über keinen nativen PDF-Reader. Eine Dokumentenverarbeitungspipeline, die PDFs empfängt, muss jede Seite in ein Bild konvertieren, bevor die OCR-Engine aufgerufen werden kann. Dies erfordert eine separate PDF-Bibliothek, führt zu zusätzlichen Abhängigkeiten und einer zwischenzeitlichen Dateiverwaltung.

PaddleSharp-Ansatz

// Simplified — see Sdcb.PaddleOCR documentation for full API
// PaddleSharp has no PDF support — pages must be pre-converted to images
// Preprocessing (deskew, denoise) requires OpenCV operations:

using OpenCvSharp;

// Load image via OpenCV
using var image = Cv2.ImRead("scan.jpg");

// Manual grayscale conversion
using var gray = new Mat();
Cv2.CvtColor(image, gray, ColorConversionCodes.BGR2GRAY);

// Manual threshold (binarization)
using var binary = new Mat();
Cv2.Threshold(gray, binary, 128, 255, ThresholdTypes.Binary);

// Then pass to OCR engine
var result = _ocr.Run(binary);
// Each preprocessing step requires OpenCV knowledge
// PDF pages require a separate PDF-to-image conversion step first
// Simplified — see Sdcb.PaddleOCR documentation for full API
// PaddleSharp has no PDF support — pages must be pre-converted to images
// Preprocessing (deskew, denoise) requires OpenCV operations:

using OpenCvSharp;

// Load image via OpenCV
using var image = Cv2.ImRead("scan.jpg");

// Manual grayscale conversion
using var gray = new Mat();
Cv2.CvtColor(image, gray, ColorConversionCodes.BGR2GRAY);

// Manual threshold (binarization)
using var binary = new Mat();
Cv2.Threshold(gray, binary, 128, 255, ThresholdTypes.Binary);

// Then pass to OCR engine
var result = _ocr.Run(binary);
// Each preprocessing step requires OpenCV knowledge
// PDF pages require a separate PDF-to-image conversion step first
Imports OpenCvSharp

' Load image via OpenCV
Using image As Mat = Cv2.ImRead("scan.jpg")

    ' Manual grayscale conversion
    Using gray As New Mat()
        Cv2.CvtColor(image, gray, ColorConversionCodes.BGR2GRAY)

        ' Manual threshold (binarization)
        Using binary As New Mat()
            Cv2.Threshold(gray, binary, 128, 255, ThresholdTypes.Binary)

            ' Then pass to OCR engine
            Dim result = _ocr.Run(binary)
            ' Each preprocessing step requires OpenCV knowledge
            ' PDF pages require a separate PDF-to-image conversion step first
        End Using
    End Using
End Using
$vbLabelText   $csharpLabel

Das Schreiben dieser Vorverarbeitung ist für Teams mit OpenCV-Erfahrung machbar. Für Teams, die diese Möglichkeit nicht haben, ist die Lernkurve nicht trivial – OpenCV verfügt über eine breite API-Oberfläche und die Dokumentation ist größtenteils auf C++ ausgerichtet.

IronOCR-Ansatz

Die Vorverarbeitungspipeline von IronOCR benötigt keine externe Bibliothek. Dasselbe OcrInput Objekt, das Bilder akzeptiert, akzeptiert auch PDFs, und Vorverarbeitungsfilter sind einzelne Methodenaufrufe:

using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");

// Built-in preprocessing — no OpenCV, no manual image math
input.Deskew();
input.DeNoise();
input.Contrast();
input.Binarize();
input.EnhanceResolution(300);

var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");

// Built-in preprocessing — no OpenCV, no manual image math
input.Deskew();
input.DeNoise();
input.Contrast();
input.Binarize();
input.EnhanceResolution(300);

var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

Using input As New OcrInput()
    input.LoadImage("low-quality-scan.jpg")

    ' Built-in preprocessing — no OpenCV, no manual image math
    input.Deskew()
    input.DeNoise()
    input.Contrast()
    input.Binarize()
    input.EnhanceResolution(300)

    Dim result = New IronTesseract().Read(input)
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Bei PDF-Eingabe bedeutet native Unterstützung, dass kein Konvertierungsschritt erforderlich ist:

// PDF input — no external library, no page conversion
var result = new IronTesseract().Read("scanned-document.pdf");

// Password-protected PDFs
using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret");
var result = new IronTesseract().Read(input);

// Output as searchable PDF
result.SaveAsSearchablePdf("searchable-output.pdf");
// PDF input — no external library, no page conversion
var result = new IronTesseract().Read("scanned-document.pdf");

// Password-protected PDFs
using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret");
var result = new IronTesseract().Read(input);

// Output as searchable PDF
result.SaveAsSearchablePdf("searchable-output.pdf");
Imports IronTesseract

' PDF input — no external library, no page conversion
Dim result = New IronTesseract().Read("scanned-document.pdf")

' Password-protected PDFs
Using input As New OcrInput()
    input.LoadPdf("encrypted.pdf", Password:="secret")
    result = New IronTesseract().Read(input)
End Using

' Output as searchable PDF
result.SaveAsSearchablePdf("searchable-output.pdf")
$vbLabelText   $csharpLabel

Der Leitfaden zur Bildqualitätskorrektur behandelt alle verfügbaren Filter anhand von Beispielen. Die Anleitung zur PDF-Eingabe behandelt Seitenauswahl, Datenstromeingabe und Passwortverwaltung. Für Teams, die durchsuchbare PDFs aus gescannten Dokumenten erstellen, ist die Ausgabe von durchsuchbaren PDFs ein integriertes Ausgabeformat – kein separater Verarbeitungsschritt.

API-Mapping-Referenz

PaddleSharp OCR-Konzept IronOCR-Äquivalent
Sdcb.PaddleOCR (Namespace) IronOcr (Namespace)
PaddleOcrAll IronTesseract
LocalFullModels.ChineseV3.DetectionModel Kein Äquivalent – ​​keine Modellauswahl erforderlich
LocalFullModels.ChineseV3.RecognitionModel Kein Äquivalent – ​​keine Modellauswahl erforderlich
LocalFullModels.ChineseV3.ClassifierModel Kein Äquivalent – ​​keine Modellauswahl erforderlich
Cv2.ImRead(path) (OpenCV Bildladevorgang) input.LoadImage(path)
_ocr.Run(matImage) ocr.Read(input) oder ocr.Read("file.jpg")
result.Regions result.Words, result.Lines, result.Pages
region.Text word.Text, line.Text, page.Text
region.Rect.Center word.X, word.Y
Sprachmodellwechsel (neuer Modellsatz) ocr.Language = OcrLanguage.French
PaddleConfig (Inferenz-Backend-Konfiguration) Kein Äquivalent — automatisch konfiguriert
OpenCvSharp-Schwellenwert-/Graustufenoperationen input.Binarize(), input.ToGrayScale()
Keine PDF-Unterstützung – Vorkonvertierung in Bild input.LoadPdf("file.pdf")
Keine durchsuchbare PDF-Ausgabe result.SaveAsSearchablePdf("output.pdf")

Wenn Teams einen Wechsel von PaddleSharp OCRzu IronOCR erwägen

Die Pipeline verarbeitet Nicht-CJK-Dokumente

PaddleSharp wurde für den chinesischen Markt entwickelt. Dieses Erbe zeigt sich in der Namenskonvention des Modells (ChineseV3), der primären Dokumentationssprache und der Verfügbarkeit von Sprachpaketen. Ein Team, das mit der Verarbeitung chinesischer Dokumente beginnt und dann auf französische Rechnungen oder deutsche Verträge ausweitet, stößt an seine Grenzen: Die verfügbaren Modellpakete außerhalb des CJK-Sprachraums sind rar, die Wartungsverpflichtung für Nicht-CJK-Modelle ist ungewiss und die englischsprachige Dokumentation für deren Einrichtung ist spärlich. Der über NuGet Sprachkatalog von IronOCR mit mehr als 125 Sprachen bedeutet, dass die Spracherweiterung eine Paketinstallation und kein Forschungsprojekt ist.

Die Bereitstellungsumgebung verfügt über keine GPU

Die Deep-Learning-Pipeline von PaddleOCR ist für GPU-Inferenz ausgelegt. Auf der CPU sind die Leistungswerte ehrlich: 500–1500 ms pro Bild bei typischen Dokumentenauflösungen. Bei einer Batch-Pipeline, die Tausende von Dokumenten verarbeitet, oder bei einer ASP.NET Anwendung, die gleichzeitig OCR-Anfragen bearbeitet, führt PaddleSharp im CPU-Modus zu zusätzlichen Latenzen, die sich mit zunehmender Skalierung verstärken. Die optimierte Tesseract 5-Engine von IronOCR arbeitet auf der CPU mit einer Zeit von 100–400 ms pro Bild und benötigt keine GPU. Bei Bereitstellungen auf Standard-VM-Ebenen, Containern ohne GPU-Passthrough oder CI-Workern macht dieser Unterschied den Unterschied zwischen einer passenden und einer unpassenden Arbeitslast aus.

PDF-Dokumente befinden sich in der Eingabepipeline

PDF ist das Standardformat für Geschäftsdokumente. PaddleSharp verfügt über keinen PDF-Reader. Teams, die diese Einschränkung erst nach der Entwicklung mit PaddleSharp entdecken, stehen vor einer Wahl: eine PDF-Bibliothek hinzufügen (wodurch eine weitere Abhängigkeit mit eigenen Lizenz- und Versionsüberlegungen verwaltet werden muss), PDFs als Vorverarbeitungsschritt in Bilder konvertieren (was zusätzlichen Speicher- und E/A-Overhead verursacht) oder zu einer Bibliothek mit nativer PDF-Unterstützung migrieren. Die native PDF-Eingabe von IronOCR, einschließlich passwortgeschützter PDFs und Seitenbereichsauswahl, macht es zur unkomplizierten Wahl für Dokumenten-Workflows, die mit PDF beginnen.

Die Abhängigkeitskette scheitert an einer Sicherheits- oder Compliance-Prüfung

Bei Enterprise Implementierungen – im Gesundheitswesen, im Finanzwesen, in der öffentlichen Verwaltung – ist häufig eine Software-Stückliste und eine Abhängigkeitsprüfung erforderlich. Die PaddleSharp-Pipeline umfasst von Baidu stammende Modelldateien und eine Laufzeitumgebung für Deep Learning von Baidu. Für Organisationen, deren Richtlinien die Verwendung von Softwarekomponenten auf bestimmte Herkunftsländer beschränken, oder für Teams, die einen transparenten Zugang zu Sicherheitsmeldungen von Anbietern benötigen, erfordert die Abhängigkeit von Binärdateien mit Baidu-Ursprung zusätzliche Prüfschritte.IronOCR ist ein einzelnes kommerzielles Produkt eines westlichen Softwareanbieters mit dokumentierten Lizenzbedingungen und einem standardmäßigen kommerziellen Supportvertrag.

Das Team kann den operativen Aufwand nicht personell decken.

Die Aufrechterhaltung einer PaddleSharp-Issue über 18 Monate bedeutet, die Kompatibilität der Modellversionen zu verfolgen, die OpenCV-Runtime-Paketversionen mit plattformspezifischen Deployments abzustimmen, die CUDA-Toolkit-Versionen aufeinander abzustimmen, wenn eine GPU verwendet wird, und die Upstream GitHub -Issues (hauptsächlich in Chinesisch) auf Breaking Changes zu überwachen. Das ist eine nicht unerhebliche operative Investition. Für Teams, deren Kernkompetenz in der Entwicklung der Anwendung liegt – und nicht in der Infrastruktur für Deep Learning –, generiert der Verwaltungsaufwand für PaddleSharp keinen Nutzen im Verhältnis zu seinen Kosten.

Gemeinsame Überlegungen zur Migration

Entfernung der OpenCV-Abhängigkeit

PaddleSharp erfordert OpenCvSharp4 und ein plattformspezifisches OpenCvSharp4.runtime.* Paket zum Laden von Bildern.IronOCR akzeptiert System.Drawing.Bitmap, Dateipfade, Streams und Byte-Arrays direkt über OcrInput. Die Migration bedeutet das Ersetzen von Cv2.ImRead() Aufrufen durch input.LoadImage() und das Entfernen der OpenCvSharp-Paketreferenzen vollständig:

// PaddleSharp pattern — requires OpenCV
using var image = Cv2.ImRead(imagePath);
var result = _ocr.Run(image);

//IronOCR equivalent — no OpenCV
var result = new IronTesseract().Read(imagePath);
// PaddleSharp pattern — requires OpenCV
using var image = Cv2.ImRead(imagePath);
var result = _ocr.Run(image);

//IronOCR equivalent — no OpenCV
var result = new IronTesseract().Read(imagePath);
Imports OpenCvSharp
Imports IronOcr

' PaddleSharp pattern — requires OpenCV
Using image = Cv2.ImRead(imagePath)
    Dim result = _ocr.Run(image)
End Using

' IronOCR equivalent — no OpenCV
Dim result = New IronTesseract().Read(imagePath)
$vbLabelText   $csharpLabel

Der Leitfaden zur Bildeingabe umfasst alle akzeptierten Eingabetypen, einschließlich Streams, URLs und In-Memory-Bitmaps.

Ergebniszuordnung auf Regionsebene

PaddleSharp gibt result.Regions zurück — eine flache Liste der erkannten Textregionen mit Begrenzungsrechtecken und Textstrings.IronOCR liefert eine differenziertere Hierarchie: Seiten enthalten Absätze, Absätze enthalten Zeilen, Zeilen enthalten Wörter, alle mit Koordinaten und Konfidenzwerten pro Element. Wenn Ihr Migrationscode result.Regions verwendet, ist das IronOCR-Äquivalent zur flachen Wortaufzählung mit Positionsdaten:

var result = new IronTesseract().Read("document.jpg");

// Per-word with position — equivalent to PaddleSharp region enumeration
foreach (var word in result.Words)
{
    Console.WriteLine($"'{word.Text}' at ({word.X},{word.Y}) confidence:{word.Confidence}%");
}
var result = new IronTesseract().Read("document.jpg");

// Per-word with position — equivalent to PaddleSharp region enumeration
foreach (var word in result.Words)
{
    Console.WriteLine($"'{word.Text}' at ({word.X},{word.Y}) confidence:{word.Confidence}%");
}
Imports System
Imports IronOcr

Dim result = New IronTesseract().Read("document.jpg")

' Per-word with position — equivalent to PaddleSharp region enumeration
For Each word In result.Words
    Console.WriteLine($"'{word.Text}' at ({word.X},{word.Y}) confidence:{word.Confidence}%")
Next
$vbLabelText   $csharpLabel

Die Ergebnisübersicht dokumentiert die vollständige Ergebnisstruktur. Der Leitfaden zu den Konfidenzwerten erläutert die Konfidenzwerte pro Element und wie man sie für die Qualitätsfilterung verwendet.

Lebenszyklusmanagement für die OCR-Engine

PaddleSharps PaddleOcrAll ist aufwendig zu konstruieren — es lädt die Modellbinaries beim Erstellen von der Festplatte und sollte in ASP.NET Core als Singleton oder Scoped Service behandelt werden. IronOCRs IronTesseract hat geringere Initialisierungskosten, jedoch gilt dasselbe Prinzip: Das Wiederverwenden von Instanzen über Anfragen hinweg in einer Webanwendung ist effizienter als das Erstellen pro Anfrage. In beiden Fällen ist die Abhängigkeitsinjektion als Singleton oder pro Anfrage gescopte Dienst der korrekte Ansatz.

Installation des Sprachpakets

Die Sprachunterstützung in PaddleSharp bedeutet, dass beim Kompilieren verschiedene Modellsätze ausgewählt werden. In IronOCR wird die Sprachunterstützung durch ein NuGet Paket realisiert, das dem Projekt hinzugefügt wird, und durch einen einzeiligen Konfigurationsaufruf:

// dotnet add package IronOcr.Languages.ChineseSimplified

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
var result = ocr.Read("document.jpg");
// dotnet add package IronOcr.Languages.ChineseSimplified

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
var result = ocr.Read("document.jpg");
Imports IronOcr

Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.ChineseSimplified
Dim result = ocr.Read("document.jpg")
$vbLabelText   $csharpLabel

Für CJK-Teams, die von PaddleSharp migrieren, sind Chinesisch (vereinfacht), Chinesisch (traditionell), Japanisch und Koreanisch als IronOCR Sprachpakete verfügbar. Der Leitfaden für benutzerdefinierte Sprachen beschreibt die Einbindung von individuell trainierten Tess-Daten für spezielle Anwendungsfälle.

Zusätzliche Funktionen von IronOCR

Über die oben verglichenen Funktionen hinaus bietet IronOCR Möglichkeiten, die vollständig außerhalb des Leistungsumfangs von PaddleSharp liegen:

  • Region-basierte OCR: Zielen Sie auf spezifische Zonen eines Bildes ab — Kopfzeilenzeilen, Rechnungssummen, spezifische Formularfelder — mit CropRectangle, ohne die ganze Seite zu verarbeiten
  • Asynchrone OCR : Integrierte asynchrone Unterstützung für die Einbindung von OCR in ASP.NET Core -Anforderungspipelines ohne Blockierung von Threads
  • Pass- und Ausweislesen : Strukturierte Extraktion maschinenlesbarer Daten aus Reisedokumenten und Personalausweisen
  • Tabellenlesen : Räumliche Gruppierung von Wortkoordinaten zur Rekonstruktion der Zeilen-Spalten-Struktur aus tabellarischen Dokumentlayouts
  • Lizenzierung : Dauerlizenzen pro Entwickler ohne Laufzeitgebühren und kostenlose Entwicklungsnutzung im Testmodus

.NET-Kompatibilität und Zukunftsfähigkeit

IronOCR zielt auf .NET 8 und .NET 9 ab und bietet volle Unterstützung für Windows, Linuxund macOSauf x64- und x86-Architekturen. Außerdem veröffentlicht IronOCR Docker-Bereitstellungsleitfäden für containerisierte Workloads. PaddleSharp unterstützt moderne .NET Laufzeitumgebungen, aber die plattformübergreifende Kompatibilität wird durch die OpenCV-Laufzeitpakete erschwert, die als separate plattformspezifische NuGet Pakete verteilt werden, sodass für jede Umgebung das richtige Paket ausgewählt und bereitgestellt werden muss. Das Single-Package-Deployment-Modell von IronOCR eliminiert diese Plattformmatrix vollständig, und die Bereitstellungsleitfäden für Linux , AWS und Azure spiegeln getestete, produktionsreife Konfigurationen wider.

Abschluss

PaddleSharp liefert in einem eng begrenzten Szenario ein überzeugendes Argument: bei einem Team, das überwiegend chinesische Dokumente auf Hardware mit einer CUDA-fähigen GPU verarbeitet, wobei die Genauigkeitsgrenze des Deep Learning für CJK-Text wichtiger ist als die einfache Bereitstellung. Das ist ein realer Anwendungsfall, und genau darin überzeugt PaddleSharp. Die dreistufige neuronale Netzwerkpipeline erkennt dichte chinesische Texte mit einer Genauigkeit, die echte Investitionen in Deep Learning widerspiegelt.

Außerhalb dieses Szenarios wird die Abstraktionstiefe zum Nachteil. Drei vorgelagerte Abhängigkeiten – Baidus Inferenzframework, das PaddleOCR-Modelltrainingsprojekt und die PaddleSharp .NET Bindungsschicht – haben jeweils ihre eigenen Releasezyklen, und ihre Wartungsabstimmung ist nicht gewährleistet. Die englischsprachige Dokumentation ist spärlich. Der Sprachkatalog jenseits von CJK ist dünn und wird uneinheitlich gepflegt. Für die PDF-Eingabe wird eine separate Bibliothek benötigt. Und ohne GPU beträgt die CPU-Latenz pro Bild 500–1500 ms gegenüber 100–400 ms bei IronOCR.

IronOCRs Kompromiss ist das Gegenteil: ein Einzelhandels-paket mit einem $999 Einstiegspreis, keine Modellverwaltung, nativer PDF- und multiformatiger Eingaben, 125+Sprachen als NuGet-Pakete und integrierte Vorverarbeitung, die OpenCV überflüssig macht. Die Abstraktion ist bewusst, und die Abstraktion ist stabil — die API hat nicht verlangt, dass Teams den modernen Baidu-Modellformat-Änderungen folgen, um ihre Anwendungen am Laufen zu halten.

Für Teams mit allgemeinem Bedarf an OCR für englische oder mehrsprachige Texte, PDF-Workflows oder Bereitstellungsbeschränkungen, die den Einsatz von GPU-Hardware ausschließen, ist IronOCR die optimale Lösung. Die IronOCR-Dokumentation deckt alle Eingabetypen, Vorverarbeitungsoptionen und Ausgabeformate ab, und die Tutorial-Sammlung bietet funktionierenden Code für gängige Dokumenttypen – von Rechnungen über Reisepässe bis hin zu gescannten Archiven.

Hinweis:PaddleOCR, RapidOCR und Tesseract sind eingetragene Marken ihrer jeweiligen Eigentümer. Diese Webseite ist weder mit Baidu, Google, PaddlePaddle noch RapidOCR verbunden, von ihnen unterstützt oder gesponsert. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.

Häufig gestellte Fragen

Was ist PaddleSharp OCR?

PaddleSharp OCR ist eine OCR-Lösung, die von Entwicklern und Unternehmen verwendet wird, um Text aus Bildern und Dokumenten zu extrahieren. Es ist eine von mehreren OCR-Optionen, die neben IronOCR for .NET Application Development evaluiert wurden.

Wie ist IronOCR im Vergleich zu PaddleSharp OCR for .NET-Entwicklern?

IronOCR ist eine NuGet-native OCR-Bibliothek für .NET, die IronTesseract als Kern-Engine verwendet. Im Vergleich zu PaddleSharp OCR 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 PaddleSharp OCR?

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 PaddleSharp OCR 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 sieht die PaddleSharp OCR-Lizenzierung im Vergleich zu IronOCR aus?

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 zu PaddleSharp, für Docker und containerisierte Bereitstellungen 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 zu PaddleSharp 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 PaddleSharp OCR zu IronOCR zu migrieren?

Die Migration von PaddleSharp OCR 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