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:
OpenCvSharp4wird für das Laden von Bildern benötigt; Für den Plattformwechsel ist der Austausch desOpenCvSharp4.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.cudaPaket, 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
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
IronTesseractInstanzen laufen parallel ohne geteilten Zustand; die Parallelisierung einer Batch-Arbeitslast ist einParallel.ForEachAufruf - 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:
- Baidu PaddlePaddle — das zugrunde liegende Deep-Learning-Framework. Modellformate und Inferenz-APIs werden hier definiert.
- PaddleOCR — Baidus Modelltrainingsprojekt, das die Modellgewichte für Erkennung, Klassifizierung und Identifizierung erzeugt.
- 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
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}%")
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
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")
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
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
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")
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)
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
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")
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.
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.

