Verwenden Sie immer die 64-Bit-Architektur mit IronOCR
IronOCR führt speicherintensive Arbeiten im Hintergrund aus, daher stößt ein 32-Bit (x86)-Build an die ~2GB Speichergrenze und beginnt zu scheitern bei großen oder hochvolumigen Dokumenten. Das Ziel, 64-Bit (x64) einzusetzen, ist die Lösung.
Ein 32-Bit-Prozess ist unabhängig davon, wie viel RAM die Maschine hat, auf etwa 2GB nutzbaren Speicher begrenzt. Unter dieser Grenze tauchen OCR-Arbeiten häufig wie folgt auf:
System.OutOfMemoryException
Andere Symptome der gleichen Grenze sind Deadlocks während der Ausführung der OCR-Engine, Ressourcenverknappung bei der Bildvorverarbeitung, Abstürze oder nicht behandelte Ausnahmen und OCR-Ergebnisse, die time-out sind oder unbemerkt scheitern.
Der Druck kommt von den Operationen, die IronOCR pro Dokument ausführt: hochauflösende Bilddarstellung, temporäre Rastern, optische Zeichenerkennung und tiefe Textextraktion mit einem maschinellen Lernmodell (verwendet von den AdvancedScan-Methoden und SearchablePDF-Ausgabe). Jede davon kann Hunderte von MB pro Dokument verlangen, und mehrseitige PDFs, mehrseitige TIFFs und 300+ DPI-Bilder treiben das nach oben.
Lösung
Option 1: Setzen Sie das Plattformziel in Visual Studio
Wechseln Sie das Projekt auf x64 über die Build-Einstellungen:
- Klicken Sie mit der rechten Maustaste auf Ihr Projekt und öffnen Sie Eigenschaften.
- Öffnen Sie die Registerkarte Build.
- Setzen Sie Plattformziel auf
x64. - Lassen Sie Bevorzugen 32-Bit deaktiviert.
Option 2: Setzen Sie das Ziel über die CLI oder .csproj
Veröffentlichen Sie gegen eine 64-Bit-Laufzeit, um die Architektur zur Build-Zeit zu erzwingen:
dotnet publish -c Release -r win-x64
dotnet publish -c Release -r win-x64
Oder pinnen Sie das Ziel direkt in Ihrem .csproj fest:
<PropertyGroup>
<PlatformTarget>x64</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<PlatformTarget>x64</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
Die <Prefer32Bit>false</Prefer32Bit>-Zeile spielt eine Rolle, wenn das Projekt AnyCPU ist: mit ihr aktiviert, startet die App trotzdem als 32-Bit-Prozess und übernimmt die gleiche Grenze.
Wann die Architektur verdächtigt werden soll
Überprüfen Sie die Architektur zuerst, wenn Sie OCR-Jobs sehen, die hängen oder unerwartet abstürzen, intermittierende Speicherplatz-Ausnahmen oder Leistungsabbau bei hochvolumigen Dokumenten. Wenn Sie auf x86 laufen, wechseln Sie zu x64, bevor Sie etwas anderes untersuchen.
Behalten Sie einige Gewohnheiten in der Produktion:
- Ziel auf x64 für die Produktion: es ist die einzige unterstützte Konfiguration für schwere OCR-Arbeitslasten.
- Entwickeln Sie auf x64: Tests auf x64 spiegeln reales Speicherverhalten wider und bringen Probleme frühzeitig ans Licht.
- 64-Bit Docker-Images erstellen: Stellen Sie sicher, dass das Basis-Image
linux/amd64ist.
Beachten Sie, dass gleichzeitige OCR-Vorgänge den Speicher schnell ansteigen lassen. Auch bei kleinen Dokumenten können Multithread- oder asynchrone Operationen schnell ansteigen.
Wenn Sie die Architektur nicht ändern können
Wenn x64 keine Option ist, teilen Sie große Dokumente in kleinere Abschnitte auf und verarbeiten Sie sie mit niedrigerer Auflösung. Erwarten Sie einen Kompromiss bei Leistung und Genauigkeit. Stabile Unterstützung für 32-Bit-Projekte wird derzeit untersucht.

