IRONSOFTWAREHOME
COMPARER À D'AUTRES COMPOSANTS

Tesseract C# vs IronOCR: Quelle bibliothèque OCR devriez-vous utiliser en .NET?

Kannaopat Udonpant
Kannapat Udonpant
Updated: 28 juin 2026

Si votre code source .NET Framework 4.5 exécute encore la couche OCR et que vous avez récemment découvert que le SDK Tesseract .NET de Patagames ne se compile pas avec .NET 6, .NET 8ou toute image Docker Linux, vous êtes arrivé au compromis exact examiné dans cet article. Tesseract .NET.SDK cible .NET Framework 2.0 à 4.5, fournit des binaires natifs uniquement pour Windows et facture une licence commerciale en plus du moteur Tesseract gratuit — une combinaison qui enferme les équipes dans un îlot d'infrastructure héritée de plus en plus restreint au moment précis où la plupart des organisations conteneurisent leurs charges de travail et mettent à niveau leurs environnements d'exécution.

Comprendre Tesseract .NET.SDK

Tesseract .NET.SDK est un wrapper .NET commercial autour du moteur OCR open-source Tesseract, vendu par Patagames. Le produit regroupe des binaires Tesseract précompilés pour Windows x86 et x64, enveloppe l'API C/C++ Tesseract dans une interface .NET gérée et distribue ce package via NuGet sous l'identifiant de package Tesseract.Net.SDK.

Ce produit a été conçu pour une époque où .NET Framework 4.5 était la norme de déploiement et Windows Server la seule cible. Cette époque est révolue pour la plupart des équipes, mais le SDK n'a pas suivi le rythme. La matrice de compatibilité officielle est la suivante : .NET Framework 2.0, 3.0, 3.5, 4.0 et 4.5. .NET Core, .NET Standard, .NET 5, .NET 6, .NET 7, .NET 8et .NET 9ne sont pas pris en charge. Linux n'est pas pris en charge. macOSn'est pas pris en charge. Les conteneurs Docker, qui exécutent presque exclusivement des images de base Linux, ne sont pas pris en charge.

Principales caractéristiques architecturales du kit de développement logiciel Tesseract .NET:

  • Cible d'exécution : .NET Framework 2.0-4.5exclusivement ; pas de .NET Core ni d'environnements d'exécution .NET modernes
  • Plateforme : Windows x86 et x64 uniquement ; Les appels P/Invoke vers les bibliothèques natives spécifiques à Windows lanceront DllNotFoundException sur tout hôte non Windows.
  • Gestion des données Tess : les langues ne sont pas incluses ; les développeurs téléchargent les fichiers .traineddata depuis le dépôt GitHub de Tesseract, les placent dans le dossier bin/tessdata/ et configurent l'action de génération de chaque fichier dans Visual Studio.
  • Sécurité des threads : les instances de OcrApi ne sont pas adaptées aux threads ; Les charges de travail parallèles nécessitent une instance de moteur par thread, chacune chargeant 40 à 100 Mo de données linguistiques en mémoire.
  • Prétraitement : aucun intégré ; Les images déformées, bruitées ou de faible résolution nécessitent une bibliothèque externe telle qu'OpenCV ou ImageMagick.
  • Entrée PDF : non prise en charge nativement ; Les développeurs installent une seconde bibliothèque, telle que PdfiumViewer, pour convertir les pages PDF en fichiers image temporaires avant la reconnaissance optique de caractères (OCR).
  • Développeur : Patagames est exploité par un développeur indépendant ; Il n'y a pas de SLA, pas de niveau de support Enterprise , et aucune redondance si le développeur devient indisponible.

Ciblage pratique du .NET Framework hérité

La limite stricte fixée par .NET Framework 4.5 n'est pas qu'une simple case à cocher ; elle influence toutes les décisions architecturales en aval. Un projet qui dépend de Tesseract.Net.SDK ne peut pas cibler <TargetFramework>net8.0</TargetFramework> dans son .csproj. Il ne peut pas être construit par un opérateur GitHub Actions en utilisant mcr.microsoft.com/dotnet/sdk:8.0. Il ne peut pas être déployé sur un pod Kubernetes exécutant un conteneur Linux. Dès que le reste de l'organisation franchit cette étape, le service de reconnaissance optique de caractères (OCR) devient orphelin.

Le code d'initialisation propre au SDK expose directement cette information. Le modèle d'utilisation de base dans tesseract-net-sdk-basic-ocr.cs inclut une protection explicite de la plateforme Windows :

// Install: Install-Package Tesseract.Net.SDK
// Platform: Windows ONLY (.NET Framework 2.0-4.5)
using Patagames.Ocr;

public string ExtractTextSimple(string imagePath)
{
    // Platform check — Tesseract.Net.SDK is Windows-only
    if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
    {
        throw new PlatformNotSupportedException(
            "Tesseract.Net.SDK only supports Windows.");
    }

    // Verify tessdata exists
    if (!Directory.Exists(@".\tessdata"))
    {
        throw new DirectoryNotFoundException(
            "tessdata folder not found. Download traineddata files from GitHub.");
    }

    using (var api = OcrApi.Create())
    {
        api.Init(Languages.English);       // loads eng.traineddata (~40 MB)
        return api.GetTextFromImage(imagePath);
    }
}

Deux contrôles de sécurité apparaissent avant chaque ligne de traitement OCR : confirmation Windows, confirmation tessdata. Sur tout système hôte non Windows, la méthode génère une exception avant d'atteindre le moteur. Sur toute machine où le dossier tessdata n'a pas été copié lors du déploiement, une autre exception est levée. Aucun de ces contrôles n'est standardisé ; tous deux représentent des modes de défaillance que les développeurs rencontrent en production.

Comprendre IronOCR

IronOCR est une bibliothèque OCR commerciale pour .NET construite autour d'un moteur Tesseract 5 optimisé avec prétraitement automatique des images, entrée PDF native et prise en charge multiplateforme sur Windows, Linux, macOS, Docker, Azure et AWS. Il est distribué sous forme d'un seul package NuGet , sans configuration de bibliothèque native externe, sans gestion du dossier tessdata et sans scripts de déploiement spécifiques à la plateforme.

Caractéristiques principales :

  • Prise en charge de l'environnement d'exécution : .NET Framework 4.6.2 et versions ultérieures, .NET Core 2.0 et versions ultérieures, .NET 5, 6, 7, 8 et 9 ; Un seul package binaire fonctionne sur tous les environnements d'exécution pris en charge.
  • Plateformes prises en charge : Windows x86/x64, Linux x64, macOS ; se déploie de manière identique sur les conteneurs Docker, Azure App Service, AWS Lambdaet les pods Kubernetes.
  • Prétraitement : Filtres intégrés — Deskew(), DeNoise(), Contrast(), Binarize(), EnhanceResolution(), Sharpen(), Rotate(), et plus — appliqués via l'objet OcrInput avant l'exécution du moteur
  • Entrée PDF : Natif ; input.LoadPdf() accepte les PDF scannés et numériques sans bibliothèque secondaire ; Les fichiers PDF protégés par mot de passe transmettent le mot de passe en tant que paramètre
  • Sortie PDF searchable : result.SaveAsSearchablePdf() convertit tout document scanné en un PDF textuellement searchable en un seul appel
  • Sécurité des threads : les instances de IronTesseract sont adaptées aux threads ; Une seule instance prend en charge tous les threads sans multiplier l'allocation de mémoire.
  • Prise en charge des langues : plus de 125 langues installées sous forme de packages NuGet distincts, téléchargés automatiquement lors de la première utilisation, aucun placement manuel de fichier requis.
  • Licences : Achat perpétuel unique à partir de $999 pour le niveau Lite ; no per-document or per-transaction billing

Comparaison des fonctionnalités

FonctionTesseract.Net.SDKIronOCR
Prise en charge du .NET Framework2.0–4.5 seulement4.6.2+
.NET moderne (5/6/7/8/9)NonOui
Déploiement de WindowsOuiOui
Déploiement LinuxNonOui
conteneurs DockerNonOui
Entrée PDF (native)NonOui
Prétraitement automatiqueNonOui
Moteur à filetage sécuriséNonOui

Comparaison détaillée des fonctionnalités

FonctionTesseract.Net.SDKIronOCR
Compatibilité d'exécution
.NET Framework 2.0-4.5OuiNon
.NET Framework 4.6.2+NonOui
.NET Core 2.x/3.xNonOui
.NET 5NonOui
.NET 6NonOui
.NET 7NonOui
.NET 8NonOui
.NET 9NonOui
Support de la plateforme
Windows x86/x64OuiOui
Linux x64NonOui
macOSNonOui
Docker (image Linux)NonOui
Azure App Service (Linux)NonOui
AWS LambdaNonOui
Pod KubernetesNonOui
Sources d'entrée
Fichiers image (BMP, PNG, JPEG, TIFF)OuiOui
Entrée PDF (native)NonOui
PDF protégé par mot de passeNonOui
Tableau d'octets / FluxOuiOui
Prétraitement
DéclinNon (bibliothèque externe)Intégré
DeNoiseNon (bibliothèque externe)Intégré
Amélioration du contrasteNon (bibliothèque externe)Intégré
BinariserNon (bibliothèque externe)Intégré
Amélioration de la résolutionNon (bibliothèque externe)Intégré
Sortir
Texte brutOuiOui
PDF consultableNonOui
Exportation hOCRNonOui
Données structurées (mots, lignes, paragraphes avec coordonnées)NonOui
score de confianceOui (GetMeanConfidence())Oui (result.Confidence)
Assistance linguistique
Nombre de langues120+ (téléchargement manuel)125+ (packs NuGet )
Téléchargement automatique de la langueNonOui
Enfilage
instance de moteur thread-safeNonOui
Traitement parallèle intégréNonOui
Surcharge mémoire par thread~40 à 100 Mo par moteurinstance unique partagée
Licence
Modèle de licenceCommercial à usage uniqueperpétuel à usage unique
Prix ​​d'entrée~20 à 50 $$999
Facturation par documentNonNon
Support Enterprise / SLANonOui

Compatibilité des versions .NET et de l'environnement d'exécution

La différence la plus importante entre ces deux bibliothèques ne réside pas dans la conception ou la précision de l'API, mais dans sa compatibilité d'exécution.

Approche Tesseract .NET.SDK

Le kit de développement logiciel (SDK) Tesseract .NET cible les versions 2.0 à 4.5 du .NET Framework . Chaque projet qui en dépend doit lui-même cibler l'une de ces versions du framework. Le fichier de comparaison des migrations confirme cette contrainte dans la section configuration :

// Install: Install-Package Tesseract.Net.SDK
// License: Commercial (Patagames)
// Platform: Windows ONLY (.NET Framework 2.0-4.5)
//
// Requirements:
//   - tessdata folder must exist in bin/Debug/or bin/Release/
//   - Download traineddata files from https://github.com/tesseract-ocr/tessdata
//   - Windows operating system (no Linux/macOS support)

using Patagames.Ocr;

// Multi-language setup — all traineddata files must be manually downloaded
using (var api = OcrApi.Create())
{
    // Combine languages with bitwise OR
    api.Init(Languages.English | Languages.German | Languages.French);

    string text = api.GetTextFromImage(imagePath);
    return text;
}
C#

Le modèle using (var api = OcrApi.Create()) est idiomatique pour .NET Framework 2.0. Il utilise l'instruction using de C# 1.0 plutôt que la déclaration using var de C# 8.0. L'espace de noms est Patagames.Ocr. Cette combinaison de langages utilise un OU binaire sur une énumération. Aucun de ce code ne compile pour une cible net6.0 ou net8.0 dans un fichier de projet de style SDK, car Tesseract.Net.SDK lui-même ne produit pas un assembly compatible.

Les équipes bloquées sur .NET Framework 4.5 ne le sont pas par choix. Elles sont là parce que les dépendances — incluant parfois une bibliothèque OCR — ne peuvent pas être mises à jour. Choisir Tesseract .NET.SDK renforce cette chaîne de dépendances.

Approche d'IronOCR

IronOCR prend en charge .NET Framework 4.6.2 et tous les environnements d'exécution .NET modernes jusqu'à .NET 9. Le même package binaire fonctionne sur tous. La mise à niveau d'un projet de .NET Framework 4.8 vers .NET 8ne nécessite pas le remplacement de la bibliothèque OCR.

// Works on .NET Framework 4.6.2, .NET Core, .NET 5/6/7/8/9
// Same NuGet package, same API, same results
using IronOcr;

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("document.jpg");
Console.WriteLine(result.Text);
Console.WriteLine($"Confidence: {result.Confidence}%");

Pas d'opération OU bit à bit sur les énumérations de langage. Aucun dossier tessdata. Aucune vérification de plateforme. Le guide d'installation d'IronTesseract regroupe dans un seul document les options de configuration pour tous les environnements d'exécution pris en charge.

Conséquence pratique pour les équipes en pleine migration : un projet ASP.NET Core 8 et un projet .NET Framework 4.8 existant peuvent partager la même couche de service IronOCR . Pas de compilation conditionnelle, pas de versions de bibliothèques séparées, pas de couche d'abstraction pour masquer les API incompatibles.

Couverture de la plateforme et déploiement de conteneurs

Approche Tesseract .NET.SDK

Tesseract .NET.SDK fournit des binaires natifs Windows x86 et x64. Les appels P/Invoke qui initialisent le moteur Tesseract font référence à ces DLL Windows. Sur un hôte Linux - incluant tout conteneur Docker basé sur mcr.microsoft.com/dotnet/aspnet:8.0, ubuntu, ou alpine - la DLL ne peut pas être chargée, et l'application lance DllNotFoundException à l'exécution.

L'exemple de traitement parallèle de tesseract-net-sdk-pdf-processing.cs illustre ce que cela signifie pour les charges de travail par lots sur Windows lui-même avant même de considérer Linux :

// Windows-only: Parallel.ForEach with separate engine per thread
// Each engine loads ~40-100 MB per language
Parallel.ForEach(
    imagePaths,
    new ParallelOptions { MaxDegreeOfParallelism = 4 },
    imagePath =>
    {
        // WARNING: Must create separate OcrApi for each thread!
        // Memory usage: 4 threads × 100MB = 400MB minimum
        using (var api = OcrApi.Create())
        {
            api.Init(Languages.English);
            string text = api.GetTextFromImage(imagePath);
            results[imagePath] = text;
        }
    });

Quatre threads parallèles, quatre instances du moteur, 400 Mo de données linguistiques chargées simultanément — et ce, rien que pour l'anglais. Ajoutez l'allemand et le français, et ce chiffre de base double. Le SDK ne propose aucun mécanisme de mise en commun pour atténuer ce problème. Cette architecture est incompatible avec les limites de ressources des conteneurs modernes, qui imposent généralement des plafonds de mémoire par pod.

Il n'existe par ailleurs aucun accès à Azure Functions sur un plan de consommation Linux, aucun accès à AWS Lambda(qui fonctionne sur Amazon Linux) et aucun accès à Google Cloud Run. Toutes les principales plateformes serverless utilisent Linux par défaut. Tesseract .NET.SDK est exclu de tous ces cas intentionnellement.

Approche d'IronOCR

IronOCR se déploie sur Docker sans configuration supplémentaire autre qu'une seule ligne apt-get pour libgdiplus sur les images basées sur Debian. Le guide de déploiement Docker couvre à la fois les conteneurs Linux et Windows. Il en va de même pour les déploiements Linux , Azure et AWS .

La sécurité des threads est intégrée dans IronTesseract. Une seule instance dessert tous les travailleurs parallèles :

// Cross-platform: Windows, Linux, macOS, Docker
// Single instance — thread-safe
using IronOcr;

var ocr = new IronTesseract();

// Single engine instance shared across all threads
// Non memory multiplication
Parallel.ForEach(imagePaths, imagePath =>
{
    using var input = new OcrInput();
    input.LoadImage(imagePath);
    var result = ocr.Read(input);
    SaveResult(imagePath, result.Text);
});
C#

Quatre threads, une instance de moteur, une copie des données linguistiques en mémoire. Pour un exemple de multithreading avec des benchmarks de débit, la documentation IronOCR couvre en détail les options de configuration.

Traitement de PDF

Approche Tesseract .NET.SDK

Tesseract .NET.SDK ne prend pas en charge le format PDF. Le fichier tesseract-net-sdk-pdf-processing.cs est franc à propos de cette limitation dans son en-tête :

// LIMITATION CRITIQUE :
// Tesseract .NET.SDK ne prend PAS en charge nativement l&#39;entrée PDF.
// Vous devez d&#39;abord utiliser une bibliothèque distincte pour convertir les pages PDF en images.
// Cet exemple utilise PdfiumViewer, mais d&#39;autres options existent :
// - iTextSharp
// - Ghostscript .NET
// - Docnet.Core
Text

Le résultat est un pipeline multi-bibliothèque. Installez PdfiumViewer. Rendez chaque page PDF en Bitmap à 200–300 DPI. Écrivez ce bitmap dans un fichier temporaire. Exécutez api.GetTextFromImage() sur le fichier temporaire. Supprimez le fichier temporaire. Répétez pour chaque page. Mettre en œuvre une gestion des erreurs pour les échecs partiels en cours de document. Gérez la mémoire explicitement — l'exemple ProcessLargeTiff force GC.Collect() tous les dix pages pour éviter les erreurs de mémoire insuffisante sur les documents volumineux.

Il s'agit du code de production réel, et non d'un exemple simplifié. Il fonctionne uniquement sous Windows, uniquement sur .NET Framework, et il nécessite une seconde dépendance commerciale ou open source qui requiert elle-même une gestion du déploiement.

Approche d'IronOCR

IronOCR lit les fichiers PDF nativement. Pas de bibliothèque secondaire, pas de fichiers temporaires, pas de boucle de rendu de page :

// Native PDF OCR — no PdfiumViewer, no temp files
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("scanned-report.pdf");   // native PDF support
var result = ocr.Read(input);

// Access page-by-page results
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Text}");
}

// Or produce a searchable PDF output
result.SaveAsSearchablePdf("searchable-report.pdf");

Les PDF protégés par mot de passe nécessitent un paramètre supplémentaire : input.LoadPdf("encrypted.pdf", Password: "secret"). Des plages de pages spécifiques utilisent input.LoadPdfPages("document.pdf", 1, 10). Le guide de saisie PDF et le tutoriel PDF consultable couvrent toutes les variantes.

L' exemple de reconnaissance optique de caractères (OCR) de PDF illustre le modèle complet, y compris le contrôle de confiance et la sortie structurée. L' exemple de PDF consultable illustre le cas d'utilisation de l'archivage de documents où les PDF numérisés sont indexés et consultables.

Prétraitement d'images et qualité des documents en situation réelle

Approche Tesseract .NET.SDK

Les moteurs Tesseract sont sensibles à la qualité de l'image. Les documents déformés, de faible résolution ou bruités produisent un résultat considérablement dégradé sans prétraitement. Tesseract .NET.SDK n'en propose aucun.

Le fichier de comparaison des migrations quantifie directement l'écart :

// Tesseract.Net.SDK: Non preprocessing available
// Direct OCR on problematic image = garbage output
using (var api = OcrApi.Create())
{
    api.Init(Languages.English);

    // Direct OCR on problematic image — poor results
    string text = api.GetTextFromImage(imagePath);
    return text;

    // To preprocess, you need:
    // 1. Install Emgu CV or OpenCvSharp
    // 2. Implement Hough transform for skew detection
    // 3. Implement affine rotation for deskew
    // 4. Implement FastNlMeansDenoising for noise reduction
    // 5. Handle all the native OpenCV dependencies
    // This is often 200+ lines of code
}
C#

Ce commentaire n'est pas une hyperbole. Une implémentation de correction de l'angle de qualité professionnelle utilisant OpenCV dans .NET comprend 100 à 200 lignes d'initialisation, de détection d'angle, de calcul matriciel et de transformation affine. Ce code doit ensuite être testé, maintenu et déployé — avec sa propre chaîne de dépendances native qui, là encore, ne fonctionne que sous Windows.

Approche d'IronOCR

IronOCR regroupe le prétraitement comme des méthodes API de premier ordre sur OcrInput. Les mêmes opérations qui nécessitent une intégration OpenCV dans Tesseract .NET.SDK sont ici de simples appels de méthode :

// Intégré preprocessing — no external library required
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadImage("skewed-invoice-scan.jpg");

input.Deskew();               // automatic angle detection and correction
input.DeNoise();              // scanner artifact removal
input.Contrast();             // contrast enhancement
input.Binarize();             // optimal threshold conversion
input.EnhanceResolution(300); // scale low-DPI images to 300 DPI

var result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
C#

Le guide de correction de la qualité d'image et le guide de correction des couleurs d'image documentent tous les filtres disponibles avec des comparaisons de précision avant/après. L' exemple de numérisation de faible qualité illustre les chiffres d'amélioration de la précision pour des conditions de documents typiques du monde réel.

Concernant plus particulièrement les flux de travail relatifs aux documents numérisés, le guide de traitement des documents numérisés aborde la détection de l'orientation, la gestion des documents multipages et l'optimisation du débit par lots dans un seul article.

Référence de mappage d'API

Tesseract.Net.SDKÉquivalent d'IronOCRNotes
Install-Package Tesseract.Net.SDKdotnet add package IronOcrIronOCR prend en charge tous les environnements d'exécution modernes.
using Patagames.Ocr;using IronOcr;
OcrApi.Create()new IronTesseract()IronTesseract est compatible avec les threads ; une instance par application
api.Init(Languages.English)ocr.Language = OcrLanguage.EnglishIronOCR utilise l'affectation de propriété, et non l'appel de méthode.
api.Init(Languages.English \N-)| Langues.Allemand)ocr.AddSecondaryLanguage(OcrLanguage.German)Aucune opération OU bit à bit requise
api.GetTextFromImage(path)ocr.Read("path.jpg").TextChaînez directement ou utilisez OcrInput
OcrImage.FromFile(path)new OcrInput("path.jpg")OcrInput accepte les fichiers, les flux, les tableaux d'octets, les URL et les bitmaps.
OcrImage.FromBitmap(bmp)input.LoadImage(bitmap)
api.SetImage(img) ; api.GetText()ocr.Read(input).TextOcrInput est l'équivalent de SetImage
api.GetMeanConfidence()result.ConfidenceRenvoie l'objet résultat
api.SetRectangle(x, y, w, h)new CropRectangle(x, y, w, h) passé à input.LoadImage()Guide OCR par région
api.SetVariable("tessedit_char_whitelist", x)ocr.Configuration.WhiteListCharacters = x
api.SetVariable("tessedit_char_blacklist", x)ocr.Configuration.BlackListCharacters = x
(no PDF support)input.LoadPdf("file.pdf")Aucune bibliothèque secondaire requise
(no preprocessing)input.Deskew() ; input.DeNoise(); etc.Tout le prétraitement intégré
(no structured output)result.Words, result.Lines, result.PagesCoordonnées et niveau de confiance au niveau du mot
(no searchable PDF)result.SaveAsSearchablePdf("out.pdf")Sortie PDF consultable en un seul appel

Lorsque les équipes envisagent de passer de Tesseract .NET.SDK à IronOCR

La mise à niveau .NET provoque ce problème

Le déclencheur le plus fréquent n'est pas l'insatisfaction quant à la qualité de la reconnaissance optique de caractères (OCR), mais une mise à niveau planifiée du .NET Framework qui se bloque au niveau de la couche OCR. Une équipe qui met à niveau une application de gestion de documents de .NET Framework 4.7 à .NET 8découvre que Tesseract.Net.SDK ne produit aucun assembly-cible compatible. La mise à niveau se bloque ou le service OCR est isolé dans un processus distinct fonctionnant uniquement sous Windows et communiquant via HTTP, ce qui introduit un saut réseau, un artefact de déploiement distinct et une couche de compatibilité qui doit être maintenue indéfiniment. Aucune de ces solutions n'est acceptable pour la plupart des équipes engagées dans un processus de mise à niveau. Le remplacement de Tesseract .NET.SDK par IronOCR supprime l'obstacle et permet une mise à niveau sans problème, car IronOCR fonctionne simultanément sur l'ancien .NET Framework 4.6.2+et la nouvelle cible .NET 8, ce qui signifie que le service peut être migré progressivement.

Conteneurisation du pipeline de traitement

Les charges de travail de traitement de documents font partie des premières candidates à la conteneurisation : elles sont sans état, limitées par le processeur et bénéficient d'une mise à l'échelle horizontale. Une équipe qui a conteneurisé le reste de son pipeline découvre que Tesseract .NET.SDK échoue lors de l'étape de création de l'image Docker lorsque l'image de base est Linux. Les options sont soit des conteneurs Windows — qui impliquent un coût de licence, des tailles d'image plus importantes et une incompatibilité avec la plupart des services Kubernetes gérés qui utilisent par défaut des pools de nœuds Linux — soit une bibliothèque qui prend réellement en charge Linux. IronOCR se déploie sur n'importe quel conteneur Linux doté d'un Dockerfile standard. Le guide de déploiement Docker fournit la configuration Dockerfile exacte pour les images de base Debian et Alpine.

Traitement par lots parallèle à grande échelle

Un pipeline de traitement de factures gérant 50 000 documents par jour avec quatre processus parallèles utilisant Tesseract .NET.SDK alloue un minimum de 400 Mo rien que pour les quatre instances du moteur chargées de données en anglais. Ajoutez une deuxième langue et cela double. Ajoutez un prétraitement via OpenCV et la consommation de mémoire augmente encore. Sur un serveur aux ressources limitées ou dans un déploiement conteneurisé avec une limite de mémoire de 2 Go par pod, ce calcul devient un obstacle au déploiement. Le modèle à instance unique et sécurisé pour les threads d'IronOCR élimine la multiplication de la mémoire par thread. Une instance de moteur gère quatre, huit ou seize processus parallèles avec un seul modèle de langage chargé une seule fois. L' exemple de multithreading illustre la configuration.

Flux de travail natifs PDF sans dépendance secondaire

Les organisations qui reçoivent des documents principalement au format PDF (demandes d'indemnisation, contrats, factures, formulaires fiscaux) sont confrontées à un problème complexe avec Tesseract .NET.SDK : elles doivent maintenir une bibliothèque de rendu PDF en plus de la bibliothèque OCR. Lorsque PdfiumViewer ou iText publie un correctif de sécurité, les deux bibliothèques nécessitent des mises à jour coordonnées et des tests de régression. Lorsque la bibliothèque PDF présente un bug lors du rendu d'une version PDF spécifique, le pipeline OCR produit du texte illisible sans cause apparente. La prise en charge native du format PDF par IronOCR réduit cette pile de deux bibliothèques à une seule. L'installation d'un seul package remplace les deux. La page de cas d'utilisation de la reconnaissance optique de caractères (OCR) pour les PDF décrit le flux de travail complet.

Exigences de déploiement en Enterprise

La licence Patagames pour Tesseract .NET.SDK inclut une assistance par e-mail et sur forum assurée par un seul développeur. Il n'y a pas de SLA, pas de délai de réponse garanti et pas de procédure d'escalade. Pour les applications dans les secteurs réglementés (santé, finance, gouvernement), les équipes d'approvisionnement exigent de plus en plus que les fournisseurs de logiciels fournissent des SLA documentés, des processus de divulgation de sécurité et des garanties de continuité organisationnelle. Patagames, tel qu'exploité par un développeur indépendant, ne peut satisfaire à ces exigences. IronOCR est développé par Iron Software, une entité commerciale disposant d'un support dédié, de processus de sécurité et de conditions de licence compatibles avec les exigences d'approvisionnement des Enterprise . La page relative aux licences documente les niveaux de support disponibles.

Considérations courantes en matière de migration

Modèle d'espace de noms et d'instance

La modification du code entre Tesseract .NET.SDK et IronOCR est superficielle. Remplacez using Patagames.Ocr; par using IronOcr;. Remplacez OcrApi.Create() par new IronTesseract(). Remplacez api.Init(Languages.English) par ocr.Language = OcrLanguage.English. La logique fonctionnelle du code appelant reste inchangée. Une migration simple d'extraction de données peut être effectuée en moins d'une heure.

// Before: Tesseract.Net.SDK
using Patagames.Ocr;

using (var api = OcrApi.Create())
{
    api.Init(Languages.English);
    return api.GetTextFromImage(imagePath);
}

// After: IronOCR
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage(imagePath);
return ocr.Read(input).Text;

Le tutoriel de lecture de texte à partir d'images et l'exemple OCR de base fournissent des exemples complets et exécutables avec validation des entrées et vérification de la fiabilité.

Suppression du dossier Tessdata

Après la migration, le dossier tessdata/ complet peut être supprimé du projet. IronOCR intègre les données linguistiques dans ses packages NuGet . Supprimez toutes les références .traineddata du .csproj, supprimez le répertoire tessdata des scripts de déploiement et supprimez toutes les étapes du pipeline CI/CD qui copient des fichiers traineddata. Les packages NuGet IronOcr.Languages.* installent les données linguistiques dans le cadre de l'étape normale de restauration du package - pas de téléchargement séparé, pas de configuration manuelle de dossier, pas de paramètres d'action de génération dans Visual Studio. Le guide multilingue couvre l'installation des packs de langue.

Simplification du pipeline PDF

Tout code ayant installé PdfiumViewer, iText ou Ghostscript.NET dans le but de rendre des pages PDF avant l'OCR peut être supprimé entièrement. Remplacez l'ensemble du pipeline multi-étapes render-to-temp-file-then-OCR par input.LoadPdf(pdfPath). Effectuez des tests spécifiques pour les PDF protégés par mot de passe, les plages de pages spécifiques et les documents volumineux de plus de 100 pages — ce sont les cas limites les plus susceptibles de faire apparaître des différences de comportement lors de la validation.

Modèle de thread et durée de vie de l'instance

Le code Tesseract.Net.SDK crée généralement une instance OcrApi par requête ou par thread pour éviter les problèmes de sécurité des threads. IronOCR est sécurisé pour les threads, donc l'instance IronTesseract doit être créée une seule fois (au démarrage de l'application ou en tant que singleton dans un conteneur DI) et réutilisée pour toutes les requêtes. Créer un nouveau IronTesseract() par requête gaspille le surcoût d'initialisation. Enregistrez-le en tant que singleton dans le conteneur de services d' ASP.NET Core et injectez-le là où c'est nécessaire.

Fonctionnalités supplémentaires d'IronOCR

Au-delà des fonctionnalités comparées ci-dessus, IronOCR offre des fonctionnalités absentes du kit de développement logiciel Tesseract .NET:

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

IronOCR prend en charge .NET Framework 4.6.2 jusqu'à la version actuelle de .NET 9et continuera à prendre en charge les futures versions de .NET au fur et à mesure de leur sortie. La bibliothèque cible netstandard2.0 pour une large compatibilité du framework et fournit des binaires natifs spécifiques à la plateforme pour Windows, Linux et macOSau sein du même package NuGet. Les équipes qui passent de .NET Framework à .NET 8ou .NET 9n'ont pas besoin de changer la bibliothèque OCR — la même référence de package IronOcr compile et s'exécute sur les deux. Tesseract .NET.SDK cible .NET Framework 2.0 à 4.5 et ne dispose d'aucune feuille de route publiée pour la prise en charge des versions modernes de .NET ; Sa structure est incompatible avec le rythme de publication actuel de Microsoft .NET , qui prévoit la sortie d'une nouvelle version majeure chaque année en novembre. Toute équipe qui prévoit de passer à une version supérieure à .NET Framework 4.5 — que ce soit dans six mois ou dans trois ans — devra remplacer Tesseract .NET.SDK à ce stade de transition, quels que soient les autres critères d'évaluation.

Conclusion

Tesseract .NET.SDK occupe un créneau spécifique et en déclin : c'est le choix idéal pour une équipe qui s'engage en permanence dans le déploiement sur Windows Server, .NET Framework 4.5 et qui a prévu de consacrer 15 à 40 heures de temps de développement à la configuration de tessdata, à la mise en œuvre du prétraitement en externe et à la construction d'un pipeline de rendu PDF à partir d'une bibliothèque distincte. Le coût ne se limite pas aux frais de licence. Le coût englobe tout ce qui l'entoure.

Le problème évoqué en introduction de cet article — la découverte en cours de mise à niveau qu'une dépendance OCR ne peut pas cibler .NET 8— n'est pas un cas isolé. C'est le résultat prévisible du choix d'une bibliothèque qui ne prend pas explicitement en charge les environnements d'exécution .NET modernes. IronOCR supprime entièrement cette contrainte : un seul package NuGet cible tous les environnements d'exécution de .NET Framework 4.6.2 à .NET 9, fonctionne sous Windows, Linux, macOSet Docker, et inclut le prétraitement et la prise en charge des PDF qui nécessiteraient autrement deux dépendances supplémentaires et des centaines de lignes de code d'intégration.

Pour les équipes utilisant actuellement Tesseract .NET.SDK dans une application .NET Framework 4.5 stable sans projet de modernisation de l'environnement d'exécution, le statu quo reste inchangé jusqu'à ce qu'une obligation de conteneurisation, une migration vers Linux ou une mise à niveau du framework impose cette modification. Pour les équipes qui modernisent activement leurs systèmes (conteneurisation des services, adoption de .NET 8, migration vers une infrastructure Linux ou mise à l'échelle des pipelines de traitement par lots de documents), le kit de développement logiciel Tesseract .NET est un obstacle, et non une base. Le passage de l'ancienne API à IronOCR ne nécessite que quelques heures de modifications de code. L'alternative consiste à maintenir indéfiniment un service exclusivement Windows, orphelin et marginal, au sein d'une architecture par ailleurs modernisée.

Le coût de la licence IronOCR est supérieur à celui du kit de développement logiciel Patagames, mais la véritable comparaison des coûts doit inclure les 15 à 40 heures de configuration de tessdata, l'intégration de bibliothèques de prétraitement externes et l'assemblage du pipeline de rendu PDF que Tesseract .NET.SDK exige avant le traitement d'un seul document en production. Ces frais de configuration sont documentés dans la comparaison ci-dessus et ne diminuent pas à mesure que l'équipe s'agrandit ou que le volume de documents augmente.

Veuillez noter: Ghostscript, PDFium, Tesseract, et iText sont des marques déposées de leurs propriétaires respectifs. Ce site n'est affilié, approuvé ou sponsorisé ni par Artifex Software, le Projet Chromium, Google ou iText Group. 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.

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise