Passer au contenu du pied de page
UTILISATION D'IRONOCR

Comment créer un SDK OCR .NET avec IronOCR

Supposons que vous ayez déjà eu besoin d'extraire du texte de documents numérisés, de fichiers PDF ou d'images. Dans ce cas, vous savez à quel point il peut être difficile de gérer différents formats de fichiers, plusieurs langues et des numérisations de faible qualité. C'est là qu'intervient la ROC (reconnaissance optique de caractères), qui transforme les images numérisées et les fichiers de documents en texte modifiable que vous pouvez manipuler par programmation.

Ce guide vous explique comment créer un kit de développement logiciel (SDK) OCR .NET performant avec IronOCR . Vous apprendrez à effectuer une reconnaissance optique de caractères (OCR), à extraire des données structurées et à générer des PDF interrogeables pour différents types de documents. Vous découvrirez comment traiter des PDF numérisés, des images et d'autres fichiers texte de manière rapide, fiable et parfaitement intégrée aux applications .NET sur ordinateur, navigateur web ou appareils mobiles.

Qu'est-ce qui fait d'IronOCR le kit de développement logiciel (SDK) OCR .NET idéal ?

La création d'une bibliothèque OCR à partir de zéro nécessite des mois de développement, de prétraitement des images et de tests approfondis. IronOCR élimine ces coûts supplémentaires en fournissant un kit de développement logiciel (SDK) OCR .NET complet qui prend en charge différents formats et s'intègre parfaitement aux applications .NET.

Le SDK prend en charge les aspects complexes de la reconnaissance de texte tout en offrant des fonctionnalités généralement réservées aux solutions d'entreprise :

  • Hautes performances sur différents formats de documents et d'images numérisées
  • Prise en charge de plus de 125 langues et reconnaissance de texte manuscrit
  • Binarisation adaptative, informations de police et prise en charge des cadres de délimitation pour la reconnaissance optique de caractères (OCR) zonale
  • Capacité à traiter les fichiers PDF numérisés, les formats d'image et les blocs de texte
  • Création instantanée de documents consultables avec calques de texte cachés

Contrairement aux implémentations Tesseract brutes, IronOCR fonctionne immédiatement sur les plateformes Windows, Linux, macOS et cloud, prenant en charge les API OCR, la reconnaissance assistée par IA et une intégration transparente sans configuration supplémentaire.

Premiers pas avec IronOCR

L'installation ne prend que quelques secondes via le gestionnaire de packages NuGet. Exécuter :

Install-Package IronOcr

Pour des instructions d'installation détaillées, reportez-vous à la documentation IronOCR . Une fois installé, l'extraction de texte à partir de documents numérisés devient simple :

using IronOcr;
public class OcrService
{
    private readonly IronTesseract _ocr;
    public OcrService()
    {
        _ocr = new IronTesseract();
    }
    public string ExtractText(string imagePath)
    {
        using var input = new OcrInput();
        input.LoadImage(imagePath);
        var result = _ocr.Read(input);
        return result.Text;
    }
}
using IronOcr;
public class OcrService
{
    private readonly IronTesseract _ocr;
    public OcrService()
    {
        _ocr = new IronTesseract();
    }
    public string ExtractText(string imagePath)
    {
        using var input = new OcrInput();
        input.LoadImage(imagePath);
        var result = _ocr.Read(input);
        return result.Text;
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ce code crée un service OCR réutilisable qui gère automatiquement différents formats d'image, notamment JPEG, PNG, TIFF et BMP, ainsi que les documents PDF et autres formats de documents.

Pour le tester, nous allons l'exécuter dans notre classe principale avec cette image d'exemple :

class Program
{
    static void Main(string[] args)
    {
        var ocrService = new OcrService();
        string imagePath = "test.png"; // Replace with your image path
        string extractedText = ocrService.ExtractText(imagePath);
        Console.WriteLine(extractedText);
    }
}
class Program
{
    static void Main(string[] args)
    {
        var ocrService = new OcrService();
        string imagePath = "test.png"; // Replace with your image path
        string extractedText = ocrService.ExtractText(imagePath);
        Console.WriteLine(extractedText);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Sortie

Comment créer un kit de développement logiciel (SDK) OCR .NET avec IronOCR : Figure 2 - Exemple de sortie console

Développement des fonctionnalités OCR de base

Les applications concrètes nécessitent bien plus qu'une simple extraction de texte. IronOCR offre des fonctionnalités complètes de traitement de documents :

// Async document processing with barcodes
 public async Task<ProcessedDocument> ProcessDocumentAsync(string filePath)
 {
     using var input = new OcrInput();
     LoadFile(input, filePath);
     input.DeNoise();
     input.Deskew();
     var result = await _ocr.ReadAsync(input);
     return new ProcessedDocument
     {
         Text = result.Text,
         Confidence = result.Confidence,
         Barcodes = result.Barcodes.Select(b => b.Value).ToList()
     };
 }
// Helper to load image or PDF
private void LoadFile(OcrInput input, string filePath)
{
    if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
        input.LoadPdf(filePath);
    else
        input.LoadImage(filePath);
}
// Model for processed documents with barcodes
public class ProcessedDocument
{
    public string Text { get; set; }
    public double Confidence { get; set; }
    public List<string> Barcodes { get; set; }
}
// Async document processing with barcodes
 public async Task<ProcessedDocument> ProcessDocumentAsync(string filePath)
 {
     using var input = new OcrInput();
     LoadFile(input, filePath);
     input.DeNoise();
     input.Deskew();
     var result = await _ocr.ReadAsync(input);
     return new ProcessedDocument
     {
         Text = result.Text,
         Confidence = result.Confidence,
         Barcodes = result.Barcodes.Select(b => b.Value).ToList()
     };
 }
// Helper to load image or PDF
private void LoadFile(OcrInput input, string filePath)
{
    if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
        input.LoadPdf(filePath);
    else
        input.LoadImage(filePath);
}
// Model for processed documents with barcodes
public class ProcessedDocument
{
    public string Text { get; set; }
    public double Confidence { get; set; }
    public List<string> Barcodes { get; set; }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cette implémentation gère plusieurs documents, applique un prétraitement d'image et extrait les codes-barres et le texte d'un même document. Le modèle asynchrone garantit des performances élevées dans les applications .NET.

Sortie

Comment créer un kit de développement logiciel (SDK) OCR .NET avec IronOCR : Figure 3 - Image d'entrée OCR vs. texte de sortie

Amélioration de la précision grâce aux fonctionnalités intégrées

Les capacités de prétraitement d'IronOCR améliorent considérablement la précision de la reconnaissance sur les documents du monde réel :

// OCR optimized for low-quality images
    public string ProcessLowQualityDocument(string filePath)
    {
        using var input = new OcrInput();
        LoadFile(input, filePath);
        // Preprocessing for low-quality documents
        input.DeNoise();
        input.Deskew();
        input.Scale(150);
        input.Binarize();
        input.EnhanceResolution(300);
        var result = _ocr.Read(input);
        return result.Text;
    }
// OCR optimized for low-quality images
    public string ProcessLowQualityDocument(string filePath)
    {
        using var input = new OcrInput();
        LoadFile(input, filePath);
        // Preprocessing for low-quality documents
        input.DeNoise();
        input.Deskew();
        input.Scale(150);
        input.Binarize();
        input.EnhanceResolution(300);
        var result = _ocr.Read(input);
        return result.Text;
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Chaque filtre cible des problèmes spécifiques liés à la qualité des documents. DeNoise() supprime les artefacts de numérisation, Deskew() corrige les pages inclinées et EnhanceResolution() améliore la netteté du texte flou.

Ces filtres fonctionnent de concert pour permettre une extraction de texte précise, même à partir de sources de mauvaise qualité. D'après les discussions sur Stack Overflow , un prétraitement approprié peut améliorer la précision de la reconnaissance optique de caractères (OCR) jusqu'à 40 %.

Fonctionnalités avancées du SDK d'extraction de données

IronOCR va au-delà de l'extraction de texte de base grâce à des fonctionnalités essentielles pour les applications SDK OCR .NET modernes :

// Create a searchable PDF from an image or PDF
  public void CreateSearchablePdf(string inputPath, string outputPath)
  {
      using var input = new OcrInput();
      LoadFile(input, inputPath);
      _ocr.Read(input).SaveAsSearchablePdf(outputPath);
  }
  // Extract structured data (phone numbers, emails, amounts) from text
  public List<string> ExtractStructuredData(string filePath)
  {
      using var input = new OcrInput();
      LoadFile(input, filePath);
      var result = _ocr.Read(input);
      var text = result.Text;
      var phoneNumbers = Regex.Matches(text, @"\+?\d[\d\s\-]{7,}\d")
                              .Select(m => m.Value).ToList();
      var emails = Regex.Matches(text, @"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}")
                        .Select(m => m.Value).ToList();
      var amounts = Regex.Matches(text, @"\$\d+(?:\.\d{2})?")
                         .Select(m => m.Value).ToList();
      return phoneNumbers.Concat(emails).Concat(amounts).ToList();
  }
// Create a searchable PDF from an image or PDF
  public void CreateSearchablePdf(string inputPath, string outputPath)
  {
      using var input = new OcrInput();
      LoadFile(input, inputPath);
      _ocr.Read(input).SaveAsSearchablePdf(outputPath);
  }
  // Extract structured data (phone numbers, emails, amounts) from text
  public List<string> ExtractStructuredData(string filePath)
  {
      using var input = new OcrInput();
      LoadFile(input, filePath);
      var result = _ocr.Read(input);
      var text = result.Text;
      var phoneNumbers = Regex.Matches(text, @"\+?\d[\d\s\-]{7,}\d")
                              .Select(m => m.Value).ToList();
      var emails = Regex.Matches(text, @"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}")
                        .Select(m => m.Value).ToList();
      var amounts = Regex.Matches(text, @"\$\d+(?:\.\d{2})?")
                         .Select(m => m.Value).ToList();
      return phoneNumbers.Concat(emails).Concat(amounts).ToList();
  }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Le code que nous avons écrit ici illustre deux opérations OCR clés. CreateSearchablePdf convertit un PDF ou une image numérisée en un document consultable avec du texte modifiable pour une reconnaissance de texte facile dans de multiples formats de documents.

ExtractStructuredData traite le même document numérisé pour en extraire des données, telles que des numéros de téléphone, des adresses e-mail et des montants, à partir de divers types de documents, permettant ainsi aux applications .NET de gérer efficacement les images numérisées, les fichiers texte et les documents PDF.

Mise en œuvre prête pour la production

Déployez IronOCR en toute confiance grâce à ses fonctionnalités de production intégrées :

public class ProductionOcrService
{
    private readonly IronTesseract _ocr;
    private readonly ILogger _logger;
    public ProductionOcrService(ILogger logger)
    {
        _logger = logger;
        _ocr = new IronTesseract();
        // Production configuration
        _ocr.Configuration.RenderSearchablePdfsAndHocr = true;
        _ocr.Configuration.ReadBarCodes = true;
    }
    public async Task<string> ProcessBatchAsync(string[] documents)
    {
        var results = new List<string>();
        // Parallel processing for performance
        await Parallel.ForEachAsync(documents, async (doc, ct) =>
        {
            try
            {
                var text = await ExtractTextAsync(doc);
                results.Add(text);
                _logger.LogInformation($"Processed: {doc}");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"Failed: {doc}");
            }
        });
        return string.Join("\n", results);
    }
}
public class ProductionOcrService
{
    private readonly IronTesseract _ocr;
    private readonly ILogger _logger;
    public ProductionOcrService(ILogger logger)
    {
        _logger = logger;
        _ocr = new IronTesseract();
        // Production configuration
        _ocr.Configuration.RenderSearchablePdfsAndHocr = true;
        _ocr.Configuration.ReadBarCodes = true;
    }
    public async Task<string> ProcessBatchAsync(string[] documents)
    {
        var results = new List<string>();
        // Parallel processing for performance
        await Parallel.ForEachAsync(documents, async (doc, ct) =>
        {
            try
            {
                var text = await ExtractTextAsync(doc);
                results.Add(text);
                _logger.LogInformation($"Processed: {doc}");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"Failed: {doc}");
            }
        });
        return string.Join("\n", results);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ce modèle illustre le traitement parallèle pour les opérations par lots, la journalisation structurée pour la surveillance et la gestion élégante des erreurs qui empêche les défaillances d'un seul document d'arrêter des lots entiers.

Application concrète : Traitement des factures

Voici comment les organisations utilisent IronOCR comme kit de développement logiciel OCR .NET pour automatiser le traitement des factures :

// Extract structured invoice data
    public Invoice ExtractInvoiceData(string invoicePath)
    {
        using var input = new OcrInput();
        LoadFile(input, invoicePath);
        // Preprocessing for documents
        input.DeNoise();
        input.Deskew();
        var result = _ocr.Read(input);
        var text = result.Text;
        return new Invoice
        {
            InvoiceNumber = ExtractInvoiceNumber(text),
            Date = ExtractDate(text),
            TotalAmount = ExtractAmount(text),
            RawText = text
        };
    }
    // --- Helper methods for invoice parsing ---
    private string ExtractInvoiceNumber(string text)
    {
        // Example: Invoice #: 12345
        var match = Regex.Match(text, @"Invoice\s*#?:?\s*(\S+)");
        return match.Success ? match.Groups[1].Value : null;
    }
    private DateOnly? ExtractDate(string text)
    {
        // Numeric dates
        var numericMatch = Regex.Match(text, @"\b(\d{1,2}/\d{1,2}/\d{2,4})\b");
        if (numericMatch.Success && DateTime.TryParse(numericMatch.Groups[1].Value, out var numericDate))
            return DateOnly.FromDateTime(numericDate);
        // Written-out dates
        var writtenMatch = 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 (writtenMatch.Success && DateTime.TryParse(writtenMatch.Value, out var writtenDate))
            return DateOnly.FromDateTime(writtenDate);
        return null;
    }
    private decimal? ExtractAmount(string text)
    {
        var match = Regex.Match(text, @"\$\s*(\d+(?:\.\d{2})?)");
        if (match.Success && decimal.TryParse(match.Groups[1].Value, out var amount))
            return amount;
        return null;
    }
// Extract structured invoice data
    public Invoice ExtractInvoiceData(string invoicePath)
    {
        using var input = new OcrInput();
        LoadFile(input, invoicePath);
        // Preprocessing for documents
        input.DeNoise();
        input.Deskew();
        var result = _ocr.Read(input);
        var text = result.Text;
        return new Invoice
        {
            InvoiceNumber = ExtractInvoiceNumber(text),
            Date = ExtractDate(text),
            TotalAmount = ExtractAmount(text),
            RawText = text
        };
    }
    // --- Helper methods for invoice parsing ---
    private string ExtractInvoiceNumber(string text)
    {
        // Example: Invoice #: 12345
        var match = Regex.Match(text, @"Invoice\s*#?:?\s*(\S+)");
        return match.Success ? match.Groups[1].Value : null;
    }
    private DateOnly? ExtractDate(string text)
    {
        // Numeric dates
        var numericMatch = Regex.Match(text, @"\b(\d{1,2}/\d{1,2}/\d{2,4})\b");
        if (numericMatch.Success && DateTime.TryParse(numericMatch.Groups[1].Value, out var numericDate))
            return DateOnly.FromDateTime(numericDate);
        // Written-out dates
        var writtenMatch = 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 (writtenMatch.Success && DateTime.TryParse(writtenMatch.Value, out var writtenDate))
            return DateOnly.FromDateTime(writtenDate);
        return null;
    }
    private decimal? ExtractAmount(string text)
    {
        var match = Regex.Match(text, @"\$\s*(\d+(?:\.\d{2})?)");
        if (match.Success && decimal.TryParse(match.Groups[1].Value, out var amount))
            return amount;
        return null;
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cette méthode traite quotidiennement des milliers de factures, en extrayant les champs clés pour leur saisie automatique dans les systèmes comptables.

Sortie

Comment créer un kit de développement logiciel (SDK) OCR .NET avec IronOCR : Figure 4 - Résultat OCR d'une facture

Conclusion

IronOCR transforme les applications .NET en solutions sophistiquées de traitement de documents sans la complexité de la création d'un système OCR à partir de zéro. Grâce à sa prise en charge étendue des langues, sa précision supérieure et ses fonctionnalités prêtes pour la production, il s'agit du kit de développement logiciel (SDK) OCR .NET complet auquel les développeurs font confiance pour les applications d'entreprise.

IronOCR propose des options de licence flexibles à partir de $liteLicense pour une utilisation par un seul développeur, avec des options évolutives pour les déploiements en entreprise. Le modèle sans redevance signifie qu'il n'y a pas de coûts supplémentaires lors de la distribution de vos applications SDK OCR à vos clients.

Prêt à créer votre kit de développement logiciel (SDK) OCR .NET ? Démarrez votre essai gratuit pour commencer dès aujourd'hui à créer des applications de production.

NuGet Installer avec NuGet

PM >  Install-Package IronOcr

Consultez IronOCR sur NuGet pour une installation rapide. Avec plus de 10 millions de téléchargements, il transforme le développement PDF avec C#. Vous pouvez également télécharger le DLL ou l'installateur Windows.

Questions Fréquemment Posées

Qu'est-ce que le SDK OCR .NET ?

Le SDK OCR .NET de IronOCR est une bibliothèque conçue pour intégrer des capacités de reconnaissance optique de caractères dans les applications C#, permettant aux développeurs d'extraire du texte à partir d'images, de PDF et de documents numérisés.

Quelles sont les principales fonctionnalités du SDK .NET de IronOCR ?

Le SDK .NET de IronOCR offre une API simple, un support pour plusieurs langues, une compatibilité multiplateforme, et des fonctionnalités avancées pour gérer divers formats de fichiers et des scans de faible qualité.

Comment IronOCR gère-t-il différentes langues ?

Le SDK .NET de IronOCR prend en charge plusieurs langues, permettant l'extraction et la reconnaissance de texte à partir de documents dans diverses langues sans nécessiter de configurations supplémentaires.

IronOCR peut-il traiter des scans de faible qualité ?

Oui, IronOCR est conçu pour gérer efficacement les scans de faible qualité, en employant des algorithmes avancés pour améliorer la précision de la reconnaissance de texte même dans des scénarios difficiles.

Le SDK .NET de IronOCR est-il multiplateforme ?

Le SDK .NET de IronOCR est multiplateforme, ce qui signifie qu'il peut être utilisé sur différents systèmes d'exploitation, le rendant polyvalent pour divers environnements de développement.

Quels formats de fichiers IronOCR supporte-t-il ?

IronOCR prend en charge un large éventail de formats de fichiers, y compris les images, les PDF, et les documents numérisés, offrant une flexibilité pour les tâches de reconnaissance de texte à travers différents médias.

Comment les développeurs peuvent-ils intégrer IronOCR dans leurs projets ?

Les développeurs peuvent facilement intégrer IronOCR dans leurs projets C# en utilisant son API simple d'utilisation, ce qui simplifie le processus d'ajout de fonctionnalités OCR aux applications.

Quels sont certains cas d'utilisation pour IronOCR ?

IronOCR peut être utilisé dans les systèmes de gestion de documents, la saisie de données automatisée, la numérisation de contenu, et toute application nécessitant l'extraction de texte à partir d'images ou de PDF.

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