IRONSOFTWAREHOME

Données OCR de mots et de caractères en C# (coordonnées, confiance, cadres de sélection)

Darrius Serrant
Darrius Serrant
Updated: 15 mai 2026

Après avoir appliqué l'OCR à un document, le texte extrait seul ne suffit souvent pas. Pour localiser des valeurs spécifiques sur une page, exclure les détections de mauvaise qualité ou reconstituer l'ordre de lecture naturel sur des mises en page à plusieurs colonnes, vous avez besoin de coordonnées par mot, de numéros de page, d'indices de région et de scores de confiance.

Les collections Words et Characters sur AdvancedOcrResultBase exposent ces données. Tant ReadDocumentAdvanced() pour les documents tenant compte de la mise en page que ReadPhoto() pour les entrées de caméra renvoient la même granularité que celle disponible via la collection standard OcrResult.Words.

Ce guide présente cinq modèles courants : itération des données WORD, reconstruction de l'ordre de lecture, filtrage par niveau de confiance, traitement au niveau des caractères et recadrage de l'image source à partir d'un cadre de sélection.

Commencez un essai gratuit de 30 jours pour tester ces collections dans votre pipeline.

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.
Guide de démarrage rapide : Lire des données de WORD et de caractères à partir d'un résultat OCR

Appelez ReadDocumentAdvanced (ou ReadPhoto) et itérez result.Words pour obtenir en quelques lignes chaque WORD reconnu avec ses coordonnées, son numéro de page et son score de confiance.

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. 2Copiez et exécutez cet extrait de code.

    var result = new IronTesseract().ReadDocumentAdvanced(new OcrInput("scan.png"));
    foreach (var word in result.Words)
        Console.WriteLine($"{word.Text} @ ({word.X},{word.Y}) conf:{word.RegionConfidence:P0}");
    C#
  3. 3Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronOCR dans votre projet dès aujourd'hui avec un essai gratuit
    arrow pointer

Comment itérer des mots avec des coordonnées et un niveau de confiance ?

La collection Words renvoie tous les mots détectés sur chaque page. Chaque entrée (un AdvancedWord ou AdvancedCharacter, tous deux héritant de AdvancedOcrElement) expose le texte, les coordonnées en pixels, les dimensions, la page à laquelle elle appartient, l'index de région identifiant le bloc de texte détecté qui la contient, ainsi qu'un score de confiance pour cette région.

using IronOcr;

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

var result = ocr.ReadDocumentAdvanced(input);

foreach (var word in result.Words)
{
    Console.WriteLine(
        $"Page {word.PageNumber} | " +
        $"'{word.Text}' | " +
        $"Position: ({word.X}, {word.Y}) | " +
        $"Size: {word.Width}x{word.Height} | " +
        $"Confidence: {word.Confidence:P1}"
    );
}

// ToString() override for diagnostic logging
Console.WriteLine(result.Words.First().ToString());
C#
Conseils: PageNumber est basé sur 1 : la première page est 1, et non 0. Cela diffère de la plupart des collections .NET, qui utilisent un indexage à partir de zéro. RegionIndex suit la convention standard basée sur 0.

Pour transmettre des coordonnées aux API de dessin ou de recadrage, utilisez la propriété BoundingBox. Elle regroupe la position et la taille en un seul IronSoftware.Drawing.Rectangle.

Comment reconstituer l'ordre de lecture ?

Dans les mises en page à plusieurs colonnes, l'ordre d'itération de la collection Words ne correspond pas à l'ordre de lecture visuel sur la page. Les mots sont regroupés par région détectée, ce qui signifie que les colonnes et les cellules du tableau peuvent être renvoyées dans un ordre différent de celui d'origine.

Pour recréer un ordre naturel de haut en bas et de gauche à droite, triez d'abord la collection par coordonnée Y, puis par X au sein de chaque ligne. Une petite tolérance Y regroupe les WORDs situés sur la même ligne de base.

using IronOcr;
using System.Linq;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("multi-column-doc.png");

var result = ocr.ReadDocumentAdvanced(input);

int targetPage = 1;
int lineThreshold = 10; // pixel tolerance for grouping same-line words

// Sort by line (Y), then left-to-right (X)
var pageWords = result.Words
    .Where(w => w.PageNumber == targetPage)
    .OrderBy(w => w.Y / lineThreshold)
    .ThenBy(w => w.X)
    .ToList();

foreach (var word in pageWords)
{
    Console.Write($"{word.Text} ");
}
Console.WriteLine();

Ajustez lineThreshold en fonction de votre document : une valeur de 10 à 15 pixels convient pour un texte standard de 12 points à 300 ppp. Les titres plus longs ou les saisies manuscrites nécessitent une plus grande tolérance. Ce modèle est particulièrement utile sur les pages à plusieurs colonnes et à l'intérieur des cellules de tableau, où le moteur détecte chaque colonne ou cellule comme une région distincte.

Comment filtrez-vous les mots à faible confiance ?

Pour exclure les détections de mauvaise qualité avant qu'elles n'atteignent votre base de données, votre index de recherche ou l'extraction en aval, filtrez la collecte par RegionConfidence. Le score varie de 0,0 à 1,0, les valeurs les plus élevées indiquant un niveau de confiance plus élevé dans le texte détecté.

using IronOcr;
using System.Linq;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("noisy-scan.png");

var result = ocr.ReadDocumentAdvanced(input);

double threshold = 0.75;

var highConfidenceWords = result.Words
    .Where(w => w.Confidence >= threshold)
    .ToList();

var lowConfidenceWords = result.Words
    .Where(w => w.Confidence < threshold)
    .ToList();

Console.WriteLine($"Accepted: {highConfidenceWords.Count} words");
Console.WriteLine($"Rejected: {lowConfidenceWords.Count} words");

// Log rejected words for manual review
foreach (var word in lowConfidenceWords)
{
    Console.WriteLine(
        $"  LOW CONF: '{word.Text}' at ({word.X},{word.Y}) — {word.Confidence:P1}"
    );
}
C#

Pour les numérisations de qualité variable (impression nette dans certaines zones, sections dégradées ailleurs), cela empêche les résultats peu fiables d'atteindre les systèmes en aval. Pour augmenter les scores de confiance au niveau de la source, les filtres de prétraitement d'image (Deskew, DeNoise, Binarize) améliorent la qualité avant l'application du seuil.

Comment procédez-vous à l'itération au niveau des caractères ?

Pour les superpositions de vérification OCR, la comparaison au niveau des caractères par rapport à la vérité de référence ou l'analyse spatiale précise des champs de formulaire, utilisez la collection Characters. Elle reflète Words mais se résout en caractères individuels.

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("form-field.png");

var result = ocr.ReadDocumentAdvanced(input);

foreach (var ch in result.Characters)
{
    Console.WriteLine(
        $"'{ch.Text}' | " +
        $"Box: ({ch.X}, {ch.Y}, {ch.Width}, {ch.Height}) | " +
        $"Page {ch.PageNumber}"
    );
}

// ToString() override provides diagnostic-friendly output
Console.WriteLine(result.Characters.First().ToString());
Veuillez noter: Words et Characters sont tous deux calculés de manière différée et mis en cache. Le premier accès déclenche le calcul ; les accès suivants renvoient le résultat mis en cache, de sorte qu'une deuxième itération ne coûte rien.

Comment recadrer l'image d'origine à l'aide d'un BoundingBox ?

Pour extraire la région visuelle d'un WORD à des fins de vérification, d'annotation ou de création de données d'entraînement étiquetées, transmettez la propriété BoundingBox à AnyBitmap.CropRegion(). Le cadre de sélection correspond directement à la position du WORD dans l'image source.

using IronOcr;
using IronSoftware.Drawing;

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

var result = ocr.ReadDocumentAdvanced(input);

// Load the original image for cropping
var originalImage = AnyBitmap.FromFile("invoice.png");

// Find a specific word and crop its region
var targetWord = result.Words.FirstOrDefault(w => w.Text == "Total");
if (targetWord != null)
{
    Rectangle cropRect = targetWord.BoundingBox;
    AnyBitmap croppedRegion = originalImage.Clone(cropRect);
    croppedRegion.SaveAs("total-region.png");

    Console.WriteLine(
        $"Cropped '{targetWord.Text}' from " +
        $"({cropRect.X}, {cropRect.Y}, {cropRect.Width}, {cropRect.Height})"
    );
}

Ce modèle s'adapte aux opérations en masse : itérer sur chaque WORD, recadrer chaque boîte et exporter un ensemble de données étiquetées pour l'entraînement de polices personnalisées ou des pipelines d'apprentissage automatique en aval. Les coordonnées correspondent à l'image post-traitement ; Si des filtres tels que EnhanceResolution ont modifié les dimensions, le cadre de sélection correspond à l'image traitée, et non à l'original sur le disque.

Prochaines étapes

Le pipeline avancé offre le même niveau de détail spatial que IronTesseract.Read(), avec en plus des fonctionnalités avancées de mise en page. Sujets connexes :

Commencez votre essai de 30 jours gratuit ou consultez les options de licence.

Questions Fréquemment Posées

Qu'est-ce que l'OCR avancé en C# ?

L'OCR avancé en C# désigne le processus d'utilisation de la reconnaissance optique de caractères pour extraire des données détaillées de mots et de caractères, y compris les coordonnées, les niveaux de confiance, et les boîtes de délimitation, en utilisant le pipeline avancé de IronOCR.

Comment puis-je accéder aux données de mots en utilisant IronOCR ?

Vous pouvez accéder aux données de mots dans IronOCR en itérant à travers la collection AdvancedWord, qui fournit des informations détaillées sur la position de chaque mot et le score de confiance dans le document scanné.

Quelle est l'importance des boîtes de délimitation dans l'OCR ?

Les boîtes de délimitation sont cruciales dans l'OCR car elles définissent l'emplacement exact et les dimensions des éléments de texte reconnus sur l'image scannée, permettant une extraction précise du texte et une manipulation de l'image.

Puis-je filtrer les résultats OCR par score de confiance ?

Oui, en utilisant IronOCR vous pouvez filtrer les résultats OCR par score de confiance pour s'assurer que seul le texte avec une haute précision de reconnaissance est pris en compte pour un traitement ultérieur.

Comment puis-je reconstruire l'ordre de lecture dans les résultats OCR ?

La reconstruction de l'ordre de lecture dans les résultats OCR est possible en analysant la séquence des objets AdvancedWord et AdvancedCharacter fournis par IronOCR, qui reflètent le flux de lecture naturel du document.

Est-il possible de recadrer les images source en utilisant IronOCR ?

IronOCR vous permet de recadrer les images source en se basant sur l'analyse des données textuelles, qui inclut les boîtes de délimitation et les coordonnées des mots et caractères reconnus.

Qu'est-ce que les collections AdvancedWord et AdvancedCharacter ?

Les collections AdvancedWord et AdvancedCharacter dans IronOCR sont des structures de données qui stockent des informations détaillées sur chaque mot et caractère reconnu, y compris leurs coordonnées, niveaux de confiance, et boîtes de délimitation.

Comment IronOCR gère-t-il la reconnaissance des caractères ?

IronOCR gère la reconnaissance des caractères en utilisant un pipeline avancé qui analyse les caractéristiques de chaque caractère, fournissant des données détaillées telles que sa position, sa taille, et sa confiance de reconnaissance.

Quel type de documents peut être traité avec IronOCR ?

IronOCR peut traiter une large gamme de types de documents, y compris les PDFs, les images scannées et les photos, en extrayant les données textuelles avec une grande précision et détail.

How can OCR results be used for custom font training or machine learning?

OCR results, including cropped image regions and labeled datasets derived from bounding boxes, can be used to train custom fonts or feed machine learning pipelines. IronOCR facilitates these processes with its detailed spatial data extraction capabilities.

Darrius Serrant
Ingénieur logiciel Full Stack (WebOps)

Darrius Serrant est titulaire d'un baccalauréat en informatique de l'université de Miami et travaille comme ingénieur marketing WebOps Full Stack chez Iron Software. Attiré par le codage dès son plus jeune âge, il a vu l'informatique comme à la fois mystérieuse et accessible, en faisant le médium parfait pour la créativité et la résolution de problèmes.

...
Lire la suite

Prêt à commencer?

Nuget Downloads 6,236,385Version :2026.9vient de sortir

Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et cherchez "IronOCR"
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

ou téléchargez le programme d'installation Windows ici.

  1. Téléchargez et décompressez IronOCR à un emplacement tel que ~/Libs dans votre répertoire du projet
  2. Dans l'Explorateur de Solutions de Visual Studio, faites un clic droit sur Références. Sélectionnez Parcourir, "IronOCR.dll"

Licences à partir de $999

Vous avez une question ? Contactez notre équipe de développement.

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