Passer au contenu du pied de page
UTILISATION D'IRONOCR

Comment effectuer une reconnaissance optique de caractères (OCR) à partir d'un PDF en C# : extraire du texte de documents numérisés avec .NET

Les documents PDF numérisés représentent un défi constant pour les développeurs .NET : le texte n'existe que sous forme d'images, ce qui rend impossible la recherche, la copie ou le traitement par programmation. La reconnaissance optique de caractères (OCR) résout ce problème en convertissant les images numérisées en données modifiables et consultables, transformant ainsi les documents papier, les images capturées par appareil photo ou tout fichier PDF basé sur une image en texte lisible par machine. Que l'objectif soit de numériser des archives papier, d'automatiser l'extraction de données ou de construire des chaînes de traitement de documents, la capacité d'effectuer une reconnaissance optique de caractères (OCR) sur des fichiers PDF en C# est une fonctionnalité essentielle.

IronOCR est une bibliothèque OCR .NET basée sur le moteur Tesseract 5 avec des améliorations supplémentaires en matière de précision. Il permet aux développeurs d'extraire du texte de n'importe quel document PDF — numérisé ou non — avec un nombre réduit de lignes de code. Cet article décrit les principaux flux de travail : OCR PDF de base, traitement sélectif des pages, extraction ciblée par région et prétraitement d'images pour les numérisations complexes.

Comment effectuer une reconnaissance optique de caractères (OCR) sur un PDF en C# ?

La méthode la plus rapide pour extraire du texte PDF dans .NET commence par l'installation IronOCR via NuGet . Ouvrez un terminal dans le répertoire de votre projet et exécutez :

dotnet add package IronOcr
dotnet add package IronOcr
SHELL

Une fois le package installé, le programme suivant, exécuté au niveau supérieur, lit un PDF numérisé et imprime le texte extrait :

using IronOcr;

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

// Load the PDF and perform OCR
using var input = new OcrInput();
input.LoadPdf("scanned-report.pdf");

// Run recognition
OcrResult result = ocr.Read(input);

// Access the extracted text
string text = result.Text;
Console.WriteLine(text);
using IronOcr;

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

// Load the PDF and perform OCR
using var input = new OcrInput();
input.LoadPdf("scanned-report.pdf");

// Run recognition
OcrResult result = ocr.Read(input);

// Access the extracted text
string text = result.Text;
Console.WriteLine(text);
$vbLabelText   $csharpLabel

La classe IronTesseract encapsule Tesseract 5 avec des optimisations .NET-native pour les cibles .NET Core et .NET Framework . L'objet OcrInput gère le chargement des PDF et le rendu interne des pages. Lorsque Read est appelé, le processus OCR analyse chaque page et renvoie un OcrResult contenant le texte extrait complet, Plus que des données structurées sur les paragraphes, les lignes, les mots et leurs coordonnées en pixels.

Le résultat peut être enregistré dans un fichier texte, transmis à un processus de traitement ultérieur, stocké dans une base de données ou intégré à un pipeline d'indexation de documents. Pour plus d'informations sur le moteur sous-jacent, consultez la documentation de Tesseract OCR et la référence de l'API IronOCR .

Entrée

How to OCR a PDF: Extract Text from Scanned Documents with C# .NET OCR PDF: Image 1 - Sample PDF Input

Sortie

Comment effectuer une reconnaissance optique de caractères (OCR) sur un PDF : extraire du texte de documents numérisés avec C# .NET OCR PDF : Image 2 - Sortie console

Comment lire des pages spécifiques d'un fichier PDF ?

Traiter chaque page d'un long document est une perte de temps et de mémoire alors que seules certaines pages contiennent des informations pertinentes. IronOCR vous permet de cibler des pages spécifiques en passant des index de page à base zéro à LoadPdf :

using IronOcr;
using System.Collections.Generic;

var ocr = new IronTesseract();

// Specify pages to process (zero-based: 0 = first page)
var targetPages = new List<int> { 0, 2, 4 };

using var input = new OcrInput();
input.LoadPdf("lengthy-document.pdf", pageIndices: targetPages);

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
using System.Collections.Generic;

var ocr = new IronTesseract();

// Specify pages to process (zero-based: 0 = first page)
var targetPages = new List<int> { 0, 2, 4 };

using var input = new OcrInput();
input.LoadPdf("lengthy-document.pdf", pageIndices: targetPages);

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

Le chargement sélectif des pages réduit à la fois le temps de traitement et la consommation de mémoire, ce qui est important lors du traitement d'archives de plusieurs centaines de pages où seules quelques pages contiennent les données nécessaires. La convention d'indexation à partir de zéro correspond aux collections .NET standard : la page d'index 0 correspond à la première page du document.

Pour les documents dont les pages concernées ne sont pas connues à l'avance, envisagez d'effectuer d'abord une première analyse rapide de l'ensemble du document avec une résolution DPI réduite afin d'identifier les numéros de page, puis une seconde analyse avec les paramètres complets uniquement sur ces pages.

Pour en savoir plus sur le contrôle au niveau de la page, consultez la documentation sur la sélection de pages IronOCR .

Comment extraire des données d'une région spécifique d'une page ?

Le traitement des factures, la numérisation des formulaires et l'analyse de documents structurés nécessitent souvent l'extraction de texte à partir d'une zone définie plutôt que la numérisation d'une page entière. IronOCR prend en charge l'OCR ciblé par région via le paramètre ContentAreas, qui accepte un tableau d'objets Rectangle spécifiant les parties de chaque page à analyser :

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();

// Define the scan region: X, Y, Width, Height (all in pixels from top-left)
var invoiceFields = new Rectangle[]
{
    new Rectangle(130, 290, 250, 50)   // Invoice number field
};

using var input = new OcrInput();
input.LoadPdf("invoice.pdf", contentAreas: invoiceFields);

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

var ocr = new IronTesseract();

// Define the scan region: X, Y, Width, Height (all in pixels from top-left)
var invoiceFields = new Rectangle[]
{
    new Rectangle(130, 290, 250, 50)   // Invoice number field
};

using var input = new OcrInput();
input.LoadPdf("invoice.pdf", contentAreas: invoiceFields);

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

Le constructeur Rectangle prend quatre paramètres entiers : la coordonnée X, la coordonnée Y, la largeur et la hauteur -- toutes mesurées en pixels à partir du coin supérieur gauche de la page rendue. Cibler une petite région plutôt qu'une page entière réduit à la fois le temps de reconnaissance optique de caractères et le risque que le moteur capte du bruit environnant ou des champs de texte sans rapport.

Pour les flux de travail de traitement par lots des factures, combinez l'extraction de région avec l'itération sur result.Pages pour extraire des données structurées de la même position de champ sur des centaines de documents. Chaque page de résultats affiche indépendamment le texte reconnu pour sa zone de contenu.

L' exemple de zones de contenu IronOCR offre des options de configuration supplémentaires pour les scénarios multirégionaux.

Entrée

How to OCR a PDF: Extract Text from Scanned Documents with C# .NET OCR PDF: Image 3 - Sample Invoice

Sortie

How to OCR a PDF: Extract Text from Scanned Documents with C# .NET OCR PDF: Image 4 - Extracted Data Output

Comment améliorer la précision de la reconnaissance optique de caractères (OCR) sur les documents numérisés ?

Les documents numérisés du monde réel présentent fréquemment des problèmes de qualité : pages déformées, faible résolution ou bruit numérique introduit par le matériel ou le logiciel de numérisation. IronOCR comprend un ensemble de filtres de prétraitement d'images qui corrigent ces problèmes avant l'exécution du moteur de reconnaissance :

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
// Load PDF at higher DPI for improved text recognition on small fonts
input.LoadPdf("poor-quality-scan.pdf", dpi: 300);

// Apply image correction filters
input.Deskew();    // Automatically straighten rotated pages
input.DeNoise();   // Remove scanning artifacts and speckles

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

var ocr = new IronTesseract();

using var input = new OcrInput();
// Load PDF at higher DPI for improved text recognition on small fonts
input.LoadPdf("poor-quality-scan.pdf", dpi: 300);

// Apply image correction filters
input.Deskew();    // Automatically straighten rotated pages
input.DeNoise();   // Remove scanning artifacts and speckles

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

Le paramètre dpi contrôle la résolution à laquelle les pages PDF sont rendues avant l'exécution de la reconnaissance. Des valeurs plus élevées (de 200 à 300 DPI) améliorent la précision des documents contenant du texte petit ou dense, au prix d'une consommation de mémoire légèrement supérieure lors du traitement. La méthode Deskew détecte et corrige automatiquement la rotation de la page. DeNoise supprime les taches et les artefacts qui peuvent perturber l'étape de reconnaissance des caractères.

Pour les documents nécessitant une correction d'image plus poussée, IronOCR propose également une amélioration du contraste, une binarisation (conversion des pages en noir et blanc) et des ajustements d'échelle. La combinaison séquentielle de plusieurs filtres permet de récupérer du texte exploitable à partir de numérisations qui, autrement, produiraient un résultat illisible. Consultez la documentation de référence des filtres d'images IronOCR pour obtenir la liste complète des opérations de prétraitement disponibles.

Comment gérez-vous les documents protégés par mot de passe et multiformats ?

IronOCR ne se limite pas aux fichiers PDF standard. La bibliothèque gère une gamme de scénarios d'entrée qui apparaissent fréquemment dans les flux de travail de traitement de documents.

Les fichiers PDF protégés par mot de passe sont pris en charge en transmettant les informations d'identification lors de la construction des données d'entrée :

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("protected.pdf", password: "secret123");

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

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("protected.pdf", password: "secret123");

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

Les formats d'image -- PNG, JPEG, TIFF, BMP, GIF et TIFF multipage -- sont chargés avec les méthodes correspondantes LoadImage ou LoadImageFrames. Les mêmes filtres de prétraitement et options de ciblage régional s'appliquent quel que soit le format d'entrée.

Les documents multilingues sont gérés par le système de packs de langues d'IronOCR. La bibliothèque est fournie avec l'anglais par défaut et prend en charge plus de 125 modules linguistiques supplémentaires couvrant les alphabets latin, cyrillique, CJK, arabe et autres. Chargez les langues supplémentaires avant d'appeler Read :

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.German;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.German;
$vbLabelText   $csharpLabel

Pour les documents mélangeant plusieurs langues sur la même page, le mode MultiLanguage est disponible. Ceci est particulièrement précieux pour le traitement des factures dans les environnements internationaux où les en-têtes, les lignes de commande et les adresses peuvent apparaître dans différentes langues.

Le déploiement fonctionne sur Windows, Linux, macOS et dans les environnements cloud, y compris Azure et les conteneurs Docker.

Comment créer des PDF consultables à partir de documents numérisés ?

Au-delà de l'extraction de texte en chaînes de caractères, IronOCR peut produire un PDF consultable : un PDF où l'image numérisée originale est préservée comme couche visuelle tandis qu'une couche de texte invisible est intégrée pour les opérations de recherche et de copie. Il s'agit du format standard produit par les scanners de documents Professional .

La fonction PDF consultable IronOCR accepte un OcrResult et écrit un nouveau fichier PDF :

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("scanned-archive.pdf");

OcrResult result = ocr.Read(input);

// Save as a searchable PDF
result.SaveAsSearchablePdf("output-searchable.pdf");
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadPdf("scanned-archive.pdf");

OcrResult result = ocr.Read(input);

// Save as a searchable PDF
result.SaveAsSearchablePdf("output-searchable.pdf");
$vbLabelText   $csharpLabel

Le fichier de sortie peut être ouvert dans n'importe quel lecteur PDF. Les opérations de sélection, de recherche et de copie de texte fonctionnent sur la couche de texte intégrée tout en préservant l'apparence originale du scan. Ce format est généralement requis pour les archives de conformité, les référentiels de documents juridiques et les systèmes de gestion de contenu Enterprise .

Pour les formats de sortie supplémentaires, l'objet OcrResult expose également des scores de confiance par page, des boîtes englobantes au niveau des mots et des données de paragraphe structurées - tous utiles pour les tâches de classification ou d'indexation en aval.

Comment lire les codes-barres et les codes QR en même temps que du texte ?

Les chaînes de traitement de documents doivent souvent extraire à la fois du texte lisible par l'homme et des codes lisibles par la machine à partir d'un même document. IronOCR peut détecter et décoder les codes-barres et les codes QR lors du même passage OCR, sans nécessiter de bibliothèque séparée.

Activez la lecture des codes-barres sur l'instance IronTesseract avant le traitement :

using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;

using var input = new OcrInput();
input.LoadPdf("shipment-labels.pdf");

OcrResult result = ocr.Read(input);

// Access recognized text
Console.WriteLine(result.Text);

// Access barcode data
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Type: {barcode.Format}, Value: {barcode.Value}");
}
using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;

using var input = new OcrInput();
input.LoadPdf("shipment-labels.pdf");

OcrResult result = ocr.Read(input);

// Access recognized text
Console.WriteLine(result.Text);

// Access barcode data
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Type: {barcode.Format}, Value: {barcode.Value}");
}
$vbLabelText   $csharpLabel

Ceci est particulièrement utile pour le traitement des étiquettes d'expédition, la gestion des stocks et tout flux de travail où les codes-barres et le texte imprimé apparaissent ensemble sur des documents numérisés. Le guide de lecture des codes-barres IronOCR couvre les formats pris en charge, notamment le Code 128, les codes QR, Data Matrix et PDF417.

Quelle est la différence entre les types d'entrée IronOCR ?

IronOCR propose deux approches principales pour le chargement des fichiers PDF, chacune adaptée à des scénarios différents :

Comparaison des méthodes d'entrée PDF IronOCR
Approche Classe Idéal pour Remarques
Entrée générale `OcrInput.LoadPdf()` La plupart des cas d'utilisation Prend en charge tous les filtres de prétraitement, la sélection de pages et les zones de contenu.
Spécifique au PDF `OcrPdfInput` Scénarios simples Interface simplifiée ; moins d'options de configuration
fichiers image `OcrInput.LoadImage()` PNG, JPEG, TIFF, BMP Même prétraitement et ciblage régional que pour l'entrée PDF
TIFF multi-pages `OcrInput.LoadImageFrames()` Archives de télécopie, sortie du scanner Traite chaque image comme une page distincte

Pour la plupart des scénarios de production, OcrInput.LoadPdf() est l'approche recommandée car elle expose l'API complète de prétraitement et de configuration. OcrPdfInput fonctionne bien pour le prototypage rapide ou dans les situations où les paramètres par défaut sont suffisants.

Quelles sont vos prochaines étapes ?

Les exemples de code ci-dessus couvrent les flux de travail principaux IronOCR pour la reconnaissance optique de caractères (OCR) de fichiers PDF en C#. Voici une brève liste de contrôle pour passer à l'étape suivante :

  • Installez le package : dotnet add package IronOcr ou recherchez IronOCR sur NuGet
  • Exécutez l'exemple de base : vérifiez l'extraction de texte à partir d'un PDF d'exemple avant de mettre en place la logique de pipeline complète.
  • Appliquer le prétraitement : Si vous travaillez avec des documents numérisés, ajoutez les appels Deskew et DeNoise et effectuez des tests avec des échantillons représentatifs.
  • Découvrez des fonctionnalités supplémentaires : sortie PDF consultable , lecture de codes-barres , prise en charge multilingue et sortie de données structurées
  • Consultez les guides de déploiement : les articles sur le déploiement d'Azure, de Docker et de Linux couvrent la configuration spécifique à chaque environnement.
  • Essayez la version d'essai gratuite : Démarrez un essai gratuit pour tester toutes les fonctionnalités avant de souscrire à une licence.
  • Obtenez une licence : Les options de licence IronOCR couvrent les développeurs individuels jusqu'aux déploiements en Enterprise , avec une redistribution sans redevance.

Pour toute question relative à des cas d'utilisation spécifiques, la bibliothèque de tutoriels IronOCR propose des articles détaillés couvrant des dizaines de scénarios. L'intégralité de l'interface API est documentée dans la référence de l'API IronOCR .

Questions Fréquemment Posées

Quel est le code minimal nécessaire pour effectuer une reconnaissance optique de caractères (OCR) d'un PDF en C# ?

Avec IronOCR, le code minimal est le suivant : créer une instance d’IronTesseract, créer un objet OcrInput, appeler input.LoadPdf avec le chemin du fichier, puis appeler ocr.Read(input). La propriété result.Text renvoie la chaîne extraite.

Comment installer IronOCR dans un projet .NET ?

Exécutez la commande « dotnet add package IronOCR» dans le terminal, ou recherchez IronOCR dans le gestionnaire de packages NuGet de Visual Studio.

IronOCR peut-il traiter uniquement certaines pages d'un PDF ?

Oui. Transmettez une liste. Les index de page à base zéro sont utilisés pour spécifier le paramètre pageIndices de LoadPdf. Seules les pages indiquées sont rendues et traitées, ce qui réduit le temps de rendu et la consommation de mémoire.

Comment extraire du texte d'une zone spécifique d'un PDF numérisé ?

Transmettez un tableau d'objets Rectangle au paramètre contentAreas de LoadPdf. Chaque rectangle spécifie sa position X, sa position Y, sa largeur et sa hauteur en pixels à partir du coin supérieur gauche de la page.

Quels filtres de prétraitement IronOCR propose-t-il pour les documents numérisés ?

IronOCR propose les fonctions de redressement (correction de la rotation de la page), de réduction du bruit (suppression des artefacts de numérisation), d'amélioration du contraste, de binarisation et d'ajustement d'échelle. Ces fonctions peuvent être combinées pour améliorer la précision des numérisations de mauvaise qualité.

IronOCR prend-il en charge les fichiers PDF protégés par mot de passe ?

Oui. Transmettez la chaîne de caractères du mot de passe au paramètre `password` de la fonction `LoadPdf`. La bibliothèque déchiffre le document avant de générer les pages pour la reconnaissance optique de caractères (OCR).

IronOCR peut-il générer un PDF consultable ?

Oui. Après avoir appelé ocr.Read(input), appelez result.SaveAsSearchablePdf avec le chemin du fichier de sortie. Le PDF résultant conserve la numérisation originale comme couche visuelle avec une couche de texte invisible intégrée pour les opérations de recherche et de copie.

Quelles langues IronOCR prend-il en charge ?

IronOCR prend en charge plus de 125 modules linguistiques couvrant les alphabets latin, cyrillique, CJK, arabe et autres. Définissez la propriété Language de l'instance IronTesseract avant d'appeler la méthode Read.

IronOCR peut-il lire les codes-barres et les codes QR des documents PDF ?

Oui. Définissez ocr.Configuration.ReadBarCodes sur true avant d'appeler Read. La collection OcrResult.Barcodes contient les valeurs décodées et les types de format pour tous les codes détectés.

IronOCR fonctionne-t-il sous Linux et dans les conteneurs Docker ?

Oui. IronOCR prend en charge le déploiement sur Windows, Linux, macOS et les environnements cloud, notamment Azure et les conteneurs Docker. La documentation d'IronSoftware contient des guides d'installation spécifiques à chaque environnement.

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