IRONSOFTWAREHOME
UTILISATION D'IRONOCR

Kit de développement logiciel (SDK) OCR .NET : une bibliothèque de reconnaissance de texte pour C#

Kannaopat Udonpant
Kannapat Udonpant
Updated: 21 avril 2026

Un kit de développement logiciel OCR .NET OCR ) permet aux applications C# et .NET d'extraire par programmation du texte à partir d'images, de PDF numérisés et d'autres formats de documents. IronOCR est un kit de développement logiciel (SDK) OCR .NET prêt pour la production qui intègre un moteur Tesseract 5 optimisé avec des filtres de prétraitement, la lecture de codes-barres, la sortie PDF consultable et la prise en charge de plus de 125 langues – le tout accessible via une API C# propre fonctionnant sous Windows, Linux, macOS et sur les plateformes cloud.

Pourquoi IronOCR est-il le kit de développement logiciel (SDK) OCR .NET idéal pour votre projet ?

Créer un système de reconnaissance de texte à partir de zéro implique de gérer des chaînes de prétraitement d'images, des fichiers de données linguistiques, des modèles de traitement multithread et l'analyse syntaxique des résultats — des mois de travail avant même d'extraire votre premier mot. IronOCR élimine ces frais généraux en fournissant un moteur éprouvé que votre équipe peut intégrer à un projet en quelques minutes.

Principales fonctionnalités qui le distinguent des liaisons Tesseract brutes :

  • Reconnaissance de plus de 125 langues et systèmes d'écriture, y compris le texte manuscrit Filtres intégrés : suppression du bruit, redressement de la distorsion, binarisation, amélioration de la résolution et correction du contraste
  • Détection des codes-barres et des codes QR lors d'une même passe de lecture
  • Génération de PDF consultables avec des calques de texte invisibles pour les flux de travail d'archivage
  • Traitement par lots asynchrone et parallèle pour les pipelines à haut débit
  • OCR zonal pour cibler des régions spécifiques de la page et réduire le temps de traitement
  • Prise en charge multiplateforme sur Windows, Linux, macOS, Docker et Azure

Selon la documentation du projet Tesseract OCR , Tesseract brut nécessite une configuration manuelle pour les packs de langue, les paramètres DPI et les modes de sortie. IronOCR gère tout cela automatiquement, vous permettant de vous concentrer sur la signification du texte extrait plutôt que sur la manière de l'extraire.

Comment IronOCR se compare-t-il à Tesseract brut ?

Tesseract brut via un wrapper P/Invoke ou le paquet NuGet Tesseract vous rend responsable de : télécharger et placer les fichiers de langue tessdata, sélectionner le bon mode de segmentation de page, gérer vous-même la division des TIFF et PDF multipages, et configurer le threading si vous souhaitez un traitement parallèle. Aucun de ces détails n'est spécifique à votre problème d'entreprise.

IronOCR enveloppe toute cette tuyauterie. Vous bénéficiez d'une interface API typée, d'une gestion automatique des données tessdata, d'une fonction intégrée de division et de recombinaison de PDF et d'un moteur thread-safe réutilisable pour plusieurs requêtes. En contrepartie, une licence payante est requise pour une utilisation en production ; la page relative aux licences affiche les différents niveaux de prix actuels, y compris une licence de développement gratuite.

Pour les équipes qui ont besoin de dépendances exclusivement open source, l'utilisation de Tesseract brut Plus à un prétraitement personnalisé constitue une solution viable. Pour les équipes qui ont besoin de déployer rapidement une solution OCR fiable, IronOCR réduit la surface d'intégration à quelques lignes de C#.

Comment installer le SDK IronOCR .NET ?

L'installation s'effectue via NuGet, le gestionnaire de packages standard .NET . Exécutez la commande suivante dans votre répertoire de projet :

PM > Install-Package IronOcr

Pour les utilisateurs de Visual Studio, recherchez IronOcr dans l'interface graphique du Package Manager NuGet et installez à partir de là. Pour connaître toutes les options d'installation, y compris les références DLL manuelles, consultez la documentation d'installation IronOCR .

Après l'installation, ajoutez la clé de licence au démarrage de votre application ou appsettings.json. Vous pouvez démarrer un essai gratuit pour obtenir une clé d'essai qui débloque toutes les fonctionnalités pendant la période d'évaluation.

Vérification de l'installation

Un rapide contrôle de bon fonctionnement après l'installation confirme que tout est correctement câblé. Créer une application console ciblant .NET 10 :

using IronOcr;

// Minimal smoke test -- reads a single image and prints extracted text
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("sample.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);

Si du texte apparaît dans la console, le SDK est installé et la clé de licence est valide. Vous êtes prêt à mettre en place des flux de production.

Comment extraire du texte d'images et de PDF en C#?

Le modèle d'extraction principal est cohérent pour tous les types d'entrée. Vous créez une instance IronTesseract, chargez le contenu dans un objet OcrInput, et appelez Read(). IronOCR détecte automatiquement le format de fichier à partir de son extension ; ainsi, le même chemin de code gère les formats JPEG, PNG, TIFF, BMP et PDF multipages.

using IronOcr;

// Reusable OCR service encapsulating the IronTesseract engine
public class OcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ExtractText(string filePath)
    {
        using var input = new OcrInput();

        // LoadPdf for PDF files; LoadImage for raster formats
        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        return _ocr.Read(input).Text;
    }

    public async Task<string> ExtractTextAsync(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        var result = await _ocr.ReadAsync(input);
        return result.Text;
    }
}

Point d'entrée principal pour exercer le service :

using IronOcr;

var service = new OcrService();
string text = await service.ExtractTextAsync("invoice.pdf");
Console.WriteLine(text);

L'instance IronTesseract est thread-safe et conçue pour être réutilisée. Créez-le une seule fois au démarrage de l'application (via l'injection de dépendances dans ASP.NET Core, par exemple) plutôt que de l'instancier à chaque requête.

Pour les PDF multipages, result.Pages vous donne un accès par page au texte, au score de confiance et aux boîtes englobantes. Consultez le guide OCR PDF multipage pour des détails sur l'itération page par page.

Comment améliorer la précision de la reconnaissance optique de caractères (OCR) grâce aux filtres de prétraitement ?

Les numérisations brutes provenant de scanners à plat, d'appareils photo de smartphones ou de télécopieurs souffrent fréquemment de bruit, de rotation, d'un faible contraste et d'une résolution insuffisante. Le pipeline de correction de la qualité d'image d'IronOCR traite chaque problème grâce à des filtres ciblés que vous enchaînez avant l'appel de lecture.

using IronOcr;

public class AccuracyOptimizedOcr
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ProcessLowQualityDocument(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        // Chain preprocessing filters in order of operation
        input.DeNoise();              // Remove scan artifacts and speckling
        input.Deskew();               // Correct page tilt up to 35 degrees
        input.Scale(150);             // Enlarge small text for better recognition
        input.Binarize();             // Convert to black/white for cleaner edges
        input.EnhanceResolution(300); // Sharpen blurry or low-DPI input

        var result = _ocr.Read(input);

        // Confidence below 70 often signals a preprocessing mismatch
        if (result.Confidence < 70)
            Console.WriteLine($"Warning: low confidence ({result.Confidence:F1}%)");

        return result.Text;
    }
}

Guide de sélection des filtres :

  • DeNoise() -- à utiliser pour les numérisations avec des taches importantes ou des artefacts de compression
  • Deskew() -- à utiliser lorsque les documents sont photographiés sous un angle ; voir la détection de rotation de page pour la détection automatique
  • Scale() -- à utiliser pour les petites impressions ou les entrées inférieures à 150 DPI ; Les valeurs de 150 à 200 donnent généralement les meilleurs résultats.
  • Binarize() -- à utiliser pour les arrière-plans colorés ou en dégradé ; convertit l'image en noir et blanc strict
  • EnhanceResolution() -- à utiliser pour le texte flou ou à faible contraste ; L'objectif est de 300 DPI, considéré comme le point d'équilibre optimal du Tesseract.

Les recherches publiées dans l' International Journal on Document Analysis and Recognition montrent systématiquement que la binarisation et le redressement sont les deux étapes de prétraitement ayant le plus grand impact sur l'amélioration des taux de reconnaissance de caractères. Appliquez les deux comme base pour tout pipeline de production.

Filtres de prétraitement IronOCR et leurs principaux cas d'utilisation
FiltreProblème résoluQuand postuler
DeNoise()Artefacts de numérisation, bruit de speckleTout scanner à plat ou fax
Deskew()Inclinaison et rotation de la pageDocuments photographiés ou mal alignés
Scale()Texte de petite taille ou faible résolutionEntrée inférieure à 150 DPI
Binarize()Fonds colorés, dégradésPapier de couleur ou formulaires filigranés
Améliorer la résolution()Flou et faible contrasteCaptures d'écran et fichiers JPEG compressés

Comment construire un pipeline de traitement par lots pour la production ?

L'extraction d'un seul document est simple, mais les scénarios de production impliquent des centaines, voire des milliers de fichiers arrivant dans des files d'attente, des dossiers partagés ou un stockage cloud. L'API asynchrone et le moteur thread-safe d'IronOCR le rendent adapté aux charges de travail parallèles.

using IronOcr;
using Microsoft.Extensions.Logging;

public class ProductionOcrService
{
    private readonly IronTesseract _ocr;
    private readonly ILogger<ProductionOcrService> _logger;

    public ProductionOcrService(ILogger<ProductionOcrService> logger)
    {
        _logger = logger;
        _ocr = new IronTesseract
        {
            Configuration =
            {
                RenderSearchablePdfsAndHocr = true,
                ReadBarCodes = true
            }
        };
    }

    public async Task<IReadOnlyList<string>> ProcessBatchAsync(
        IEnumerable<string> filePaths,
        int maxDegreeOfParallelism = 4)
    {
        var results = new System.Collections.Concurrent.ConcurrentBag<string>();

        var options = new ParallelOptions
        {
            MaxDegreeOfParallelism = maxDegreeOfParallelism
        };

        await Parallel.ForEachAsync(filePaths, options, async (filePath, ct) =>
        {
            try
            {
                using var input = new OcrInput();

                if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
                    input.LoadPdf(filePath);
                else
                    input.LoadImage(filePath);

                var result = await _ocr.ReadAsync(input);
                results.Add(result.Text);
                _logger.LogInformation("Processed {FilePath} at {Confidence:F1}% confidence",
                    filePath, result.Confidence);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "OCR failed for {FilePath}", filePath);
                results.Add(string.Empty);
            }
        });

        return results.ToList();
    }

    public void CreateSearchablePdf(string inputPath, string outputPath)
    {
        using var input = new OcrInput();

        if (inputPath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(inputPath);
        else
            input.LoadImage(inputPath);

        _ocr.Read(input).SaveAsSearchablePdf(outputPath);
        _logger.LogInformation("Searchable PDF written to {OutputPath}", outputPath);
    }
}

Le plafond MaxDegreeOfParallelism empêche l'épuisement de la mémoire lorsque les fichiers sont volumineux. La valeur 4 fonctionne bien sur un serveur à quatre cœurs ; N'augmentez cette valeur qu'après avoir analysé l'utilisation de la mémoire. Pour les déploiements Azure Functions ou AWS Lambda, réglez la concurrence sur 1 par instance de fonction et échelonnez horizontalement à la place.

CreateSearchablePdf génère un PDF où l'image originale est conservée comme couche visible et le texte reconnu est intégré de manière invisible en dessous. Cela permet la recherche en texte intégral dans les visionneuses PDF et l'indexation par les moteurs de recherche — une exigence courante dans les systèmes de gestion de documents.

Suivi des scores de confiance en production

Chaque OcrResult expose une propriété Confidence (0-100) qui reflète la certitude du moteur concernant le texte reconnu. Le suivi de cette métrique dans votre infrastructure de journalisation vous permet de recevoir un signal d'alerte précoce en cas de dégradation de la qualité des documents, par exemple si l'étalonnage d'un scanner dérive ou si un nouveau fournisseur de documents envoie des numérisations à une résolution inférieure à celle attendue.

Une stratégie de seuil pratique : enregistrer un avertissement lorsque le niveau de confiance est inférieur à 80, déclencher une nouvelle tentative de prétraitement lorsque le niveau est inférieur à 70 et signaler les documents pour une vérification humaine lorsque le niveau est inférieur à 60. Cette approche par paliers permet de détecter les problèmes de qualité avant qu'ils ne provoquent une corruption silencieuse des données dans les systèmes en aval.

La documentation Microsoft .NET sur la journalisation couvre les modèles ILogger utilisés dans le service par lots ci-dessus pour les équipes intégrant le conteneur DI intégré d'ASP.NET Core.

Comment extraire des données structurées à partir de documents numérisés ?

L'extraction de texte est la première étape. La deuxième consiste à analyser ce texte et à le convertir en champs exploitables par votre application. Ce modèle combine le passage de lecture d'IronOCR avec le Regex de .NET pour extraire des données structurées des factures, des formulaires et des rapports.

using IronOcr;
using System.Text.RegularExpressions;

public record Invoice(
    string? InvoiceNumber,
    DateOnly? Date,
    decimal? TotalAmount,
    string RawText
);

public class InvoiceOcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public Invoice ExtractInvoiceData(string invoicePath)
    {
        using var input = new OcrInput();

        if (invoicePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(invoicePath);
        else
            input.LoadImage(invoicePath);

        input.DeNoise();
        input.Deskew();

        var result = _ocr.Read(input);
        string text = result.Text;

        return new Invoice(
            InvoiceNumber: ExtractInvoiceNumber(text),
            Date: ExtractDate(text),
            TotalAmount: ExtractAmount(text),
            RawText: text
        );
    }

    private static string? ExtractInvoiceNumber(string text)
    {
        var match = Regex.Match(text, @"Invoice\s*#?:?\s*(\S+)", RegexOptions.IgnoreCase);
        return match.Success ? match.Groups[1].Value : null;
    }

    private static DateOnly? ExtractDate(string text)
    {
        // Numeric format: MM/DD/YYYY
        var numeric = Regex.Match(text, @"\b(\d{1,2}/\d{1,2}/\d{2,4})\b");
        if (numeric.Success && DateTime.TryParse(numeric.Groups[1].Value, out var d1))
            return DateOnly.FromDateTime(d1);

        // Written format: January 15, 2025
        var written = Regex.Match(text,
            @"\b(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2}),?\s+(\d{4})\b",
            RegexOptions.IgnoreCase);
        if (written.Success && DateTime.TryParse(written.Value, out var d2))
            return DateOnly.FromDateTime(d2);

        return null;
    }

    private static decimal? ExtractAmount(string text)
    {
        var match = Regex.Match(text, @"\$\s*(\d+(?:\.\d{2})?)");
        return match.Success && decimal.TryParse(match.Groups[1].Value, out var amt)
            ? amt
            : null;
    }
}

Cette approche s'accorde bien avec l'OCR zonal lorsque vous savez exactement où chaque champ apparaît sur un formulaire. En fournissant un rectangle de délimitation, vous évitez la reconnaissance de la page entière et ciblez uniquement la région contenant le numéro de facture ou le total, ce qui réduit considérablement le temps de traitement des documents à mise en page fixe.

Pour des scénarios d'extraction plus avancés, notamment pour les tableaux et les formulaires structurés, consultez les exemples d'extraction de données IronOCR sur le site du produit.

Comment gérer la reconnaissance optique de caractères multilingue en .NET?

De nombreuses organisations traitent des documents dans plusieurs langues : formulaires d'import/export, contrats internationaux ou documents clients multilingues. IronOCR gère cela en vous permettant de configurer le pack de langue avant l'appel de lecture.

using IronOcr;

// Configure multi-language recognition
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;  // Swap for any of 125+ supported languages

// For mixed-language documents, combine language packs
ocr.AddSecondaryLanguage(OcrLanguage.German);

using var input = new OcrInput();
input.LoadPdf("multilingual-contract.pdf");
var result = ocr.Read(input);
Console.WriteLine(result.Text);

La page d'assistance linguistique IronOCR répertorie plus de 125 packs de langue disponibles avec les instructions de téléchargement. Les packs de langue sont livrés sous forme de packages NuGet (par exemple, IronOcr.Languages.German) afin qu'ils s'intègrent au même flux de gestion de paquets que vous utilisez déjà.

Pour les jeux de caractères autres que l'alphabet latin (arabe, chinois, japonais, coréen), IronOCR propose des modèles optimisés qui gèrent le sens d'écriture de droite à gauche et les écritures idéographiques. Consultez le guide OCR CJK pour plus de détails sur la configuration.

Quelles sont vos prochaines étapes ?

Vous disposez désormais des modèles nécessaires pour ajouter une fonction OCR de qualité professionnelle à n'importe quelle application .NET 10 : extraction de texte de base, prétraitement pour les numérisations difficiles, traitement par lots asynchrone, analyse de données structurées et prise en charge multilingue.

À partir d'ici, explorez ces domaines en fonction des besoins de votre projet :

Commencez par la licence d'essai gratuite pour évaluer l'ensemble des fonctionnalités sur vos propres documents avant de vous engager sur un abonnement.

NuGetInstaller avec NuGet

PM > Install-Package IronOcr

Install IronOCR by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.

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