Passer au contenu du pied de page
UTILISATION D'IRONOCR

Comment implémenter la reconnaissance optique de caractères (OCR) dans des projets GitHub en C# avec IronOCR ?

La recherche de solutions OCR sur GitHub aboutit souvent à une documentation fragmentée, à des configurations Tesseract complexes et à des projets qui n'ont pas été mis à jour depuis des années. Pour les développeurs C# qui ont besoin d'une extraction de texte fiable à partir d'images et de fichiers PDF, la navigation dans l'écosystème des référentiels peut prendre des heures qui seraient mieux employées à coder. De nombreux projets de reconnaissance optique de caractères open source nécessitent une gestion manuelle des fichiers binaires, le téléchargement de fichiers tessdata et un dépannage spécifique à chaque plateforme.

Ce tutoriel montre comment implémenter la fonctionnalité OCR dans les projets C# en utilisant IronOCR , une bibliothèque gérée qui élimine la surcharge de configuration courante avec les wrappers Tesseract bruts. Que ce soit pour créer des pipelines de traitement de documents ou ajouter la reconnaissance de texte à des applications existantes, ce guide fournit des exemples de code fonctionnels prêts à l'emploi pour tout projet OCR C# sur GitHub .

Comment débuter avec IronOCR?

IronOCR propose une bibliothèque .NET gérée et distribuée via NuGet, ce qui facilite son intégration dans n'importe quel dépôt GitHub. Contrairement aux wrappers OCR Tesseract open-source qui nécessitent une gestion manuelle des binaires et de la configuration tessdata, IronOCR gère ces dépendances en interne et fonctionne immédiatement sous Windows, Linux et macOS.

La bibliothèque gère des référentiels d'exemples officiels sur GitHub que les développeurs peuvent cloner et référencer. Ces exemples illustrent des applications concrètes, notamment la conversion d'images en texte , la prise en charge de plusieurs langues et le traitement des fichiers PDF. Les contributeurs peuvent tester les fonctionnalités immédiatement après le clonage, sans aucune configuration supplémentaire.

Pour commencer dans Visual Studio, installez IronOCR via le Package Manager NuGet :

Install-Package IronOcr
Install-Package IronOcr
SHELL

OCR C# GitHub: Implémentation de la reconnaissance de texte avec IronOCR: Image 1 - Installation

Une fois installé, ce package unique inclut tout ce qui est nécessaire pour les opérations de reconnaissance optique de caractères (OCR). La bibliothèque prend en charge .NET Framework 4.6.2+, .NET Core et .NET 5 à 10 pour une compatibilité maximale entre les différents types de projets.

Comment extraire du texte à partir d'images en C# ?

L'exemple suivant illustre l'extraction de texte de base à l'aide de la classe IronTesseract d'IronOCR. Ce moteur OCR lit différents formats d'images, notamment PNG, JPG, JPEG, BMP, GIF et TIFF :

using IronOcr;

// Initialize the OCR engine
var ocr = new IronTesseract();

// Load and process an image
using var input = new OcrInput("document-scan.png");

// Perform OCR and retrieve results
var result = ocr.Read(input);

// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;

// Initialize the OCR engine
var ocr = new IronTesseract();

// Load and process an image
using var input = new OcrInput("document-scan.png");

// Perform OCR and retrieve results
var result = ocr.Read(input);

// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
$vbLabelText   $csharpLabel

La classe IronTesseract sert de moteur OCR principal, construit sur une implémentation optimisée de Tesseract 5. Après la création d'une instance, l'objet OcrInput charge l'image cible à partir du disque, d'une URL ou d'un tableau d'octets. La méthode Read traite l'entrée et renvoie un OcrResult contenant le texte brut extrait ainsi qu'un pourcentage de confiance indiquant la précision de la reconnaissance. Des valeurs de confiance élevées (supérieures à 90 %) indiquent généralement que les documents sources sont propres et bien formatés.

L'objet OcrResult fournit un accès structuré au contenu reconnu. Au-delà du texte brut, les développeurs peuvent accéder à des mots, des lignes, des paragraphes et des caractères individuels, ainsi qu'à leur position et à leur indice de confiance. Chaque Word comprend les coordonnées du rectangle englobant, ce qui le rend précieux pour les applications qui nécessitent des données précises sur l'emplacement du texte, telles que l'annotation de documents ou l'extraction de champs de formulaire.

Entrée

OCR C# GitHub: Implémentation de la reconnaissance de texte avec IronOCR: Image 2 - Exemple d'entrée

Sortie

OCR C# GitHub: Implémentation de la reconnaissance de texte avec IronOCR: Image 3 - Sortie console

IronOCR prend également en charge le chargement d'images à partir de flux et de tableaux d'octets, ce qui est particulièrement utile dans les applications Web qui reçoivent des fichiers téléchargés. Cela signifie que le traitement OCR peut s'effectuer entièrement en mémoire sans écrire de fichiers temporaires sur le disque, réduisant ainsi la surcharge d'entrée/sortie dans les environnements à haut débit.

OCR C# GitHub: Implémentation de la reconnaissance de texte avec IronOCR: Image 4 - Caractéristiques

Comment le prétraitement des images améliore-t-il la précision de la reconnaissance optique des caractères ?

Les documents numérisés arrivent souvent de travers, bruyants ou à des résolutions sous-optimales. IronOCR intègre des filtres de prétraitement qui corrigent ces problèmes avant que le moteur OCR ne traite l'image :

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");

// Apply preprocessing filters to enhance scan quality
input.Deskew();                    // Straighten rotated images
input.DeNoise();                   // Remove digital artifacts
input.EnhanceResolution(225);      // Optimize DPI for OCR

var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");

// Apply preprocessing filters to enhance scan quality
input.Deskew();                    // Straighten rotated images
input.DeNoise();                   // Remove digital artifacts
input.EnhanceResolution(225);      // Optimize DPI for OCR

var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

La méthode Deskew détecte et corrige automatiquement la rotation de l'image jusqu'à 15 degrés, gérant le cas courant des pages placées légèrement décentrées sur un scanner. Le filtre DeNoise supprime les taches et les artefacts courants dans les documents photographiés ou les numérisations plus anciennes. EnhanceResolution met à l'échelle les images à faible résolution (DPI) jusqu'à la plage 200-300 DPI, ce qui est optimal pour la précision de la reconnaissance optique de caractères.

Ces filtres peuvent être chaînés et exécutés entièrement en mémoire sans nécessiter de fichiers temporaires. Dans de nombreux cas, l'application de plusieurs étapes de prétraitement peut améliorer considérablement les résultats de la reconnaissance de texte sur des documents présentant de graves problèmes de qualité tels qu'une encre délavée, du bruit de fond ou une distorsion de l'appareil photo. L'amélioration est surtout visible sur les documents numérisés à une résolution inférieure à 150 DPI ou sur les photographies prises dans des conditions d'éclairage inégales.

Comment la culture ciblée sur une région d'intérêt améliore-t-elle les performances ?

Pour les documents où seule une partie de l'image contient du texte pertinent, la définition d'une zone de recadrage réduit à la fois le temps de traitement et les risques de faux positifs dus au bruit de fond :

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput("invoice.png");

// Define crop region (x, y, width, height in pixels)
var cropArea = new CropRectangle(50, 100, 600, 300);
input.AddRegion(cropArea);

var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput("invoice.png");

// Define crop region (x, y, width, height in pixels)
var cropArea = new CropRectangle(50, 100, 600, 300);
input.AddRegion(cropArea);

var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Le ciblage d'une région spécifique est particulièrement précieux lors du traitement de documents structurés tels que des factures ou des formulaires, où les champs de texte occupent des positions connues. Cette approche peut réduire le temps de traitement OCR de 40 à 70 % par rapport à l'analyse de l'image complète, selon la proportion d'éléments non pertinents dans l'image.

Pouvez-vous extraire des BarCodes et des QR Codes en même temps que du texte?

IronOCR peut simultanément reconnaître du texte et scanner des codes-barres dans un même document. Cette double fonctionnalité est précieuse pour le traitement des factures, des étiquettes d'expédition et des documents d'inventaire :

using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;  // Enable barcode detection

using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);

// Access extracted text
Console.WriteLine($"Text: {result.Text}");

// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;  // Enable barcode detection

using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);

// Access extracted text
Console.WriteLine($"Text: {result.Text}");

// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
$vbLabelText   $csharpLabel

Lorsque ReadBarCodes est défini sur true, la détection des codes-barres s'active sans incidence significative sur le temps de traitement. La collection Barcodes dans le résultat contient la valeur et le type de format de chaque code-barres détecté. Les formats pris en charge incluent les codes QR, Code 128, EAN-13, UPC, Data Matrix et PDF417. Cette double capacité élimine le besoin de bibliothèques de lecture de codes-barres distinctes lors du traitement de documents contenant à la fois du texte lisible par l'homme et des codes lisibles par machine.

Entrée

OCR C# GitHub: Implémentation de la reconnaissance de texte avec IronOCR: Image 5 - Exemple d'image de code-barres

Sortie

OCR C# GitHub: Implémentation de la reconnaissance de texte avec IronOCR: Image 6 - Sortie de texte de code-barres dans la console

Pour les applications d'entrepôt et de logistique, la combinaison de l'extraction de texte et de codes-barres en une seule passe réduit les appels API et simplifie l'architecture de l'application. Une seule opération Read renvoie toutes les données reconnaissables du document, qu'il s'agisse de texte imprimé, d'écriture manuscrite ou de codes lisibles par machine. La propriété OcrResult.Barcodes expose une collection typée, de sorte que le code en aval peut itérer les résultats sans logique d'analyse spécifique au format.

Comment générer des PDF consultables à partir d'images numérisées?

La conversion de documents numérisés en PDF consultables permet la sélection, la copie et la recherche en texte intégral du texte au sein des systèmes de gestion de documents. Ce projet fonctionne avec différents formats d'image en entrée :

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);

// Export as searchable PDF with invisible text layer
result.SaveAsSearchablePdf("contract-searchable.pdf");
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);

// Export as searchable PDF with invisible text layer
result.SaveAsSearchablePdf("contract-searchable.pdf");
$vbLabelText   $csharpLabel

La méthode SaveAsSearchablePdf intègre une couche de texte invisible correspondant au contenu reconnu, préservant l'apparence originale du document tout en permettant les opérations sur le texte. Cela permet de produire des documents adaptés aux systèmes de gestion documentaire d'archivage et Enterprise . IronOCR prend également en charge l'exportation des résultats au format HTML ou JSON pour l'intégration avec les systèmes en aval.

Pour les documents de plusieurs pages, IronOCR traite chaque page individuellement et assemble le résultat dans un seul fichier. Les fichiers TIFF contenant plusieurs images sont gérés automatiquement, ce qui simplifie la conversion par lots des archives de documents numérisés. Le PDF obtenu préserve la mise en page visuelle du document numérisé original, tandis que la couche de texte intégrée rend chaque page entièrement consultable dans n'importe quel lecteur PDF ou plateforme de gestion de documents.

Comment utiliser IronOCR dans les applications multilingues ?

IronOCR prend en charge plus de 125 langues, dont l'anglais, l'espagnol, le français, l'allemand, le chinois, le japonais, l'arabe et bien d'autres. Les modules linguistiques s'installent via NuGet sous forme de packages distincts, ce qui permet de conserver une bibliothèque principale légère :

using IronOcr;

// Install-Package IronOcr.Languages.French
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;

using var input = new OcrInput("french-document.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

// Install-Package IronOcr.Languages.French
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;

using var input = new OcrInput("french-document.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Pour les documents contenant plusieurs langues sur la même page, IronOCR prend en charge le chargement simultané de plusieurs modèles de langue. Ceci est pertinent pour les applications internationalisées qui traitent des documents provenant de plusieurs régions sans avoir besoin de trier préalablement les fichiers par langue. Chaque pack de langue est maintenu en parallèle de la bibliothèque principale et prend en charge les mêmes fonctionnalités de prétraitement et de sortie.

Quelles sont les meilleures pratiques pour l'OCR dans les projets GitHub ?

Lors de la gestion de projets OCR sur GitHub, quelques décisions organisationnelles permettent d'améliorer l'expérience des contributeurs et la santé à long terme du projet. Ces pratiques s'appliquent que vous développiez un petit script utilitaire ou un service de traitement de documents pour une grande Enterprise .

Utilisez Git LFS pour les images de test volumineuses afin d'éviter de surcharger le dépôt. Les ressources binaires dans l'historique Git standard augmentent les temps de clonage et les coûts de stockage, notamment lorsque les jeux de données de test incluent des numérisations haute résolution. Stockez les clés de licence dans des variables d'environnement ou des secrets GitHub , jamais dans du code C# validé ; Veuillez vous référer au guide de configuration de la clé de licence pour obtenir les instructions d'installation.

Incluez des exemples d'images dans un dossier dédié test-data afin que les contributeurs puissent vérifier la fonctionnalité OCR sans avoir à utiliser leurs propres documents. Documentez les formats d'image pris en charge et les exigences de version .NET dans les fichiers README afin de réduire les questions lors de la prise en main. Créez et exécutez des tests dans des pipelines CI à l'aide de GitHub Actions pour confirmer que la bibliothèque fonctionne correctement dans les environnements cibles.

Pour les flux de travail GitHub Actions, IronOCR s'exécute dans des environnements conteneurisés sur des systèmes d'exécution Windows et Linux. Consultez le guide de déploiement Linux pour obtenir des informations détaillées sur la configuration lorsque vous ciblez Ubuntu ou d'autres systèmes d'exploitation non Windows.

Quelles sont vos prochaines étapes ?

IronOCR apporte une reconnaissance de texte fiable aux projets C# GitHub grâce à une bibliothèque distribuée via NuGet qui gère la configuration de Tesseract, le prétraitement, la détection des codes-barres et la prise en charge multilingue sans dépendances binaires externes. Les exemples de code de ce guide couvrent les principaux cas d'utilisation : extraction de texte de base, prétraitement d'images, numérisation de codes-barres, création de PDF consultables et traitement multilingue.

Pour découvrir l'ensemble des fonctionnalités, commencez un essai gratuit sans aucune contrainte de temps ni obligation de carte de crédit. Lorsque vous serez prêt pour le déploiement en production, examinez les options de licence qui couvrent les développeurs individuels jusqu'aux équipes Enterprise .

Ressources connexes pour approfondir vos connaissances :

OCR C# GitHub: Implémentation de la reconnaissance de texte avec IronOCR: Image 7 - Licence

Questions Fréquemment Posées

Qu'est-ce qu'IronOCR ?

IronOCR est une bibliothèque OCR .NET pour C# qui extrait le texte des images et des PDF grâce à un moteur Tesseract 5 optimisé. Elle s'installe via NuGet et gère les dépendances binaires en interne, sans nécessiter de configuration manuelle de tessdata.

Comment installer IronOCR dans un projet C# ?

Exécutez la commande `Install-Package IronOCR dans la console du gestionnaire de packages NuGet de Visual Studio, ou utilisez l'interface utilisateur du gestionnaire de packages NuGet pour rechercher IronOCR. Le package inclut tous les fichiers binaires nécessaires pour Windows, Linux et macOS.

IronOCR fonctionne-t-il sous Linux pour GitHub Actions ?

Oui, IronOCR prend en charge les exécuteurs Linux dans GitHub Actions. Consultez le guide de déploiement Linux à l'adresse https://ironsoftware.com/csharp/ocr/how-to/linux/ pour connaître les dépendances requises sur Ubuntu et les autres distributions.

IronOCR peut-il lire les codes-barres et les codes QR ?

Oui. Définissez ocr.Configuration.ReadBarCodes sur true avant d'appeler Read(). La collection OcrResult.Barcodes contient la valeur et le format de chaque code détecté, prenant en charge les formats QR, Code 128, EAN-13, UPC, Data Matrix et PDF417.

Comment générer un PDF consultable à partir d'une image numérisée ?

Après avoir appelé ocr.Read(input), utilisez result.SaveAsSearchablePdf("output.pdf") pour créer un PDF avec une couche de texte invisible superposée à la numérisation originale. Le format de sortie est adapté aux systèmes d'archivage et de gestion documentaire d'entreprise.

IronOCR prend-il en charge d'autres langues que l'anglais ?

Oui. IronOCR prend en charge plus de 125 langues grâce à des modules linguistiques NuGet dédiés. Installez le module linguistique (par exemple, `Install-Package IronOCR), puis définissez `ocr.Language = OcrLanguage.French` avant le traitement.

Comment dois-je stocker les clés de licence IronOCR dans un dépôt GitHub ?

Stockez les clés de licence dans GitHub Secrets et injectez-les comme variables d'environnement dans votre workflow GitHub Actions. Ne jamais inclure directement les chaînes de caractères des clés de licence dans le code C# ou les fichiers appsettings.

Quels formats d'image IronOCR prend-il en charge ?

IronOCR prend en charge les formats PNG, JPG, JPEG, BMP, GIF, TIFF (y compris multi-images), PDF et autres formats courants. Les images peuvent être chargées à partir de chemins de fichiers, d'URL, de flux ou de tableaux d'octets.

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