ABBYY FineReader Engine vs. IronOCR: .NET OCR
ABBYY FineReader Engine kostet $10.000 oder mehr pro Jahr, erfordert eine 4-12-wöchige Verkaufsbindung, bevor Sie SDK-Zugang erhalten, und wird über ein Multikomponenten-Installationsprogramm installiert - kein NuGet, kein dotnet add package, keine Evaluierung am selben Tag. Für Teams, die Standardlösungen für die Verarbeitung von Geschäftsdokumenten, die Extraktion von Rechnungen oder die Digitalisierung gescannter Formulare entwickeln, liegt der Genauigkeitsunterschied zwischen ABBYY undIronOCRim Bereich von Bruchteilen eines Prozentpunkts. Die Preisdifferenz beläuft sich über drei Jahre auf mehrere Zehntausend Dollar.
Dieser Vergleich untersucht, in welchen Bereichen die von ABBYY angegebene Genauigkeit diese Kosten rechtfertigt und in welchen nicht.
ABBYY FineReader Engineverstehen
ABBYY FineReader Engine SDK ist das Entwicklerprodukt im Portfolio von ABBYY – im Unterschied zu FineReader PDF (der Desktop-Anwendung für Endbenutzer) und FineReader Server (der Plattform für die Stapelverarbeitung). Das SDK stellt programmatische OCR-APIs für C++, Java und .NET bereit. ABBYY entwickelt seit 1989 OCR-Technologie, und diese drei Jahrzehnte lange Erfahrung zeigt sich in der Fähigkeit der Erkennungs-Engine, beschädigte Dokumente, gemischte Schriftarten und seltene Sprachen zu verarbeiten.
Wichtige architektonische Merkmale des FineReader Engine SDK:
- Vertrieb-gesteuerte Akquise: Es gibt keinen Self-Service-Kaufweg. Der Zugang erfordert ein Anfrageformular, ein Qualifikationsgespräch, eine technische Beratung, ein individuelles Angebot und Vertragsverhandlungen. Typischer Zeitrahmen von der Anfrage bis zur Bereitstellung des Entwicklungszugangs: 4–12 Wochen.
- SDK-Installationsprogramm, nicht NuGet: Das SDK wird über ein Windows-Installationsprogramm bereitgestellt, das Binärdateien, Sprachdaten, Laufzeitdateien und Lizenzdateien in bestimmte Verzeichnispfade kopiert. Manuelle Installationshinweise ersetzen die Paketverwaltung.
- COM-Interop-Schicht für .NET: Die .NET-Integration läuft über eine COM-Interop-Schicht und nutzt dabei Lebenszyklus-Management-Muster (explizite Create-, Load-, Process- und Close-Sequenzen), die bereits vor den modernen C#-Konventionen existierten.
- Dateibasiertes Lizenzmanagement: Lizenzen liegen als
.licund.keyDateien vor, die zur Laufzeit auf der Festplatte unter bestimmten Pfaden vorhanden sein müssen. Einige Bereitstellungsmodelle erfordern einen dedizierten Lizenzserver mit Netzwerkport-Konfiguration. - Unterstützung für über 190 Sprachen: Die Sprachabdeckung von ABBYY übertrifft die der meisten Alternativen, einschließlich seltener Sprachen und historischer Schriften.
- Dokumentenverständnis über den Text hinaus: Die FineReader Engine umfasst Dokumentenklassifizierung, intelligente Formularverarbeitung und ICR (Intelligent Character Recognition) für handgeschriebenen Text – Funktionen, die bei Tesseract-basierten Lösungen fehlen.
Initialisierung und Lebenszyklus der Engine
ABBYY erfordert eine explizite Initialisierungssequenz, bevor die Erkennung beginnen kann. Die Engine muss aus einem bestimmten SDK-Pfad mit gültigen Lizenzdateien geladen werden, ein Erkennungsprofil muss ausgewählt werden, und jeder Dokumentcontainer muss nach der Verarbeitung explizit geschlossen werden, um Speicherlecks zu vermeiden:
using FREngine;
public class AbbyyOcrService : IDisposable
{
private IEngine _engine;
public AbbyyOcrService(string sdkPath, string licensePath)
{
// Step 1: Create engine loader
var loader = new EngineLoader();
// Step 2: Load engine — fails if license files are missing or expired
_engine = loader.GetEngineObject(sdkPath, licensePath);
// Step 3: Select recognition profile
_engine.LoadPredefinedProfile("DocumentConversion_Accuracy");
// Step 4: Configure language data (each language adds deployment complexity)
var langParams = _engine.CreateLanguageParams();
langParams.Languages.Add("English");
}
public string ExtractText(string imagePath)
{
var document = _engine.CreateFRDocument();
try
{
document.AddImageFile(imagePath, null, null);
document.Process(null);
return document.PlainText.Text;
}
finally
{
// Must close — skipping this causes memory leaks
document.Close();
}
}
public void Dispose()
{
_engine = null;
}
}
using FREngine;
public class AbbyyOcrService : IDisposable
{
private IEngine _engine;
public AbbyyOcrService(string sdkPath, string licensePath)
{
// Step 1: Create engine loader
var loader = new EngineLoader();
// Step 2: Load engine — fails if license files are missing or expired
_engine = loader.GetEngineObject(sdkPath, licensePath);
// Step 3: Select recognition profile
_engine.LoadPredefinedProfile("DocumentConversion_Accuracy");
// Step 4: Configure language data (each language adds deployment complexity)
var langParams = _engine.CreateLanguageParams();
langParams.Languages.Add("English");
}
public string ExtractText(string imagePath)
{
var document = _engine.CreateFRDocument();
try
{
document.AddImageFile(imagePath, null, null);
document.Process(null);
return document.PlainText.Text;
}
finally
{
// Must close — skipping this causes memory leaks
document.Close();
}
}
public void Dispose()
{
_engine = null;
}
}
Imports FREngine
Public Class AbbyyOcrService
Implements IDisposable
Private _engine As IEngine
Public Sub New(sdkPath As String, licensePath As String)
' Step 1: Create engine loader
Dim loader = New EngineLoader()
' Step 2: Load engine — fails if license files are missing or expired
_engine = loader.GetEngineObject(sdkPath, licensePath)
' Step 3: Select recognition profile
_engine.LoadPredefinedProfile("DocumentConversion_Accuracy")
' Step 4: Configure language data (each language adds deployment complexity)
Dim langParams = _engine.CreateLanguageParams()
langParams.Languages.Add("English")
End Sub
Public Function ExtractText(imagePath As String) As String
Dim document = _engine.CreateFRDocument()
Try
document.AddImageFile(imagePath, Nothing, Nothing)
document.Process(Nothing)
Return document.PlainText.Text
Finally
' Must close — skipping this causes memory leaks
document.Close()
End Try
End Function
Public Sub Dispose() Implements IDisposable.Dispose
_engine = Nothing
End Sub
End Class
Diese Sequenz wird ausgeführt, bevor auch nur ein einziges Pixel der OCR-Verarbeitung stattfindet. Der Aufruf loader.GetEngineObject() validiert Lizenzdateien, lädt Laufzeit-Binärdateien aus dem SDK-Pfad und initialisiert die Erkennungsmaschine. Wenn einer dieser Pfade auf einem neuen Deployment-Server falsch ist, schlägt der Aufruf zur Laufzeit fehl.
IronOCRverstehen
IronOCR ist eine kommerzielle .NET-OCR-Bibliothek, die auf einer optimierten Tesseract 5 LSTM-Engine mit automatischer Vorverarbeitung, nativer PDF-Unterstützung und einem einheitlichen NuGet-Paket-Bereitstellungsmodell basiert. Sie richtet sich an .NET-Entwickler, die eine produktionsreife OCR-Lösung benötigen, ohne Vorverarbeitungs-Pipelines aufbauen, Tessdata-Verzeichnisse verwalten oder sich mit der Enterprise-Beschaffung auseinandersetzen zu müssen.
Hauptmerkmale:
- Ein einziges NuGet-Paket:
dotnet add package IronOcrinstalliert die komplette Bibliothek einschließlich der OCR-Engine, Sprachdaten für Englisch und alle Abhängigkeiten. Kein Installationsprogramm, keine Verweise auf manuelle Kompilierung, keine Konfiguration des Laufzeitpfads. - Automatische Vorverarbeitung: Entzerrung, Rauschunterdrückung, Kontrastverstärkung, Binarisierung und Auflösungsskalierung werden bei Eingaben schlechter Qualität automatisch durchgeführt. Bei Bedarf ist eine explizite Steuerung möglich.
- Native PDF-Eingabe: PDFs werden direkt geladen, ohne Konvertierung oder externe Bibliotheken. Passwortgeschützte PDF-Dateien werden mit einem einzigen Parameter unterstützt.
- String-basierte Lizenzierung: Ein Lizenzschlüssel wird im Code oder über eine Variable der Umgebung zugewiesen. Keine Lizenzdateien zum Bereitstellen, kein Lizenzserver zum Konfigurieren.
- Plattformübergreifend aus einem Paket: Windows, Linux, macOS, Docker, Azure und AWS laufen alle über dieselbe NuGet-Referenz.
- Thread-safe by design: Mehrere
IronTesseractInstanzen laufen gleichzeitig ohne zusätzliche Konfiguration. - 125+ Sprachen über NuGet: Sprachpakete werden als separate NuGet-Pakete (
IronOcr.Languages.French, etc.) installiert und vom Paketmanager wie jede andere Abhängigkeit aufgelöst.
Funktionsvergleich
| Feature | ABBYY FineReader Engine | IronOCR |
|---|---|---|
| OCR-Genauigkeit | Marktführer | 95–99 % bei Standarddokumenten |
| Sprachunterstützung | 190+ | 125+ |
| Installation | SDK-Installationsprogramm | dotnet add package IronOcr |
| Lizenzierungsmodell | Enterprise (zugangsbeschränkt) | Self-Service, 749–2.999 $ (unbefristet) |
| PDF-Unterstützung | Ja | Ja (Muttersprachler) |
| Durchsuchbare PDF-Ausgabe | Ja | Ja |
| Plattformen | Windows, Linux, macOS | Windows, Linux, macOS, Docker, Azure, AWS |
Detaillierter Funktionsvergleich
| Feature | ABBYY FineReader Engine | IronOCR |
|---|---|---|
| Akquisition | ||
| Kaufprozess | Kontakt zum Vertrieb erforderlich | NuGet-Selbstbedienung |
| Zeit bis zum ersten OCR-Ergebnis | 4–12 Wochen (Beschaffung) | Protokoll |
| Kostenlose Testversion | Erfordert Vertriebsengagement | Kostenloser Download |
| Preisgestaltung | ||
| Entwicklerlizenz | 4.999 $ – 15.000 $+ (geschätzt) | 749 $ – 2.999 $ (unbefristet) |
| Laufzeitgebühren | Pro Server oder pro Seite | Enthalten |
| Jährliche Wartung | 20–25 % der Lizenzkosten | Optional |
| Integration | ||
| Paketverwaltung | SDK-Installationsprogramm (nicht NuGet) | NuGet |
| .NET-Integration | COM-Interoperabilität | Native .NET |
| Lizenzverwaltung | Dateibasiert (.lic- und .key-Dateien) | String-Schlüssel |
| Lizenzserver | Für einige Modelle erforderlich | Nicht erforderlich |
| Zeilen zum OCR-Scannen eines Bildes | 15–25 Zeilen | 1–3 Zeilen |
| Anerkennung | ||
| OCR-Genauigkeit | Marktführer | 95–99 % bei Standarddokumenten |
| Sprachen | 190+ | 125+ |
| Handschrift (ICR) | Ja | Beschränkt |
| Dokumentklassifizierung | Ja | Nein |
| Formularerkennung | Ja (Vorlagen) | Basic |
| Barcode-Lesung | Ja | Ja (integriert) |
| Tabellenextraktion | Ja | Ja |
| PDF-Eingabe | Ja | Ja (Muttersprachler) |
| Passwortgeschütztes PDF | Ja | Ja |
| Durchsuchbare PDF-Ausgabe | Ja | Ja |
| PDF/A-Ausgabe | Ja | Nein |
| Vorverarbeitung | ||
| Automatische Vorverarbeitung | Profilbasiert | Ja (automatisch + manuelle Kontrolle) |
| Entschiefen | Ja | Ja |
| Rauschunterdrückung | Ja | Ja |
| Auflösungsverbesserung | Ja | Ja |
| Einsatz | ||
| Plattformübergreifend | Windows, Linux, macOS | Windows, Linux, macOS |
| Docker | Komplex (Laufzeitdateien) | Standard |
| Azure-Bereitstellung | Unterstützt (On-Premise-Modell) | Direkt |
| Luftgesicherte Umgebungen | Ja | Ja |
Genauigkeit vs. Kosten
Die zentrale Frage bei jedem Vergleich zwischen ABBYY undIronOCRlautet: Rechtfertigt der Genauigkeitsvorteil von ABBYY die 10- bis 20-mal höheren Gesamtbetriebskosten?
Der Ansatz von ABBYY
Die Erkennungs-Engine von ABBYY liefert höchste Genauigkeit bei den schwierigsten Dokumenttypen: beschädigte historische Scans, Dokumente mit gemischten Schriftarten, handgeschriebener Text, komplexe Formularlayouts und Dokumente in schlechtem physischen Zustand. Das Profil DocumentConversion_Accuracy wendet die gesamte Erkennungspipeline von ABBYY an:
using FREngine;
// ABBYY: Load high-accuracy profile for difficult documents
var loader = new EngineLoader();
var engine = loader.GetEngineObject(
@"C:\Programme\ABBYY SDK\FineReader Engine\Bin",
@"C:\Programme\ABBYY SDK\License"
);
engine.LoadPredefinedProfile("DocumentConversion_Accuracy");
var document = engine.CreateFRDocument();
try
{
document.AddImageFile("difficult-scan.jpg", null, null);
document.Process(null);
var text = document.PlainText.Text;
}
finally
{
document.Close();
}
using FREngine;
// ABBYY: Load high-accuracy profile for difficult documents
var loader = new EngineLoader();
var engine = loader.GetEngineObject(
@"C:\Programme\ABBYY SDK\FineReader Engine\Bin",
@"C:\Programme\ABBYY SDK\License"
);
engine.LoadPredefinedProfile("DocumentConversion_Accuracy");
var document = engine.CreateFRDocument();
try
{
document.AddImageFile("difficult-scan.jpg", null, null);
document.Process(null);
var text = document.PlainText.Text;
}
finally
{
document.Close();
}
Imports FREngine
' ABBYY: Load high-accuracy profile for difficult documents
Dim loader As New EngineLoader()
Dim engine = loader.GetEngineObject(
"C:\Programme\ABBYY SDK\FineReader Engine\Bin",
"C:\Programme\ABBYY SDK\License"
)
engine.LoadPredefinedProfile("DocumentConversion_Accuracy")
Dim document = engine.CreateFRDocument()
Try
document.AddImageFile("difficult-scan.jpg", Nothing, Nothing)
document.Process(Nothing)
Dim text = document.PlainText.Text
Finally
document.Close()
End Try
Bei medizinischen Unterlagen mit handschriftlichen Anmerkungen, juristischen Dokumenten mit jahrzehntelangem physischem Verschleiß oder aus Mikrofilm digitalisierten Regierungsarchiven ist der Genauigkeitsvorteil von ABBYY gegenüber modernen Tesseract-basierten Lösungen messbar und von Bedeutung.
IronOCR-Ansatz
IronOCR erreicht eine Genauigkeit von 95–99 % bei gängigen Geschäftsdokumenten – Rechnungen, Quittungen, Verträgen, Formularen, gescannten Berichten – durch eine automatische Vorverarbeitung, die die häufigsten Fehlerquellen korrigiert, bevor die Tesseract 5 LSTM-Engine das Bild sieht:
using IronOcr;
// IronOCR: Automatische Vorverarbeitung handles most real-world document quality issues
var ocr = new IronTesseract();
var result = ocr.Read("invoice-scan.jpg");
Console.WriteLine(result.Text);
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;
// IronOCR: Automatische Vorverarbeitung handles most real-world document quality issues
var ocr = new IronTesseract();
var result = ocr.Read("invoice-scan.jpg");
Console.WriteLine(result.Text);
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr
' IronOCR: Automatische Vorverarbeitung handles most real-world document quality issues
Dim ocr As New IronTesseract()
Dim result = ocr.Read("invoice-scan.jpg")
Console.WriteLine(result.Text)
Console.WriteLine($"Confidence: {result.Confidence}%")
Wenn die Qualität der Eingabe wirklich schlecht ist, bieten explizite Vorverarbeitungsfilter volle Kontrolle:
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");
input.Deskew(); // Correct rotation up to several degrees
input.DeNoise(); // Remove scanner noise and artifacts
input.Contrast(); // Enhance text/background separation
input.Binarize(); // Convert to optimal black/white
input.EnhanceResolution(300); // Scale to 300 DPI for engine
var result = new IronTesseract().Read(input);
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");
input.Deskew(); // Correct rotation up to several degrees
input.DeNoise(); // Remove scanner noise and artifacts
input.Contrast(); // Enhance text/background separation
input.Binarize(); // Convert to optimal black/white
input.EnhanceResolution(300); // Scale to 300 DPI for engine
var result = new IronTesseract().Read(input);
Imports IronOcr
Using input As New OcrInput()
input.LoadImage("low-quality-scan.jpg")
input.Deskew() ' Correct rotation up to several degrees
input.DeNoise() ' Remove scanner noise and artifacts
input.Contrast() ' Enhance text/background separation
input.Binarize() ' Convert to optimal black/white
input.EnhanceResolution(300) ' Scale to 300 DPI for engine
Dim result = New IronTesseract().Read(input)
End Using
Der Leitfaden zur Bildqualitätskorrektur behandelt die Auswirkungen der einzelnen Filter auf die Erkennungsgenauigkeit. Bei 99 % der Arbeitsabläufe mit Geschäftsdokumenten – Rechnungen, Bestellungen, Verträge, Ausweisdokumente, gedruckte Formulare – liefert die vonIronOCRvorverarbeitete Tesseract 5-Engine eine Genauigkeit, die in der Praxis nicht von ABBYY zu unterscheiden ist. Die verbleibenden 1 % betreffen unleserliche Handschriften, historische Dokumente oder Nischen-Schriftkombinationen, bei denen der Vorsprung von ABBYY deutlich wird.
Komplexität der Einrichtung: SDK-Installationsprogramm vs. NuGet
Der Unterschied bei der Installation zwischen ABBYY undIronOCRist keine geringfügige Unannehmlichkeit. Sie entscheidet darüber, ob ein Entwickler OCR an einem Nachmittag evaluieren kann oder einen Beschaffungszyklus abwarten muss.
Der Ansatz von ABBYY
Die Installation der ABBYY FineReader Engineerfolgt nach der Lizenzierung in folgender Reihenfolge:
Installationsstruktur nach Ausführung des ABBYY SDK-Installationsprogramms:
C:\Programme\ABBYY SDK\
├── FineReader-Engine\
│ ├── Bin\ ← SDK-Binärdateien (manuelle Assembly-Referenz erforderlich)
│ ├── Inc\ ← Header-Dateien
│ ├── Lib\ ← Bibliotheken
│ └── Lizenz\ ← Lizenzdateien (ABBYY.lic + ABBYY.key)
└── Laufzeit\
├── Sprachen\ ← Sprachdatendateien (groß, muss bereitgestellt werden)
└── Dictionaries\ ← Wörterbuchdateien (müssen bereitgestellt werden)
Jedes Bereitstellungsziel – Entwickler-Workstation, Build-Server, Staging-Umgebung, Produktionsserver – erfordert, dass dieses Installationsprogramm mit Administratorrechten ausgeführt wird. Die Lizenzdateien müssen auf jedem Rechner an den erwarteten Pfaden vorhanden sein. In Docker-Containern bedeutet dies, dass das SDK entweder in ein benutzerdefiniertes Basis-Image eingebunden oder als Volume gemountet werden muss, was in beiden Fällen einen erheblichen Aufwand für die Infrastruktur erfordert.
Die Lizenzvalidierung zur Laufzeit prüft das Vorhandensein und die Gültigkeit der Datei. Wenn die .lic Datei fehlt, wird der loader.GetEngineObject() Aufruf beim Start ausgelöst. Wenn die Lizenz abgelaufen ist, tritt der gleiche Fehler in der Produktion auf.
IronOCR-Ansatz
dotnet add package IronOcr
dotnet add package IronOcr
Dieser Befehl übernimmt alles: die OCR-Engine, die englischsprachigen Daten und alle nativen Binärdateien für die aktuelle Plattform. Plattformübergreifende Ziele sind im selben Paket enthalten. Eine Docker-Bereitstellung erfordert kein benutzerdefiniertes Basis-Image:
FROM mcr.microsoft.com/dotnet/aspnet:8.0
RUN apt-get update && apt-get install -y libgdiplus
COPY --from=build /app/publish /app
WORKDIR /app
ENTRYPOINT ["dotnet", "YourApp.dll"]
Die Lizenzaktivierung erfolgt über eine Zeile im Startcode:
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");
Imports System
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE")
Keine Dateien zum Kopieren, keine Pfade zum Konfigurieren, kein Lizenzserver zur Wartung. Der vollständige Docker deployment guide deckt die Besonderheiten von Linux-Containern ab, einschließlich der Anforderung libgdiplus. Dasselbe NuGet-Paket lässt sich identisch auf Azure-, AWS Lambda- und Linux-Servern bereitstellen.
PDF-Verarbeitung
Beide Bibliotheken verarbeiten PDF-Dokumente, doch die Komplexität der Implementierung unterscheidet sich erheblich.
Der Ansatz von ABBYY
Die PDF-Verarbeitung von ABBYY erfordert das Öffnen der PDF-Datei über ein separates CreatePDFFile()-Objekt, die Iteration der Seiten, das Hinzufügen jeder Seite zu einem Dokumentcontainer, die Ausführung des Erkennungsdurchlaufs und den anschließenden Export mit konfigurierten Exportparametern:
using FREngine;
public string ProcessPdf(string pdfPath)
{
var document = _engine.CreateFRDocument();
try
{
// Open PDF through a separate file object
var pdfFile = _engine.CreatePDFFile();
pdfFile.Open(pdfPath, null, null);
// Add each page individually
for (int i = 0; i < pdfFile.PageCount; i++)
{
document.AddImageFile(
pdfPath,
null,
_engine.CreatePDFExportParams()
);
}
document.Process(null);
return document.PlainText.Text;
}
finally
{
document.Close();
}
}
public void CreateSearchablePdf(string inputPath, string outputPath)
{
var document = _engine.CreateFRDocument();
try
{
document.AddImageFile(inputPath, null, null);
document.Process(null);
// Configure export parameters before export
var exportParams = _engine.CreatePDFExportParams();
exportParams.Scenario = PDFExportScenarioEnum.PDES_Balanced;
document.Export(outputPath, FileExportFormatEnum.FEF_PDF, exportParams);
}
finally
{
document.Close();
}
}
using FREngine;
public string ProcessPdf(string pdfPath)
{
var document = _engine.CreateFRDocument();
try
{
// Open PDF through a separate file object
var pdfFile = _engine.CreatePDFFile();
pdfFile.Open(pdfPath, null, null);
// Add each page individually
for (int i = 0; i < pdfFile.PageCount; i++)
{
document.AddImageFile(
pdfPath,
null,
_engine.CreatePDFExportParams()
);
}
document.Process(null);
return document.PlainText.Text;
}
finally
{
document.Close();
}
}
public void CreateSearchablePdf(string inputPath, string outputPath)
{
var document = _engine.CreateFRDocument();
try
{
document.AddImageFile(inputPath, null, null);
document.Process(null);
// Configure export parameters before export
var exportParams = _engine.CreatePDFExportParams();
exportParams.Scenario = PDFExportScenarioEnum.PDES_Balanced;
document.Export(outputPath, FileExportFormatEnum.FEF_PDF, exportParams);
}
finally
{
document.Close();
}
}
Imports FREngine
Public Function ProcessPdf(ByVal pdfPath As String) As String
Dim document = _engine.CreateFRDocument()
Try
' Open PDF through a separate file object
Dim pdfFile = _engine.CreatePDFFile()
pdfFile.Open(pdfPath, Nothing, Nothing)
' Add each page individually
For i As Integer = 0 To pdfFile.PageCount - 1
document.AddImageFile(pdfPath, Nothing, _engine.CreatePDFExportParams())
Next
document.Process(Nothing)
Return document.PlainText.Text
Finally
document.Close()
End Try
End Function
Public Sub CreateSearchablePdf(ByVal inputPath As String, ByVal outputPath As String)
Dim document = _engine.CreateFRDocument()
Try
document.AddImageFile(inputPath, Nothing, Nothing)
document.Process(Nothing)
' Configure export parameters before export
Dim exportParams = _engine.CreatePDFExportParams()
exportParams.Scenario = PDFExportScenarioEnum.PDES_Balanced
document.Export(outputPath, FileExportFormatEnum.FEF_PDF, exportParams)
Finally
document.Close()
End Try
End Sub
IronOCR-Ansatz
IronOCR verarbeitet PDF-Eingaben nativ – keine Seiteniteration, keine separaten Dateiobjekte, keine Konfiguration von Exportparametern:
using IronOcr;
// Read any PDF — multi-page handled automatically
using var input = new OcrInput();
input.LoadPdf("scanned-document.pdf");
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);
// Passwortgeschütztes PDF — one parameter
using var secureInput = new OcrInput();
secureInput.LoadPdf("encrypted.pdf", Password: "secret");
var secureResult = new IronTesseract().Read(secureInput);
// Create searchable PDF — one method call
var ocrResult = new IronTesseract().Read("scanned.pdf");
ocrResult.SaveAsSearchablePdf("searchable-output.pdf");
using IronOcr;
// Read any PDF — multi-page handled automatically
using var input = new OcrInput();
input.LoadPdf("scanned-document.pdf");
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);
// Passwortgeschütztes PDF — one parameter
using var secureInput = new OcrInput();
secureInput.LoadPdf("encrypted.pdf", Password: "secret");
var secureResult = new IronTesseract().Read(secureInput);
// Create searchable PDF — one method call
var ocrResult = new IronTesseract().Read("scanned.pdf");
ocrResult.SaveAsSearchablePdf("searchable-output.pdf");
Imports IronOcr
' Read any PDF — multi-page handled automatically
Using input As New OcrInput()
input.LoadPdf("scanned-document.pdf")
Dim result = New IronTesseract().Read(input)
Console.WriteLine(result.Text)
End Using
' Passwortgeschütztes PDF — one parameter
Using secureInput As New OcrInput()
secureInput.LoadPdf("encrypted.pdf", Password:="secret")
Dim secureResult = New IronTesseract().Read(secureInput)
End Using
' Create searchable PDF — one method call
Dim ocrResult = New IronTesseract().Read("scanned.pdf")
ocrResult.SaveAsSearchablePdf("searchable-output.pdf")
Der durchsuchbare PDF-Leitfaden behandelt Ausgabeoptionen, darunter das Einbetten der Textebene in bestehende PDF-Scans. Das PDF-OCR-Beispiel demonstriert die Verarbeitung mehrseitiger Dokumente mit Zugriff auf die Ergebnisse pro Seite.
Preismodell
Beim Preisvergleich wird die Entscheidung zwischen ABBYY undIronOCRfür die meisten Entwicklungsteams am deutlichsten.
Der Ansatz von ABBYY
ABBYY veröffentlicht keine Preise. Alle Zahlen erfordern eine Vertriebsanfrage, um sie zu erhalten. Basierend auf Branchenberichten und Diskussionen in Entwickler-Communities:
- Entwicklungslizenz: 4.999 $ – 15.000 $+ (geschätzt)
- Laufzeitlizenzierung: pro Server (5.000–20.000+ USD/Jahr) oder pro Seite (0,01–0,10 USD/Seite, volumenabhängig)
- Jährliche Wartung: 20–25 % der Lizenzkosten pro Jahr
- Professional Dienstleistungen: 200–400 $/Stunde
Ein mittelgroßes Team, das monatlich 100.000 Seiten auf einem einzigen Produktionsserver verarbeitet, muss mit geschätzten Gesamtbetriebskosten von über 50.000 US-Dollar über einen Zeitraum von drei Jahren rechnen – bestehend aus Entwicklungslizenz, Laufzeitlizenz und jährlichen Wartungsgebühren.
Das Lizenzmodell auf Seitenbasis verursacht skalierende Kosten. Bei 0,01 $ pro Seite und 100.000 Seiten pro Monat ergeben sich variable Kosten von 1.000 $ pro Monat bzw. 12.000 $ pro Jahr, ohne Obergrenze.
IronOCR-Ansatz
Die IronOCR-Lizenzierung ist unbefristet und veröffentlicht:
- Lite: 749 $ (1 Entwickler, 1 Projekt)
- Plus: 1.499 $ (3 Entwickler, 3 Projekte)
- Professional: 2.999 $ (10 Entwickler, 10 Projekte)
- Unlimited: 5.999 $ (unbegrenzte Anzahl an Entwicklern und Projekten)
Keine Laufzeitgebühren. Keine Kosten pro Seite. Keine jährliche Wartung erforderlich. Kein Verlängerungszyklus. Die Professional License für 2.999 US-Dollar gilt für ein Team von 10 Entwicklern, die beliebige Dokumentmengen auf einer beliebigen Anzahl von Servern bearbeiten können – und zwar unbefristet.
Der TCO-Vergleich über drei Jahre für das Szenario eines mittelgroßen Teams: ABBYY wird auf über 50.000 $ geschätzt,IronOCRProfessional auf 2.999 $. Der Genauigkeitsunterschied, der sie bei Standard-Geschäftsdokumenten trennt, gleicht diese Lücke für die überwiegende Mehrheit der Anwendungsfälle nicht aus.
API-Mapping-Referenz
| ABBYY FineReader Engine | IronOCR-Äquivalent |
|---|---|
new EngineLoader() |
Nicht erforderlich |
loader.GetEngineObject(sdkPath, licensePath) |
new IronTesseract() |
engine.LoadPredefinedProfile("...") |
Nicht erforderlich (automatisch) |
engine.CreateLanguageParams() |
ocr.Language = OcrLanguage.English |
langParams.Languages.Add("French") |
ocr.AddSecondaryLanguage(OcrLanguage.French) |
engine.CreateFRDocument() |
new OcrInput() |
engine.CreateFRDocumentFromImage(path, null) |
input.LoadImage(path)oder ocr.Read(path) |
document.AddImageFile(path, null, null) |
input.LoadImage(path) |
engine.CreatePDFFile() dann pdfFile.Open(...) |
input.LoadPdf(path) |
document.Process(null) |
ocr.Read(input) |
document.PlainText.Text |
result.Text |
frDocument.Pages[i].PlainText.Text |
result.Pages[i].Text |
page.Layout.Blocks mit BT_Table prüfen |
result.Lines, result.Words |
block.GetAsTableBlock() |
result.Pages strukturierte Daten |
engine.CreatePDFExportParams() |
Nicht erforderlich |
document.Export(path, FEF_PDF, params) |
result.SaveAsSearchablePdf(path) |
document.Close() |
using Muster (automatisch) |
| Lizenzdateien unter den folgenden Pfaden | IronOcr.License.LicenseKey = "key" |
engine.GetLicenseInfo() |
IronOcr.License.IsValidLicense |
In der IronOCR API-Referenz finden Sie die vollständige Dokumentation der Klasse IronTesseract.
Wenn Teams einen Wechsel von ABBYY FineReader EnginezuIronOCRin Betracht ziehen
Lizenzverlängerung löst eine Kosten-Nutzen-Analyse aus
Die jährlichen Wartungsrechnungen für ABBYY belaufen sich in der Regel auf 20–25 % der ursprünglichen Lizenzkosten pro Jahr. Für ein Team, das 10.000 US-Dollar für die Entwicklungslizenz und 15.000 US-Dollar für die Laufzeitlizenz gezahlt hat, bedeutet das zweite Jahr eine Wartungsrechnung in Höhe von 6.250 US-Dollar, noch bevor auch nur eine einzige Zeile neuen Codes geschrieben wurde. Dieser Moment der Erneuerung veranlasst Teams dazu, sich zu fragen, ob der Genauigkeitsunterschied bei ihren spezifischen Dokumenttypen – in der Regel Standard-Geschäftsdokumente – die laufenden Kosten rechtfertigt. Teams, die Rechnungsbearbeitung, Vertragsdigitalisierung oder die Extraktion gescannter Formulare durchführen, stellen regelmäßig fest, dass die vonIronOCRvorverarbeitete Tesseract 5-Engine eine gleichwertige praktische Genauigkeit bietet, und zwar zu Kosten, die sich in Hunderten statt in Zehntausenden von Dollar bemessen.
Neues Projekt ohne bestehende Beziehung zu ABBYY
Entwicklungsteams, die ein neues OCR-Projekt von Grund auf neu starten, sehen sich mit der Realität der Beschaffung konfrontiert: 4–12 Wochen Wartezeit auf den Zugang zum ABBYY SDK bedeuten 4–12 Wochen Entwicklungsstillstand. Für ein Team mit einer Prototyp-Deadline oder einer Sprint-Verpflichtung ist dieser Beschaffungszyklus keine Option.IronOCRlässt sich in weniger als einer Minute installieren und liefert noch am selben Tag OCR-Ergebnisse. Teams, die OCR für ein neues Produkt evaluieren, entscheiden sich häufig fürIronOCR– nicht weil ABBYY nicht leistungsfähig genug wäre, sondern weil sie das Produkt ausliefern müssen und nicht auf den Abschluss eines Verkaufszyklus warten können.
Modernisierung der Bereitstellungsinfrastruktur
Anwendungen, die auf der COM-Interop-Schicht von ABBYY basieren, stoßen bei der Umstellung auf Container, Kubernetes oder Cloud-native Architekturen auf Schwierigkeiten. Der SDK-Installer, die Abhängigkeiten der Lizenzdateien, die Laufzeit-Verzeichnisstruktur – nichts davon passt nahtlos in ein Docker-Image, das auf einem Standard-.NET-Standard-Basisimage aufbaut. Teams, die eine ältere Dokumentverarbeitungsanwendung containerisieren, stellen fest, dass das Bereitstellungsmodell von ABBYY entweder ein benutzerdefiniertes Basis-Image erfordert, in das die vollständige SDK-Installation integriert ist, oder Volume-Mounts für Lizenzdateien mit all der damit verbundenen betrieblichen Komplexität. Das NuGet-Paket vonIronOCRlässt sich in jedem beliebigen Container bereitstellen, ohne dass das Basis-Image verändert werden muss, abgesehen vom Hinzufügen von libgdiplus für Linux-Ziele.
Budgetbeschränkungen bei kleineren Teams
Start-ups, unabhängige Softwareanbieter und interne Tooling-Teams prüfen häufig die Funktionen von ABBYY und finden sie überzeugend – stellen dann jedoch fest, dass die Preise eine Budgetgenehmigung auf Enterprise-Ebene erfordern. Ein Team, das ein Tool zur Rechnungsbearbeitung für ein mittelständisches Unternehmen entwickelt, kann eine Entwicklungslizenz für 15.000 US-Dollar plus Laufzeitgebühren von 10.000 US-Dollar pro Jahr nicht rechtfertigen, wenn das gesamte jährliche Softwarebudget 20.000 US-Dollar beträgt. Die Lite License vonIronOCRfür 749 US-Dollar oder die Professional License für 2.999 US-Dollar liegen im Rahmen der frei verfügbaren Kaufbefugnis eines einzelnen Entwicklers.
Wachsendes Dokumentenvolumen offenbart Kostenstruktur pro Seite
Anwendungen, die klein anfangen und wachsen, stoßen bei der ABBYY-Lizenzierung pro Seite an ihre Grenzen. Ein Startup, das bei der Gründung 10.000 Dokumente pro Monat verarbeitet, skaliert innerhalb von zwei Jahren auf 500.000 pro Monat. Bei 0,01 $ pro Seite führt diese Wachstumskurve dazu, dass die Kosten für ABBYY von überschaubar zu budgetbestimmend werden. Die unbefristete Lizenz vonIronOCRenthält keine Seitenpauschale – die Verarbeitung von 10.000 Dokumenten oder 10.000.000 Dokumenten kostet dasselbe.
Gemeinsame Überlegungen zur Migration
Ersetzen des Engine-Lebenszyklus-Managements
Der zeitaufwändigste Teil der Migrationsarbeit besteht darin, den expliziten Initialisierungs- und Lebenszyklus-Code von ABBYY zu entfernen. Jeder loader.GetEngineObject(), LoadPredefinedProfile(), und document.Close()Aufruf wird gelöscht. IronOCR's IronTesseract instanziiert direkt, ohne Loader, ohne Laden von Profilen und mit automatischer Bereinigung durch das Standardmuster using. Der typische Zeitaufwand für die Migration grundlegender Text-Extraktionsmuster beträgt 2–4 Stunden:
// Remove all of this:
// var loader = new EngineLoader();
// _engine = loader.GetEngineObject(sdkPath, licensePath);
// _engine.LoadPredefinedProfile("DocumentConversion_Accuracy");
// var document = _engine.CreateFRDocument();
// document.AddImageFile(imagePath, null, null);
// document.Process(null);
// string text = document.PlainText.Text;
// document.Close();
// Replace with:
var text = new IronTesseract().Read(imagePath).Text;
// Remove all of this:
// var loader = new EngineLoader();
// _engine = loader.GetEngineObject(sdkPath, licensePath);
// _engine.LoadPredefinedProfile("DocumentConversion_Accuracy");
// var document = _engine.CreateFRDocument();
// document.AddImageFile(imagePath, null, null);
// document.Process(null);
// string text = document.PlainText.Text;
// document.Close();
// Replace with:
var text = new IronTesseract().Read(imagePath).Text;
Imports IronOcr
Dim text As String = New IronTesseract().Read(imagePath).Text
Entfernung der Lizenzinfrastruktur
Nach der Migration vereinfacht sich die Bereitstellungspipeline erheblich. Der ABBYY SDK-Installationsschritt entfällt bei CI/CD-Skripten. Lizenzdateien (ABBYY.lic, ABBYY.key) werden aus den Deployment-Artefakten entfernt. Wenn ein Lizenzserver in Betrieb war, kann diese Infrastruktur außer Betrieb genommen werden. Der IronOCR-Lizenzschlüssel wird in einer Umgebungsvariablen oder einem Secrets-Manager gespeichert – keine Dateien, kein Server, keine Netzwerkabhängigkeit für die Lizenzvalidierung. Die IronTesseract-Einrichtungsanleitung behandelt die Erstkonfiguration einschließlich der Platzierung des Lizenzschlüssels für verschiedene Umgebungen.
Zone-basierte zu region-basierte Extraktion
Die zonenbasierte Regionenextraktion von ABBYY (_engine.CreateZone(), zone.SetBounds(), zone.Type = ZoneTypeEnum.ZT_Text, page.Zones.Add(zone)) entspricht dem Ansatz vonIronOCRCropRectangle. Die Konzepte sind gleichwertig; Die API ist einfacher:
// ABBYY zone-based extraction required zone creation,
// bounds setting, type assignment, and page.Zones.Add()
// IronOCR: CropRectangle passed directly to LoadImage
var region = new CropRectangle(x: 0, y: 0, width: 600, height: 100);
using var input = new OcrInput();
input.LoadImage("invoice.jpg", region);
var headerText = new IronTesseract().Read(input).Text;
// ABBYY zone-based extraction required zone creation,
// bounds setting, type assignment, and page.Zones.Add()
// IronOCR: CropRectangle passed directly to LoadImage
var region = new CropRectangle(x: 0, y: 0, width: 600, height: 100);
using var input = new OcrInput();
input.LoadImage("invoice.jpg", region);
var headerText = new IronTesseract().Read(input).Text;
Imports IronOcr
' ABBYY zone-based extraction required zone creation,
' bounds setting, type assignment, and page.Zones.Add()
' IronOCR: CropRectangle passed directly to LoadImage
Dim region As New CropRectangle(x:=0, y:=0, width:=600, height:=100)
Using input As New OcrInput()
input.LoadImage("invoice.jpg", region)
Dim headerText As String = New IronTesseract().Read(input).Text
End Using
Der regionale OCR-Leitfaden behandelt die Verwendung von CropRectangle für Feldextraktionsmuster, die in der Rechnungs- und Formularverarbeitung üblich sind.
Zugriff auf strukturierte Daten
Der blockbasierte strukturierte Datenzugriff von ABBYY (page.Layout.Blocks, BlockTypeEnum.BT_Table, block.GetAsTableBlock()) hat keine direkte Eins-zu-eins-Entsprechung in IronOcr.IronOCRstellt strukturierte Ergebnisse durch result.Pages, result.Lines, result.Wordsund result.Paragraphs, jeweils mit Koordinatendaten, zur Verfügung. Speziell für die Tabellenextraktion behandelt der Leitfaden zu den Leseergebnissen den Zugriff auf Positionsdaten auf WORD-Ebene, die eine Rekonstruktion der Tabelle ermöglichen.
Zusätzliche Funktionen von IronOCR
Über die oben genannten Kernvergleichsbereiche hinaus:
- Barcode-Lesung während OCR: Ermöglicht
ocr.Configuration.ReadBarCodes = truedie Erkennung und Dekodierung von 1D- und 2D-Barcodes im gleichen Durchgang wie die Texterkennung und gibt die Barcodewerte zusammen mit dem extrahierten Text zurück - keine separate Barcode-Bibliothek erforderlich. - Über 125 Sprachen über NuGet: Sprachpakete werden als Standard-NuGet-Pakete installiert. Primäre und sekundäre Sprachen werden im Code konfiguriert. Der Sprachenindex listet alle verfügbaren Sprachpakete auf.
- Konfidenzbewertung:
result.Confidencegibt die prozentuale Erkennungswahrscheinlichkeit für das vollständige Ergebnis zurück. Konfidenz pro Wort ist überresult.Wordsfür selektive Validierungsworkflows zugänglich. - Async OCR:
IronTesseractunterstützt asynchrone Operationsmuster für ASP.NET-Anwendungen und Pipelines mit hohem Durchsatz, ohne dass aufrufende Threads blockiert werden. - Fortschrittsverfolgung: Lang laufende Batch-Jobs geben Fortschrittsereignisse aus, was die Integration von Fortschrittsbalken in Desktop-Anwendungen und die Statusmeldung in Hintergrunddiensten ermöglicht.
- hOCR-Export:
result.SaveAsHocrFile()gibt das HOCR-Format zur Integration in Dokumentenverwaltungssysteme aus, die positionsabhängige OCR-Ergebnisse verwenden. - Spezielle Dokumentenerkennung: Für Pass-MRZ, Kfz-Kennzeichen, MICR-Scheckzeilen und handschriftliche Inhalte gibt es jeweils eigene Anleitungen, die die Konfiguration und die zu erwartende Genauigkeit behandeln.
.NET-Kompatibilität und Zukunftsfähigkeit
IronOCR zielt auf .NET 6, .NET 7, .NET 8 und .NET 9 ab, wobei jede neue .NET-Version aktiv mitverfolgt wird. Sie unterstützt zudem .NET Standard2.0 für Projekte, die noch nicht auf modernes .NET migriert wurden. Das ABBYY FineReader EngineSDK unterstützt .NET Framework und modernes .NET über seine COM-Interop-Schicht, doch die COM-Abhängigkeit ist eine strenge Einschränkung, die verhindert, dass ABBYY in Umgebungen ausgeführt werden kann, in denen COM-Interop nicht verfügbar ist – bestimmte Linux-Konfigurationen, abgespeckte Bereitstellungen und native AOT-Szenarien, die die native .NET-Architektur vonIronOCRproblemlos bewältigt. Das Ein-Paket-Bereitstellungsmodell vonIronOCRentspricht der Richtung, die die moderne .NET-Entwicklung eingeschlagen hat: NuGet-verwaltete Abhängigkeiten, containerfreundliche Bereitstellung und Plattformunabhängigkeit aus einer einzigen Codebasis.
Abschluss
ABBYY FineReader Engine ist der Maßstab für Genauigkeit im Bereich OCR. Diese Aussage ist zutreffend und sollte klar zum Ausdruck gebracht werden. Bei der Digitalisierung medizinischer Dokumente, wo Erkennungsfehler klinische Folgen haben können, bei der Bearbeitung von Rechtsdokumenten, wo die Vollständigkeit der Dokumente geprüft wird, oder bei Archivierungsprojekten zur Verarbeitung handschriftlicher historischer Dokumente ist der Vorsprung von ABBYY gegenüber modernen Tesseract-basierten Lösungen real und entscheidend. Diese Anwendungsfälle gibt es, und für sie sind die Kosten und der Aufwand von ABBYY gerechtfertigt.
Das Problem ist, dass diese Anwendungsfälle nur einen kleinen Teil der OCR-Arbeit ausmachen, die .NET-Entwickler tatsächlich leisten. Der Großteil der OCR-Projekte in der Praxis – Rechnungsbearbeitung, Vertragsdigitalisierung, Extraktion aus gescannten Formularen, Analyse von Belegen, Lesen von Ausweisdokumenten – betrifft gedruckten Text auf relativ sauberen Dokumenten. Bei diesen Dokumenten erreichtIronOCRmit automatischer Vorverarbeitung eine Genauigkeit von 95–99 %, und der praktische Unterschied zwischenIronOCRund ABBYY ist im Endergebnis nicht erkennbar. Die Mehrkosten von über 47.000 US-Dollar über drei Jahre bringen einen marginalen Genauigkeitsvorteil, den die Anwendung den Benutzern niemals sichtbar macht.
Die Einrichtungshürden sind ebenso unverhältnismäßig hoch. Ein Entwickler, der OCR für ein neues Projekt evaluiert, sollte in der Lage sein, ein Paket zu installieren, zehn Zeilen Code zu schreiben und Ergebnisse zu sehen. ABBYY erfordert einen Vertriebsaufwand, der Wochen dauert, bevor auch nur eine einzige Zeile OCR-Code ausgeführt wird. Das ist das richtige Modell für einen Enterprise-Vertrag im Wert von 50.000 US-Dollar mit Implementierungsunterstützung und SLA-Verpflichtungen. Es ist das falsche Modell für ein Entwicklungsteam, das Prototypen erstellen, iterieren und Produkte ausliefern muss.
IronOCR ist ab 749 $ als unbefristete Lizenz erhältlich, lässt sich mit einem einzigen Befehl installieren und liefert präzise OCR-Ergebnisse bei Standard-Geschäftsdokumenten, ohne dass eine Vorverarbeitungskonfiguration oder die Verwaltung von Lizenzdateien erforderlich ist. Für Teams, bei denen die spezifischen Genauigkeitsvorteile von ABBYY bei schwierigen Dokumenttypen keine zwingende Voraussetzung sind – was auf die meisten Teams zutrifft –, ist dies die praktische Wahl.
Häufig gestellte Fragen
Was ist ABBYY FineReader Engine?
ABBYY FineReader Engine ist eine OCR-Lösung, die von Entwicklern und Unternehmen verwendet wird, um Text aus Bildern und Dokumenten zu extrahieren. Sie ist eine von mehreren OCR-Optionen, die neben IronOCR for .NET Application Development evaluiert wurden.
Wie schneidet IronOCR im Vergleich zur ABBYY FineReader Engine für .NET-Entwickler ab?
IronOCR ist eine NuGet-native OCR-Bibliothek für .NET, die IronTesseract als Kern-Engine verwendet. Im Vergleich zur ABBYY FineReader Engine 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 ABBYY FineReader Engine?
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 ABBYY FineReader Engine 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 Lizenzierung von ABBYY FineReader Engine 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 ABBYY FineReader 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 zu ABBYY FineReader 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 ABBYY FineReader Engine zu IronOCR zu migrieren?
Die Migration von ABBYY FineReader Engine 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.



