Passer au contenu du pied de page
COMPARER à D'AUTRES COMPOSANTS

ABBYY FineReader Engine vs IronOCR for .NET OCR

XImage.OCR facture des frais de licence commerciale pour une bibliothèque OCR qui fournit le même moteur Tesseract auquel vous pouvez accéder gratuitement, puis vous demande d'installer un package NuGet distinct pour chaque langue dont vous avez besoin, créant ainsi une chaîne de dépendances qui commence à 2 packages pour l'anglais uniquement et passe à 11 packages pour une application multilingue modeste. Cette fragmentation n'est pas un problème d'emballage ; il s'agit de la décision centrale en matière d'architecture dans XImage.OCR, et elle façonne tous les aspects du travail avec la bibliothèque : votre fichier .csproj, votre chaîne CI/CD, votre gestion des versions, et finalement votre réponse à la question de la valeur commerciale que vous achetez réellement.

Comprendre XImage.OCR

XImage.OCR est une bibliothèque OCR .NET commerciale de RasterEdge, faisant partie de sa Suite logicielle SDK d'imagerie documentaire. Cette bibliothèque utilise le moteur open source Tesseract de Google pour fournir des liaisons .NET managées pour les opérations OCR. RasterEdge le commercialise comme une solution OCR Enterprise destinée aux développeurs et intégrée à leur écosystème d'imagerie documentaire existant.

La bibliothèque cible .NET Standard 2.0 et .NET Framework 4.5+, ce qui la rend accessible aux projets existants. Son principal système d'exploitation pris en charge est Windows, avec une couverture multiplateforme considérablement plus limitée que les alternatives modernes.

Principales caractéristiques architecturales :

  • Emballage linguistique fragmenté : Chaque langue supportée est livrée sous forme de package NuGet séparé (XImage.OCR.Language.English, XImage.OCR.Language.German, etc.), nécessitant une installation individuelle et un entretien synchronisé des versions
  • Moteur principal de Tesseract : La technologie OCR sous-jacente est identique à celle fournie par les wrappers gratuits — Tesseract sous licence Apache 2.0, disponible gratuitement
  • Aucun prétraitement intégré : accès aux données brutes de Tesseract sans correction automatique de l'angle de balayage, de débruitage, d'amélioration du contraste ou de la résolution ; poor-quality input produces poor output
  • Limitations en matière de sécurité des threads : En tant qu'enveloppe Tesseract, XImage.OCR n'est pas sûr pour les threads ; chaque thread concurrent nécessite sa propre instance OCRHandler, multipliant ainsi la consommation de mémoire de manière proportionnelle
  • Intégration à l'écosystème RasterEdge : le traitement des PDF nécessite le kit de développement logiciel (SDK) RasterEdge PDF distinct ; la reconnaissance optique de caractères (OCR) native des PDF n'est pas incluse dans XImage.OCR.
  • Couverture linguistique limitée : Il existe environ 10 à 15 modules linguistiques, bien moins que la centaine de langues disponibles gratuitement via les distributions standard de tessdata.

La fragmentation des paquets linguistiques en pratique

La conséquence d'un package par langue se manifeste concrètement dans votre fichier de projet. Pour une application qui traite des documents en cinq langues européennes, le manifeste des packages ressemble à ceci :


<PackageReference Include="RasterEdge.XImage.OCR" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.English" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.German" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.French" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.Spanish" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.Italian" Version="12.4.0" />

<PackageReference Include="RasterEdge.XImage.OCR" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.English" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.German" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.French" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.Spanish" Version="12.4.0" />
<PackageReference Include="XImage.OCR.Language.Italian" Version="12.4.0" />
XML

Les incompatibilités de versions entre les packages de base et les packages de langage provoquent des erreurs d'initialisation à l'exécution. Lorsque RasterEdge.XImage.OCR est à 12.4.0 et XImage.OCR.Language.English est à 12.3.0 — un scénario réaliste après toute mise à jour partielle — la bibliothèque échoue à l'exécution avec des erreurs qui n'identifient pas clairement la synchronisation des versions comme la cause. Votre pipeline CI/CD comporte désormais 6 opérations de restauration distinctes et 6 points de défaillance indépendants. L'ajout de langues asiatiques pour un déploiement global ajoute des packages CJK : le chinois simplifié, le chinois traditionnel, le japonais et le coréen nécessitent chacun leur propre package, ce qui porte une application à 10 langues à 11 dépendances NuGet distinctes.

Comprendre IronOCR

IronOCR est une bibliothèque OCR commerciale pour .NET construite sur un moteur Tesseract 5optimisé avec des extensions de prétraitement et de sortie propriétaires. Il est livré sous forme d'un seul package NuGet (IronOcr) qui inclut le moteur OCR, toutes les capacités de prétraitement, l'entrée native PDF et la sortie PDF interrogeable, la lecture de code-barres, et le support d'exécution multiplateforme complet.

Caractéristiques principales :

  • Déploiement en un seul package : Une commande dotnet add package IronOcr installe tout ; Aucune gestion binaire native, aucune configuration de dossier tessdata, aucune coordination de DLL spécifique à la plateforme
  • Tuyau de prétraitement automatique : Les filtres Deskew(), DeNoise(), Contrast(), Binarize(), et EnhanceResolution() intégrés s'appliquent directement à OcrInput avant la reconnaissance — aucune bibliothèque de traitement d'image externe requise
  • Support PDF natif : input.LoadPdf() lit les PDFs directement ; result.SaveAsSearchablePdf() écrit des PDFs interrogeables ; Les fichiers PDF protégés par mot de passe sont gérés avec un seul paramètre.
  • Conception sûre pour les threads : Une seule instance IronTesseract gère les requêtes concurrentes sur plusieurs threads sans nécessiter l'instanciation par thread
  • 125+ langues via des packs NuGet optionnels : Les langues sont installées sous forme de packages IronOcr.Languages.* séparés lorsque nécessaire ; L'anglais de base est inclus par défaut
  • Environnement d'exécution multiplateforme : Fenêtres(x86, x64), Linuxx64, macOS, Docker, Azure App Service et AWS Lambda sont tous pris en charge par le même package.
  • Modèle de résultat structuré : OcrResult expose Pages, Paragraphs, Lines, Words, et les coordonnées et scores de confiance par mot via un seul objet de résultat
  • Tarification : $999 Lite (perpétuelle), $1,499 Plus, $2,999 Professional — achat unique avec une année de mises à jour incluse

Comparaison des fonctionnalités

Fonction XImage.OCR IronOCR
Packages NuGet pour 5 langues 6 1
Prétraitement intégré Non Oui
Entrée PDF native Nécessite le SDK PDF de RasterEdge Oui
Sortie PDF consultable Nécessite un SDK séparé Oui
Filetage sécurisé Non Oui
Multiplateforme Fenêtresprincipalement Windows, Linux, macOS, Docker
Langues disponibles ~15 125+

Comparaison détaillée des fonctionnalités

Fonction XImage.OCR IronOCR
Gestion des paquets
Packages NuGet (en anglais uniquement) 2 1
Packages NuGet (10 langues) 11 1
Exigence de synchronisation des versions Tous les colis doivent correspondre Version unique
opérations de restauration CI/CD 1 par paquet 1 au total
Moteur OCR
Moteur principal Tesseract (identique aux wrappers gratuits) Tesseract 5optimisé
Version du moteur 4.x/5.x Tesseract 5
scores de confiance Partiel (via Tesseract) Oui (result.Confidence)
Prétraitement
Déclin Non Oui (input.Deskew())
DeNoise Non Oui (input.DeNoise())
Amélioration du contraste Non Oui (input.Contrast())
Binarisation Non Oui (input.Binarize())
Amélioration de la résolution Non Oui (input.EnhanceResolution(300))
Documentation de soutien
Entrée d'image Oui Oui
Entrée PDF native Nécessite un SDK supplémentaire Oui
PDF protégé par mot de passe Nécessite un SDK supplémentaire Oui (paramètre unique)
Sortie PDF consultable Nécessite un SDK supplémentaire Oui
sortie hOCR Non Oui
Assistance linguistique
Nombre total de langues disponibles ~15 125+
L'anglais est inclus dans le tronc commun. Oui Oui
Les 24 langues officielles de l'UE Incomplet Tout compris
langues CJK 4 paquets séparés Disponible
Architecture
Sécurité du fil Non compatible avec les fils Thread-safe
Mémoire par thread concurrent ~100 Mo par instance instance unique partagée
OCR basé sur la région Limité (ProcessRegion) Oui (CropRectangle)
Lecture de codes-barres lors de la reconnaissance optique de caractères (OCR) Non Oui
Modèle de résultat structuré Sortie de chaîne de base Pages, lignes, mots, coordonnées
Déploiement
Fenêtres Oui Oui
Linux Non Oui
macOS Non Oui
Docker Non Oui
Azure/AWS Non Oui

Fragmentation des packages vs NuGet unique

La différence structurelle la plus claire entre XImage.OCR et IronOCR réside dans leur gestion du support linguistique. Il ne s'agit pas d'un détail mineur : cela affecte chaque membre de l'équipe qui intervient sur le projet, chaque pipeline de compilation et chaque déploiement.

Approche XImage.OCR

XImage.OCR distribue chaque langue sous forme de package NuGet distinct. La commande d'installation principale installe uniquement le moteur OCR. Vous installez ensuite chaque langue requise :

# XImage.OCR: Install sequence for a multilingual application
dotnet add package RasterEdge.XImage.OCR
dotnet add package XImage.OCR.Language.English
dotnet add package XImage.OCR.Language.German
dotnet add package XImage.OCR.Language.French
dotnet add package XImage.OCR.Language.Spanish
dotnet add package XImage.OCR.Language.Italian
dotnet add package XImage.OCR.Language.Portuguese
dotnet add package XImage.OCR.Language.ChineseSimplified
dotnet add package XImage.OCR.Language.ChineseTraditional
dotnet add package XImage.OCR.Language.Japanese
# 10 languages = 11 package commands
# XImage.OCR: Install sequence for a multilingual application
dotnet add package RasterEdge.XImage.OCR
dotnet add package XImage.OCR.Language.English
dotnet add package XImage.OCR.Language.German
dotnet add package XImage.OCR.Language.French
dotnet add package XImage.OCR.Language.Spanish
dotnet add package XImage.OCR.Language.Italian
dotnet add package XImage.OCR.Language.Portuguese
dotnet add package XImage.OCR.Language.ChineseSimplified
dotnet add package XImage.OCR.Language.ChineseTraditional
dotnet add package XImage.OCR.Language.Japanese
# 10 languages = 11 package commands
SHELL

Le code lui-même reflète cette même complexité. La configuration de la reconnaissance optique de caractères multilingue nécessite que tous les modules linguistiques soient préalablement installés ; la bibliothèque ne peut pas le vérifier lors de la compilation :

// XImage.OCR: Language codes must match installed packages exactly
// If XImage.OCR.Language.German is not installed, this fails at runtime

var ocrHandler = new OCRHandler();

// Activation de la licence required before any OCR operation
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("your-license-key");

// Set multiple languages — each requires its own NuGet package installed
ocrHandler.Languages = new[] { "eng", "deu", "fra", "spa", "ita" };

string result = ocrHandler.Process(imagePath);
// XImage.OCR: Language codes must match installed packages exactly
// If XImage.OCR.Language.German is not installed, this fails at runtime

var ocrHandler = new OCRHandler();

// Activation de la licence required before any OCR operation
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("your-license-key");

// Set multiple languages — each requires its own NuGet package installed
ocrHandler.Languages = new[] { "eng", "deu", "fra", "spa", "ita" };

string result = ocrHandler.Process(imagePath);
Imports RasterEdge.XImage.OCR

' XImage.OCR: Language codes must match installed packages exactly
' If XImage.OCR.Language.German is not installed, this fails at runtime

Dim ocrHandler As New OCRHandler()

' Activation de la licence required before any OCR operation
License.LicenseManager.SetLicense("your-license-key")

' Set multiple languages — each requires its own NuGet package installed
ocrHandler.Languages = New String() {"eng", "deu", "fra", "spa", "ita"}

Dim result As String = ocrHandler.Process(imagePath)
$vbLabelText   $csharpLabel

Si un module linguistique est manquant ou s'il s'agit d'une version incorrecte, l'erreur se produit lors de l'exécution pendant l'appel OCR, et non lors de la compilation ou lors de la restauration du module. Dans un pipeline de déploiement, cela signifie découvrir le problème dans les environnements de production ou de préproduction plutôt que sur la machine du développeur.

Approche d'IronOCR

IronOCR s'installe sous forme d'un seul package. La prise en charge des langues occidentales courantes est intégrée par défaut ; Les modules linguistiques supplémentaires s'installent en tant que paquets optionnels selon le même modèle à un seul paquet, mais vous partez d'un état fonctionnel plutôt que d'un état défectueux :

# IronOCR: Install everything in one command
dotnet add package IronOcr
# English included. Add specific language packs only when needed.
dotnet add package IronOcr.Languages.German
# IronOCR: Install everything in one command
dotnet add package IronOcr
# English included. Add specific language packs only when needed.
dotnet add package IronOcr.Languages.German
SHELL

Le code pour l'OCR multilingue utilise des valeurs d'énumération OcrLanguage sûres en typage, non pas des codes de chaîne, ce qui élimine la classe d'erreurs d'exécution provenant de l'identification linguistique mal tapée :

// IronOCR: Type-safe languages, single package
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

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

var result = ocr.Read("multilingual-document.jpg");
Console.WriteLine(result.Text);
// IronOCR: Type-safe languages, single package
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

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

var result = ocr.Read("multilingual-document.jpg");
Console.WriteLine(result.Text);
Imports IronOcr

' IronOCR: Type-safe languages, single package
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

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

Dim result = ocr.Read("multilingual-document.jpg")
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

Le guide d'installation d'IronTesseract couvre en détail la configuration du langage. Ce guide pratique multilingue explique comment combiner les langues principales et secondaires pour les documents au contenu multilingue.

Pour une application de 10 langues : XImage.OCR nécessite 11 packages, 11 lignes dans .csproj, et une synchronisation continue des versions sur les 11 lors de l'arrivée des mises à jour. IronOCR nécessite 1 package dans .csproj, plus des packs optionnels par langue lorsque nécessaire. Cette différence s'accentue d'une équipe à l'autre.

Prétraitement : Tesseract brut vs pipeline intégré

L'absence de capacité de prétraitement constitue la principale limitation technique de XImage.OCR. Étant donné que la bibliothèque utilise Tesseract sans ajouter d'amélioration d'image, la qualité du document limite directement la qualité de la reconnaissance optique de caractères (OCR). Il s'agit d'une contrainte déterminante dans tout déploiement réel.

Approche XImage.OCR

XImage.OCR transmet directement les images à Tesseract. Une facture scannée présentant une inclinaison de 2 degrés, du bruit de scanner et une résolution de 150 DPI est traitée telle quelle. Le OCRHandler n'a pas de méthodes pour la correction d'image :

// XImage.OCR: Non preprocessing available
// A skewed, noisy, low-DPI scan goes straight to Tesseract

var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";

// Direct OCR on problematic image — skew, noise, and low resolution
// all degrade accuracy with no mitigation available in the library
string result = ocrHandler.Process(imagePath);

// To improve results, you would need:
// - External library (OpenCV.NET, ImageSharp, etc.)
// - 100-200 lines of deskew and noise-reduction code
// - Per-document-type tuning
// - Image processing expertise your OCR developer may not have
// XImage.OCR: Non preprocessing available
// A skewed, noisy, low-DPI scan goes straight to Tesseract

var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";

// Direct OCR on problematic image — skew, noise, and low resolution
// all degrade accuracy with no mitigation available in the library
string result = ocrHandler.Process(imagePath);

// To improve results, you would need:
// - External library (OpenCV.NET, ImageSharp, etc.)
// - 100-200 lines of deskew and noise-reduction code
// - Per-document-type tuning
// - Image processing expertise your OCR developer may not have
' XImage.OCR: Non preprocessing available
' A skewed, noisy, low-DPI scan goes straight to Tesseract

Dim ocrHandler As New OCRHandler()
ocrHandler.Language = "eng"

' Direct OCR on problematic image — skew, noise, and low resolution
' all degrade accuracy with no mitigation available in the library
Dim result As String = ocrHandler.Process(imagePath)

' To improve results, you would need:
' - External library (OpenCV.NET, ImageSharp, etc.)
' - 100-200 lines of deskew and noise-reduction code
' - Per-document-type tuning
' - Image processing expertise your OCR developer may not have
$vbLabelText   $csharpLabel

La solution consiste à utiliser une bibliothèque de traitement d'images distincte, à écrire soi-même le code de prétraitement et à maintenir ce code lors des mises à jour de la bibliothèque. Pour les équipes déjà bien ancrées dans l'écosystème RasterEdge, certains outils sont disponibles via d'autres composants du SDK RasterEdge, mais cela nécessite l'achat et l'intégration de produits supplémentaires.

Approche d'IronOCR

IronOCR applique le prétraitement sous forme de méthodes chaînables sur OcrInput, entre le chargement du document et l'exécution de l'OCR. Aucune bibliothèque externe n'est nécessaire :

// IronOCR: Prétraitement intégré pipeline
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

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

// Apply corrections in sequence
input.Deskew();              // Detect and correct rotation angle
input.DeNoise();             // Remove scanner artifacts and noise
input.Contrast();            // Enhance contrast for faded text
input.Binarize();            // Convert to clean black-and-white
input.EnhanceResolution(300); // Scale low-DPI images to 300 DPI

var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);
Console.WriteLine($"Confidence: {result.Confidence}%");
// IronOCR: Prétraitement intégré pipeline
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

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

// Apply corrections in sequence
input.Deskew();              // Detect and correct rotation angle
input.DeNoise();             // Remove scanner artifacts and noise
input.Contrast();            // Enhance contrast for faded text
input.Binarize();            // Convert to clean black-and-white
input.EnhanceResolution(300); // Scale low-DPI images to 300 DPI

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

' IronOCR: Prétraitement intégré pipeline
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

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

    ' Apply corrections in sequence
    input.Deskew()              ' Detect and correct rotation angle
    input.DeNoise()             ' Remove scanner artifacts and noise
    input.Contrast()            ' Enhance contrast for faded text
    input.Binarize()            ' Convert to clean black-and-white
    input.EnhanceResolution(300) ' Scale low-DPI images to 300 DPI

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

Le guide de correction de la qualité d'image couvre l'ensemble des filtres de prétraitement. Pour les corrections spécifiques à l'orientation, le guide de correction d'orientation d'image et la détection de rotation de page prennent en charge les documents multi-angles.

L'impact pratique du prétraitement sur les documents du monde réel est significatif. Tesseract sans prétraitement sur un document numérisé à 150 DPI avec une inclinaison de 5 degrés produit une précision de l'ordre de 60 à 75 %. Grâce à la correction de l'inclinaison et à l'amélioration de la résolution, le même document à 300 DPI avec rotation corrigée atteint une précision de 93 à 97 %. XImage.OCR ne peut pas combler cette lacune sans code externe. IronOCR le ferme en 5 appels de méthode.

Proposition de valeur vs Wrappers Tesseract gratuits

La tarification commerciale d'un emballage Tesseract nécessite une réponse claire à une question : qu'apporte l'achat du produit commercial que l'emballage gratuit n'apporte pas ? Pour XImage.OCR, cette question est plus difficile à répondre qu'elle ne devrait l'être.

Le fossé de l'alternative gratuite

Le wrapper charlesw/tesseract sur NuGet compte plus de 8 millions de téléchargements, bénéficie d'une maintenance active et d'une licence Apache 2.0 — gratuite pour une utilisation commerciale. Il fournit un résultat OCR essentiellement identique à celui de XImage.OCR, car les deux utilisent le même moteur Tesseract. Les différences sont les suivantes :

  • Prise en charge des langues : tessdata gratuit propose plus de 100 langues ; XImage.OCR prend en charge environ 15 forfaits payants
  • Communauté : charlesw/tesseract compte plus de 3 000 questions sur Stack Overflow et une documentation communautaire exhaustive ; XImage.OCR compte moins de 100
  • Prétraitement : aucune des deux bibliothèques ne fournit de prétraitement intégré ; les deux transmettent directement les images à Tesseract.
  • Gestion des threads : Les deux présentent la même contrainte de sécurité des threads (instances par thread requises).

Lorsque le produit commercial propose moins de langues, une communauté plus restreinte , le même écart de prétraitement et le même modèle de gestion des threads que l'alternative gratuite, sa proposition de valeur commerciale devient difficile à formuler au-delà du support du fournisseur et de l'intégration à l'écosystème RasterEdge.

IronOCR comme alternative commerciale

IronOCR justifie son prix commercial par des fonctionnalités que ni XImage.OCR ni les wrappers gratuits ne fournissent : prétraitement automatisé, prise en charge native du format PDF, conception sécurisée pour le multithreading et déploiement multiplateforme. La licence $999 Lite est un achat perpétuel unique. La question n'est pas de savoir si l'OCR commerciale vaut la peine d'être payée — c'est souvent le cas. La question est de savoir ce que vous obtenez pour votre argent.

// What the IronOCR Lite license buys vs what commercial pricing buys with XImage.OCR

// IronOCR: Preprocessing, PDF, thread safety, cross-platform in one call
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("scanned-invoice.pdf");   // Native PDF — no extra SDK
input.Deskew();                          // Built-in preprocessing
input.DeNoise();                         // Non external library needed
var result = ocr.Read(input);
result.SaveAsSearchablePdf("output.pdf"); // Searchable PDF output
Console.WriteLine($"Confidence: {result.Confidence}%");

// XImage.OCR: Same Tesseract core, no preprocessing, no PDF, not thread-safe
// Requires purchasing and integrating RasterEdge PDF SDK for PDF operations
// What the IronOCR Lite license buys vs what commercial pricing buys with XImage.OCR

// IronOCR: Preprocessing, PDF, thread safety, cross-platform in one call
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("scanned-invoice.pdf");   // Native PDF — no extra SDK
input.Deskew();                          // Built-in preprocessing
input.DeNoise();                         // Non external library needed
var result = ocr.Read(input);
result.SaveAsSearchablePdf("output.pdf"); // Searchable PDF output
Console.WriteLine($"Confidence: {result.Confidence}%");

// XImage.OCR: Same Tesseract core, no preprocessing, no PDF, not thread-safe
// Requires purchasing and integrating RasterEdge PDF SDK for PDF operations
Imports IronOcr

' What the IronOCR Lite license buys vs what commercial pricing buys with XImage.OCR

' IronOCR: Preprocessing, PDF, thread safety, cross-platform in one call
Dim ocr As New IronTesseract()
Using input As New OcrInput()
    input.LoadPdf("scanned-invoice.pdf")   ' Native PDF — no extra SDK
    input.Deskew()                         ' Built-in preprocessing
    input.DeNoise()                        ' Non external library needed
    Dim result = ocr.Read(input)
    result.SaveAsSearchablePdf("output.pdf") ' Searchable PDF output
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using

' XImage.OCR: Same Tesseract core, no preprocessing, no PDF, not thread-safe
' Requires purchasing and integrating RasterEdge PDF SDK for PDF operations
$vbLabelText   $csharpLabel

Le tutoriel sur la lecture de texte à partir d'images et le guide C# Tesseract OCR documentent l'ensemble des fonctionnalités. Pour les équipes qui évaluent en particulier pourquoi IronOCR est préférable à un wrapper Tesseract de base, la page dédiée " Pourquoi IronOCR et non Tesseract " couvre en détail les différences techniques.

Traitement de PDF

C'est dans le domaine de la reconnaissance optique de caractères (OCR) de fichiers PDF que l'écart architectural entre XImage.OCR et IronOCR devient le plus coûteux en termes d'exploitation.

Approche XImage.OCR

XImage.OCR ne traite pas nativement les fichiers PDF. Le flux de travail nécessite le kit de développement logiciel (SDK) RasterEdge PDF — un achat commercial séparé — pour convertir les pages PDF en images, que XImage.OCR traite ensuite page par page via des fichiers temporaires :

// XImage.OCR: PDF requires RasterEdge PDF SDK (additional purchase)
// Workflow: PDF -> render to image -> temp file -> OCR -> delete temp file

var pdfDocument = new PDFDocument(pdfPath); // Requires separate RasterEdge SDK

var results = new System.Text.StringBuilder();
var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";

for (int i = 0; i < pdfDocument.PageCount; i++)
{
    // Render PDF page to image at 200 DPI
    var pageImage = pdfDocument.RenderPage(i, 200);

    string tempPath = Path.GetTempFileName() + ".png";
    pageImage.Save(tempPath);

    try
    {
        string pageText = ocrHandler.Process(tempPath);
        results.AppendLine($"--- Page {i + 1} ---");
        results.AppendLine(pageText);
    }
    finally
    {
        File.Delete(tempPath); // Manual cleanup required
    }
}

return results.ToString();
// XImage.OCR: PDF requires RasterEdge PDF SDK (additional purchase)
// Workflow: PDF -> render to image -> temp file -> OCR -> delete temp file

var pdfDocument = new PDFDocument(pdfPath); // Requires separate RasterEdge SDK

var results = new System.Text.StringBuilder();
var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";

for (int i = 0; i < pdfDocument.PageCount; i++)
{
    // Render PDF page to image at 200 DPI
    var pageImage = pdfDocument.RenderPage(i, 200);

    string tempPath = Path.GetTempFileName() + ".png";
    pageImage.Save(tempPath);

    try
    {
        string pageText = ocrHandler.Process(tempPath);
        results.AppendLine($"--- Page {i + 1} ---");
        results.AppendLine(pageText);
    }
    finally
    {
        File.Delete(tempPath); // Manual cleanup required
    }
}

return results.ToString();
Imports System.Text
Imports System.IO

' XImage.OCR: PDF requires RasterEdge PDF SDK (additional purchase)
' Workflow: PDF -> render to image -> temp file -> OCR -> delete temp file

Dim pdfDocument As New PDFDocument(pdfPath) ' Requires separate RasterEdge SDK

Dim results As New StringBuilder()
Dim ocrHandler As New OCRHandler()
ocrHandler.Language = "eng"

For i As Integer = 0 To pdfDocument.PageCount - 1
    ' Render PDF page to image at 200 DPI
    Dim pageImage = pdfDocument.RenderPage(i, 200)

    Dim tempPath As String = Path.GetTempFileName() & ".png"
    pageImage.Save(tempPath)

    Try
        Dim pageText As String = ocrHandler.Process(tempPath)
        results.AppendLine($"--- Page {i + 1} ---")
        results.AppendLine(pageText)
    Finally
        File.Delete(tempPath) ' Manual cleanup required
    End Try
Next

Return results.ToString()
$vbLabelText   $csharpLabel

Ce modèle introduit la gestion des fichiers temporaires, un nettoyage explicite et une dépendance à un second produit commercial. La cible de rendu de 200 DPI dans ce modèle tombe également en dessous du seuil de 300 DPI où la précision de Tesseract est optimale, ce qui a un impact supplémentaire sur la qualité. Les équipes qui utilisent XImage.OCR pour leurs flux de travail PDF paient en réalité pour deux produits qui font ce qu'un seul couvre ailleurs.

Approche d'IronOCR

IronOCR gère nativement les fichiers PDF. Aucune étape intermédiaire, aucun fichier temporaire, aucun deuxième SDK :

// IronOCR: Native PDF input, no extra dependencies
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

using var input = new OcrInput();
input.LoadPdf("scanned-invoice.pdf");  // Direct PDF loading
var result = new IronTesseract().Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
Console.WriteLine(result.Text);
// IronOCR: Native PDF input, no extra dependencies
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

using var input = new OcrInput();
input.LoadPdf("scanned-invoice.pdf");  // Direct PDF loading
var result = new IronTesseract().Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
Console.WriteLine(result.Text);
Imports IronOcr

' IronOCR: Native PDF input, no extra dependencies
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

Using input As New OcrInput()
    input.LoadPdf("scanned-invoice.pdf")  ' Direct PDF loading
    Dim result = New IronTesseract().Read(input)
    result.SaveAsSearchablePdf("searchable-output.pdf")
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Les PDF protégés par mot de passe ajoutent un paramètre :

using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret");
var result = new IronTesseract().Read(input);
using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret");
var result = new IronTesseract().Read(input);
Imports IronOcr

Using input As New OcrInput()
    input.LoadPdf("encrypted.pdf", Password: "secret")
    Dim result = New IronTesseract().Read(input)
End Using
$vbLabelText   $csharpLabel

Le guide d'importation PDF couvre les PDF multipages, la sélection de la plage de pages et la configuration DPI. Le guide PDF consultable documente les options de sortie. Pour les équipes qui développent des processus d'archivage de documents, la page de cas d'utilisation sur la reconnaissance optique de caractères (OCR) PDF en C# couvre l'intégralité du flux de travail.

Référence de mappage d'API

XImage.OCR Équivalent d'IronOCR Notes
new OCRHandler() new IronTesseract() Cours principal d'OCR
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("key") IronOcr.License.LicenseKey = "key" Activation de la licence
ocrHandler.Language = "eng" ocr.Language = OcrLanguage.English énumération à typage statique vs chaîne de caractères
ocrHandler.Languages = new[] { "eng", "deu" } ocr.AddSecondaryLanguage(OcrLanguage.German) Multilingue
ocrHandler.Process(imagePath) ocr.Read("image.jpg").Text Opération OCR de base
ocrHandler.ProcessRegion(path, rect) input.LoadImage(path, new CropRectangle(x, y, w, h)) OCR basé sur la région
ocrHandler.SetVariable("tessedit_char_whitelist", "0123456789") ocr.Configuration.WhiteListCharacters = "0123456789" Filtrage des caractères
result.Text result.Text Sortie de texte brut
result.MeanConfidence result.Confidence Pourcentage de confiance
Aucun équivalent result.Words / result.Lines / result.Pages Résultats structurés
Aucun équivalent input.Deskew() Prétraitement intégré
Aucun équivalent input.DeNoise() Prétraitement intégré
Aucun équivalent input.EnhanceResolution(300) Prétraitement intégré
Nécessite le SDK PDF de RasterEdge input.LoadPdf(pdfPath) Entrée PDF native
Nécessite le SDK PDF de RasterEdge result.SaveAsSearchablePdf("out.pdf") Sortie PDF consultable
Instances OCRHandler par thread Instance unique IronTesseract Modèle de sécurité des fils

Quand les équipes envisagent de passer de XImage.OCR à IronOCR

La gestion des packages est devenue une charge de maintenance.

Les équipes qui ont commencé avec deux ou trois modules linguistiques XImage.OCR atteignent souvent un point de basculement lorsque l'application s'étend à 8 ou 10 langues. Le fichier projet contient désormais 9 à 11 références à des packages nécessitant toutes une synchronisation de version. Le développeur qui a mis à jour uniquement le package principal a silencieusement cassé la reconnaissance optique de caractères (OCR) pour toutes les langues. Le pipeline CI/CD échoue par intermittence car le cache des packages a restauré un ancien pack de langue. À ce stade, la surcharge liée à la synchronisation des versions dépasse toute valeur ajoutée par l'empaquetage par langue, et la consolidation vers une solution à package unique devient la décision architecturale évidente.

La qualité des documents dans le monde réel exige un prétraitement

Les équipes qui déploient XImage.OCR sur des numérisations contrôlées et de haute qualité ne rencontrent initialement aucun problème de précision. Le problème se pose lorsque le flux de documents s'élargit : téléchargements de photos mobiles, numérisations d'archives anciennes, documents faxés, formulaires remplis à la main et numérisés à 150 DPI. Sans prétraitement, la précision de Tesseract sur ces entrées est médiocre, quel que soit le wrapper utilisé. Les équipes sont alors confrontées à un choix : créer et maintenir leur propre intégration de bibliothèque de prétraitement, ou opter pour une solution intégrant le prétraitement. Les fonctions intégrées de redressement, de réduction du bruit et d'amélioration de la résolution d'IronOCR éliminent totalement la dépendance externe et offrent une amélioration de la précision sans nécessiter d'expertise en traitement d'images de la part du développeur OCR.

Les flux de travail PDF nécessitent l'achat d'un deuxième kit de développement logiciel (SDK).

Lorsque le flux de documents d'une équipe passe des fichiers image aux PDF (le chemin d'escalade le plus courant pour les applications de traitement de documents), XImage.OCR impose l'achat d'un deuxième produit RasterEdge. Le kit de développement logiciel PDF (SDK) fait l'objet d'une licence commerciale distincte. Les équipes qui payaient le prix du commerce pour la reconnaissance optique de caractères (OCR) n'avaient pas prévu de budget pour une deuxième licence commerciale afin que l'OCR fonctionne sur le format de document le plus courant dans les environnements Enterprise . La prise en charge native du format PDF par IronOCR rend cette préoccupation caduque dès le premier jour, et l' exemple de reconnaissance optique de caractères (OCR) pour les PDF démontre précisément à quel point l'intégration est directe.

Le déploiement multiplateforme devient une exigence

L'architecture principalement Fenêtresde XImage.OCR devient une contrainte majeure lorsque le déploiement conteneurisé sur Linuxou dans un environnement de développement macOSentre en jeu. Les équipes de développement .NET modernes utilisent Dockerpour le développement local et déploient sur une infrastructure de conteneurs basée sur Linux. Une bibliothèque OCR compatible uniquement avec Fenêtresne peut pas participer à cette pile. IronOCR prend en charge Windows, Linux, macOSet Dockerà partir du même package sans aucune modification de configuration requise — le guide de déploiement Docker et le guide de déploiement Linux couvrent la configuration en détail.

La sécurité des threads limite le débit des applications serveur

L'OCR dans une application serveur, le traitement par lots ou la gestion de requêtes HTTP simultanées nécessitent le multithreading. Le modèle de gestionnaire par thread de XImage.OCR signifie que chaque thread concurrent charge sa propre instance du moteur Tesseract, consommant 40 à 100 Mo par langue et par thread. Un serveur à 4 threads traitant des documents en 5 langues charge environ 900 Mo à 1,2 Go rien que pour les instances du gestionnaire OCR. La conception multithread d'IronOCR partage une seule instance entre tous les threads — cette instance unique gère les requêtes simultanées sans multiplier la consommation de mémoire. Les équipes qui rencontrent des limitations de mémoire ou de débit en production attribuent souvent la cause première à cette différence architecturale.

Considérations courantes en matière de migration

Remplacement d'OCRHandler par IronTesseract

La substitution de code principale est simple. Remplacez OCRHandler par IronTesseract, remplacez les codes de langue sous forme de chaîne ("eng", "deu") par des valeurs d'énumération OcrLanguage sûres en typage, et enveloppez le chargement de l'image dans OcrInput. L'activation de la licence passe de LicenseManager.SetLicense() à la propriété statique IronOcr.License.LicenseKey, qui peut être réglée à partir d'une variable d'environnement pour la sécurité du déploiement :

// Before: XImage.OCR
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("your-key");
var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";
string text = ocrHandler.Process(imagePath);

// After: IronOCR
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage(imagePath);
var result = ocr.Read(input);
string text = result.Text;
// Before: XImage.OCR
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("your-key");
var ocrHandler = new OCRHandler();
ocrHandler.Language = "eng";
string text = ocrHandler.Process(imagePath);

// After: IronOCR
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage(imagePath);
var result = ocr.Read(input);
string text = result.Text;
Imports System
Imports IronOcr

' Before: XImage.OCR
RasterEdge.XImage.OCR.License.LicenseManager.SetLicense("your-key")
Dim ocrHandler As New OCRHandler()
ocrHandler.Language = "eng"
Dim text As String = ocrHandler.Process(imagePath)

' After: IronOCR
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE")
Dim ocr As New IronTesseract()
Using input As New OcrInput()
    input.LoadImage(imagePath)
    Dim result = ocr.Read(input)
    text = result.Text
End Using
$vbLabelText   $csharpLabel

Le guide complet sur la saisie d'images couvre tous les types d'entrée : chemins de fichiers, tableaux d'octets, flux et URL.

Ajout d'un prétraitement là où il n'en existait pas

Les équipes migrant depuis XImage.OCR ont désormais la possibilité d'ajouter immédiatement des fonctions de prétraitement qui n'étaient pas disponibles auparavant. Cette migration ne se limite pas à un simple changement de nom de classe ; c'est l'occasion de corriger des problèmes de précision qui avaient été tacitement acceptés faute de meilleure solution. Après avoir chargé les données d'entrée, ajoutez les filtres appropriés à vos types de documents :

using var input = new OcrInput();
input.LoadImage(imagePath);

// Add these lines immediately after loading — no other changes needed
input.Deskew();
input.DeNoise();
input.EnhanceResolution(300);

var result = new IronTesseract().Read(input);
using var input = new OcrInput();
input.LoadImage(imagePath);

// Add these lines immediately after loading — no other changes needed
input.Deskew();
input.DeNoise();
input.EnhanceResolution(300);

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

Using input As New OcrInput()
    input.LoadImage(imagePath)

    ' Add these lines immediately after loading — no other changes needed
    input.Deskew()
    input.DeNoise()
    input.EnhanceResolution(300)

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

Le tutoriel sur les filtres d'image fournit des indications sur les filtres à appliquer pour résoudre des problèmes spécifiques de qualité de document. N'appliquez cette méthode qu'aux documents dont la qualité est variable ; les numérisations nettes et haute résolution ne bénéficient pas du prétraitement et cette étape supplémentaire allonge le temps de traitement.

Simplifier la liste des paquets

Supprimez tous les packages XImage.OCR du projet. La suppression des paquets est la partie la plus longue du processus pour les applications comportant de nombreuses langues installées :

# Remove all XImage.OCR packages
dotnet remove package RasterEdge.XImage.OCR
dotnet remove package XImage.OCR.Language.English
dotnet remove package XImage.OCR.Language.German
dotnet remove package XImage.OCR.Language.French
# ... remove all language packages

# Add IronOCR
dotnet add package IronOcr
# Remove all XImage.OCR packages
dotnet remove package RasterEdge.XImage.OCR
dotnet remove package XImage.OCR.Language.English
dotnet remove package XImage.OCR.Language.German
dotnet remove package XImage.OCR.Language.French
# ... remove all language packages

# Add IronOCR
dotnet add package IronOcr
SHELL

Mettez à jour le pipeline CI/CD pour supprimer les multiples opérations de restauration et simplifier les étapes de vérification des dépendances des packages. La logique de synchronisation des versions — si elle était automatisée — peut être entièrement supprimée.

Gestion de la reconnaissance optique de caractères (OCR) basée sur les régions

XImage.OCR expose le traitement des régions via ProcessRegion(imagePath, rectangle). IronOCR gère cela via CropRectangle passé au moment du chargement de l'entrée :

// IronOCR region-based OCR
var region = new CropRectangle(x: 0, y: 0, width: 600, height: 100);
using var input = new OcrInput();
input.LoadImage("invoice.jpg", region);
var text = new IronTesseract().Read(input).Text;
// IronOCR region-based OCR
var region = new CropRectangle(x: 0, y: 0, width: 600, height: 100);
using var input = new OcrInput();
input.LoadImage("invoice.jpg", region);
var text = new IronTesseract().Read(input).Text;
' IronOCR region-based OCR
Dim region As New CropRectangle(x:=0, y:=0, width:=600, height:=100)
Using input As New OcrInput()
    input.LoadImage("invoice.jpg", region)
    Dim text As String = New IronTesseract().Read(input).Text
End Using
$vbLabelText   $csharpLabel

Le guide OCR basé sur les régions et l'exemple de recadrage régional documentent l'approche pour les documents à mise en page fixe tels que les factures et les formulaires.

Fonctionnalités supplémentaires d'IronOCR

Au-delà des principaux points de comparaison, IronOCR offre des fonctionnalités qui n'ont pas d'équivalent dans XImage.OCR :

  • OCR asynchrone : Exécution OCR non bloquante pour les applications ASP.NET traitant des documents dans des pipelines de requêtes
  • Types de documents spécialisés : circuits de traitement dédiés aux passeports, plaques d'immatriculation, chèques MICR et reconnaissance d'écriture manuscrite
  • Optimisation de la vitesse : Profils de configuration optimisés pour le débit lorsque les exigences de précision permettent des compromis, couvrant le mode de segmentation de page et la sélection du mode moteur
  • Traitement TIFF multi-images : Toutes les images d'un fichier TIFF multipage sont lues en un seul appel, avec des résultats par page ; aucune itération manuelle d'image n'est requise.
  • Package NuGet : Disponible sur NuGet avec un système de versionnage complet et des outils de gestion de packages standard.

Compatibilité .NET et préparation à l'avenir

IronOCR cible .NET 6, .NET 7, .NET 8 et .NET 9, avec une prise en charge active de .NET Standard 2.0 et .NET Framework 4.6.2+ pour la compatibilité avec les projets existants. La bibliothèque fournit des binaires d'exécution multiplateformes qui fonctionnent de manière identique sous Windows, Linuxet macOS, sans compilation conditionnelle ni packaging spécifique à la plateforme. XImage.OCR cible .NET Standard 2.0 et .NET Framework 4.5+, ce qui préserve la compatibilité avec les versions précédentes mais ne s'étend pas de manière significative aux environnements de déploiement modernes : la conteneurisation Docker, l'infrastructure cloud basée sur Linuxet le développement macOSsont tous en dehors du périmètre de prise en charge testé. IronOCR bénéficie de mises à jour régulières alignées sur le rythme de publication de .NET , et son architecture à package unique garantit que les mises à jour de compatibilité s'appliquent uniformément à tous les langages et fonctionnalités, sans la coordination par package qu'exige le modèle fragmenté de XImage.OCR.

Conclusion

XImage.OCR présente la même contrainte fondamentale que les autres wrappers Tesseract commerciaux : il facture une couche gérée au détriment d'une technologie libre sans se différencier clairement des fonctionnalités déjà offertes par les wrappers gratuits. Le modèle fragmenté des packages linguistiques aggrave ce problème en introduisant une véritable surcharge opérationnelle : la synchronisation des versions entre 11 packages pour une application multilingue (10 langues), 11 points de défaillance CI/CD au lieu d'un seul, et une couverture linguistique limitée à une quinzaine de langues, alors que les distributions Tesseract gratuites en incluent plus de 100. Les équipes déjà intégrées à l'écosystème RasterEdge ont une raison valable d'utiliser XImage.OCR ; Les équipes qui l'évaluent indépendamment en tant que solution OCR autonome auront du mal à justifier son prix commercial.

Le prétraitement représente l'écart technique le plus flagrant. Les documents réels — numérisés à résolution variable, photographiés sous des angles légèrement différents, imprimés sur du matériel ancien — nécessitent une correction d'image avant que la reconnaissance optique de caractères (OCR) ne produise des résultats fiables. XImage.OCR ne fournit aucun prétraitement. Pour obtenir une précision acceptable sur ces données d'entrée, il est nécessaire d'écrire et de maintenir un code de traitement d'images externe. IronOCR gère cela en cinq appels de méthode et sans dépendances externes.

La prise en charge des fichiers PDF et le déploiement multiplateforme représentent les deux scénarios où l'architecture de XImage.OCR engendre des coûts cumulatifs. Le traitement des fichiers PDF nécessite un deuxième achat commercial de RasterEdge. Le déploiement sous Linuxet Dockern'est pas pris en charge. Pour les équipes dont les exigences incluent l'un ou l'autre de ces éléments — et le développement .NET Enterprise moderne inclut généralement les deux — IronOCR correspond fonctionnellement, tandis que XImage.OCR nécessite des solutions de contournement architecturales qui augmentent les coûts et la complexité.

Pour les équipes utilisant actuellement XImage.OCR, la décision repose principalement sur la question de savoir si l'écosystème RasterEdge justifie cette dépendance. Pour les équipes qui choisissent une bibliothèque OCR nouvellement créée, le modèle à package unique d'IronOCR, le prétraitement intégré, la prise en charge native du format PDF et l'environnement d'exécution multiplateforme représentent une offre commerciale plus complète à un prix comparable.

Veuillez noterTesseract et xImage.OCR sont des marques déposées de leurs propriétaires respectifs. Ce site n'est pas affilié, approuvé ou parrainé par Google ou RasterEdge. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.

Questions Fréquemment Posées

Qu'est-ce que xImage.OCR ?

xImage.OCR est une solution d'OCR utilisée par les développeurs et les entreprises pour extraire du texte à partir d'images et de documents. Il s'agit de l'une des nombreuses options d'OCR évaluées aux côtés d'IronOCR pour le développement d'applications .NET.

Comment IronOCR se compare-t-il à xImage.OCR pour .NET developers ?

IronOCR est une bibliothèque OCR .NET native de NuGet qui utilise IronTesseract comme moteur principal. Par rapport à xImage.OCR, elle offre un déploiement plus simple (pas d'installateurs SDK), un prix forfaitaire et une API C# propre sans interopérabilité COM ou dépendances cloud.

IronOCR est-il plus facile à installer que xImage.OCR ?

IronOCR s'installe via un seul package NuGet. Il n'y a pas d'installateur SDK, de fichiers de licence à copier, de composants COM à enregistrer ou de binaires d'exécution séparés à gérer. L'ensemble du moteur d'OCR est inclus dans le package.

Quelles sont les différences de précision entre xImage.OCR et IronOCR ?

IronOcr atteint une grande précision de reconnaissance pour les documents commerciaux standard, les factures, les reçus et les formulaires numérisés. Pour les documents très dégradés ou les scripts peu courants, la précision varie en fonction de la qualité de la source. IronOCR comprend des filtres de prétraitement d'image pour améliorer la reconnaissance sur des entrées de faible qualité.

IronOCR prend-il en charge l'extraction de texte au format PDF ?

Oui. IronOCR extrait le texte des PDF natifs et des images PDF numérisées en un seul appel. Il prend également en charge les fichiers TIFF multipages, les images et les flux. Pour les PDF numérisés, l'OCR est appliquée page par page avec des objets de résultat par page.

Comment la licence de xImage.OCR se compare-t-elle à celle d'IronOcr ?

IronOCR utilise une licence perpétuelle forfaitaire sans frais par page ou par scan. Les organisations qui traitent de gros volumes de documents paient le même coût de licence, quel que soit le volume. Les détails et la tarification au volume se trouvent sur la page de licence d'IronOCR.

Quelles langues IronOCR prend-il en charge ?

IronOcr prend en charge 127 langues via des packs linguistiques NuGet distincts. L'ajout d'une langue nécessite une seule commande "dotnet add package IronOcr.Languages.{Language}". Il n'est pas nécessaire de placer manuellement des fichiers ou de configurer des chemins d'accès.

Comment installer IronOCR dans un projet .NET ?

Installation via NuGet : 'Install-Package IronOcr' dans la console du Package Manager ou 'dotnet add package IronOcr' dans le CLI. Les packs de langues supplémentaires sont installés de la même manière. Aucun programme d'installation du SDK n'est nécessaire.

IronOCR est-il adapté à Docker et aux déploiements conteneurisés, contrairement à xImage.OCR ?

Oui. IronOCR fonctionne dans les conteneurs Docker via son package NuGet. La clé de licence est définie via une variable d'environnement. Aucun fichier de licence, chemin d'accès au SDK ou montage de volume n'est nécessaire pour le moteur OCR lui-même.

Puis-je essayer IronOCR avant de l'acheter, par rapport à xImage.OCR ?

Oui. Le mode d'essai d'IronOcr traite les documents et renvoie les résultats de l'OCR avec un filigrane en surimpression sur la sortie. Vous pouvez vérifier la précision sur vos propres documents avant d'acheter une licence.

IronOCR prend-il en charge la lecture de codes-barres parallèlement à l'extraction de texte ?

IronOCR se concentre sur l'extraction de texte et l'OCR. Pour la lecture de codes-barres, Iron Software propose IronBarcode comme bibliothèque d'accompagnement. Les deux sont disponibles individuellement ou dans le cadre de l'offre groupée Iron Suite.

Est-il facile de migrer de xImage.OCR vers IronOCR ?

La migration de xImage.OCR vers IronOcr implique généralement le remplacement des séquences d'initialisation par l'instanciation d'IronTesseract, la suppression de la gestion du cycle de vie de COM et la mise à jour des appels d'API. La plupart des migrations réduisent considérablement la complexité du code.

Kannaopat Udonpant
Ingénieur logiciel
Avant de devenir ingénieur logiciel, Kannapat a obtenu un doctorat en ressources environnementales à l'université d'Hokkaido au Japon. Pendant qu'il poursuivait son diplôme, Kannapat est également devenu membre du laboratoire de robotique de véhicules, qui fait partie du département de bioproduction. En 2022, il a utilisé ses compé...
Lire la suite

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi