Comment définir une région OCR spécifique d'une image en C#;

This article was translated from English: Does it need improvement?
Translated
View the article in English

Pour extraire du texte d'une zone spécifique d'une image en C#, utilisez l'objet Rectangle d'IronOcr afin de définir la zone exacte en spécifiant les coordonnées y, width et height, puis transmettez-la à la méthode LoadImage pour un traitement OCR ciblé.

Démarrage rapide : extraire du texte d'une région d'image spécifique

  1. Installez IronOCR avec le Gestionnaire de Packages NuGet

    PM > Install-Package IronOcr
  2. Copiez et exécutez cet extrait de code.

    using IronOcr;
    using IronSoftware.Drawing;
    
    // 1. Install IronOCR via NuGet: Install-Package IronOcr
    var ocr = new IronTesseract();
    using var input = new OcrInput();
    
    // 2. Create a Rectangle with coordinates
    var region = new Rectangle(x: 215, y: 1250, width: 1335, height: 280);
    
    // 3. Load image with region
    input.LoadImage("image.png", region);
    
    // 4. Extract text
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
  3. Déployez pour tester sur votre environnement de production.

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

    arrow pointer

Souvent, il suffit d'extraire du texte d'une petite partie d'une image, comme le montant total d'une facture ou un champ spécifique d'un formulaire. La numérisation de l'intégralité du document est inefficace et peut introduire des erreurs en capturant du texte non pertinent.

IronOCR vous permet d'améliorer la précision, les performances et l'exactitude en spécifiant la région rectangulaire exacte à scanner. Ce guide fournit une procédure pas à pas pour définir une région OCR spécifique, en extraire du texte et vérifier visuellement que vos coordonnées sont correctes pour vos tâches OCR.

Commencez avec IronOCR


Comment effectuer l'OCR sur une région spécifique ?

Pour définir une région OCR spécifique, vous créez un objet Rectangle à partir de l'espace de noms IronSoftware.Drawing. Cet objet nécessite quatre valeurs : la coordonnée x, la coordonnée y, la valeur width et la valeur height, toutes exprimées en pixels. Les coordonnées (x, y) correspondent au coin supérieur gauche de la zone souhaitée.

Lorsque vous chargez votre image à l'aide de LoadImage, vous passez ce Rectangle en tant que deuxième paramètre. IronOCR limitera alors son processus OCR aux seuls pixels situés à l'intérieur de ce cadre de délimitation.

L'OCR régional est particulièrement utile pour travailler avec des documents structurés tels que factures, formulaires scannés, ou documents d'identité, où des informations spécifiques apparaissent toujours à des endroits prévisibles. En limitant l'OCR aux zones pertinentes, vous pouvez améliorer considérablement la vitesse de traitement et réduire les faux positifs provenant de textes sans rapport avec le sujet.

Pour trouver les coordonnées de votre Rectangle, vous pouvez utiliser un simple éditeur d'images comme MS Paint. Ouvrez votre image source, placez votre souris sur les coins supérieur gauche et inférieur droit de la zone spécifiée, et notez les coordonnées en pixels (x, y). Vous pouvez ensuite calculer les propriétés du rectangle : (x1, y1, width, height), où width = x1 et height = y1.

Quelle image dois-je utiliser pour les tests ?

Nous utiliserons une image d'exemple contenant trois paragraphes. Notre objectif est d'extraire uniquement le deuxième paragraphe et d'ignorer le reste du texte. Il s'agit d'un scénario courant dans lequel vous devez extraire des champs ou des sections spécifiques d'un document plus vaste.

Fenêtre de terminal affichant les résultats de l'OCR avec l'en-tête

Comment implémenter l'OCR régional dans le code?

La mise en œuvre implique la création d'un objet OcrInput et le chargement de votre image avec la région rectangulaire spécifiée. Cette approche fonctionne avec différents formats d'image, notamment JPG, PNG, GIF, TIFF et BMP.

:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();

// Define the specific region as a Rectangle
// (x, y) is the top-left corner.
var ContentArea = new Rectangle(x: 215, y: 1250, width: 1335, height: 280);

ocrInput.LoadImage("region-input.png", ContentArea);

var ocrResult = ocrTesseract.Read(ocrInput);

// Print the extracted text
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

Dim ocrTesseract As New IronTesseract()
Using ocrInput As New OcrInput()

    ' Define the specific region as a Rectangle
    ' (x, y) is the top-left corner.
    Dim ContentArea As New Rectangle(x:=215, y:=1250, width:=1335, height:=280)

    ocrInput.LoadImage("region-input.png", ContentArea)

    Dim ocrResult = ocrTesseract.Read(ocrInput)

    ' Print the extracted text
    Console.WriteLine(ocrResult.Text)

End Using
$vbLabelText   $csharpLabel

Pour des scénarios plus complexes, vous pouvez définir plusieurs régions au sein d'une même image. Ceci est particulièrement utile lors du traitement de formulaires à champs multiples ou de tableaux dans des documents :

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Define multiple regions for different form fields
var nameField = new Rectangle(x: 100, y: 200, width: 300, height: 50);
var dateField = new Rectangle(x: 100, y: 300, width: 200, height: 50);
var amountField = new Rectangle(x: 400, y: 500, width: 150, height: 50);

// Load the same image multiple times with different regions
input.LoadImage("form.png", nameField);
var nameResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", dateField);
var dateResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", amountField);
var amountResult = ocr.Read(input);

// Process each field separately
Console.WriteLine($"Name: {nameResult.Text}");
Console.WriteLine($"Date: {dateResult.Text}");
Console.WriteLine($"Amount: {amountResult.Text}");
using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Define multiple regions for different form fields
var nameField = new Rectangle(x: 100, y: 200, width: 300, height: 50);
var dateField = new Rectangle(x: 100, y: 300, width: 200, height: 50);
var amountField = new Rectangle(x: 400, y: 500, width: 150, height: 50);

// Load the same image multiple times with different regions
input.LoadImage("form.png", nameField);
var nameResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", dateField);
var dateResult = ocr.Read(input);

input.Clear();
input.LoadImage("form.png", amountField);
var amountResult = ocr.Read(input);

// Process each field separately
Console.WriteLine($"Name: {nameResult.Text}");
Console.WriteLine($"Date: {dateResult.Text}");
Console.WriteLine($"Amount: {amountResult.Text}");
Imports IronOcr
Imports IronSoftware.Drawing

Dim ocr As New IronTesseract()
Using input As New OcrInput()

    ' Define multiple regions for different form fields
    Dim nameField As New Rectangle(x:=100, y:=200, width:=300, height:=50)
    Dim dateField As New Rectangle(x:=100, y:=300, width:=200, height:=50)
    Dim amountField As New Rectangle(x:=400, y:=500, width:=150, height:=50)

    ' Load the same image multiple times with different regions
    input.LoadImage("form.png", nameField)
    Dim nameResult = ocr.Read(input)

    input.Clear()
    input.LoadImage("form.png", dateField)
    Dim dateResult = ocr.Read(input)

    input.Clear()
    input.LoadImage("form.png", amountField)
    Dim amountResult = ocr.Read(input)

    ' Process each field separately
    Console.WriteLine($"Name: {nameResult.Text}")
    Console.WriteLine($"Date: {dateResult.Text}")
    Console.WriteLine($"Amount: {amountResult.Text}")

End Using
$vbLabelText   $csharpLabel

Quels résultats puis-je attendre ?

Comme vous pouvez le constater dans la sortie de la console, seul le deuxième paragraphe est traité par l'OCR. Cette approche ciblée permet de s'assurer que le texte non pertinent provenant d'autres parties de l'image n'interfère pas avec vos résultats.

Sortie OCR

La précision de l'OCR régional dépend de plusieurs facteurs :

Comment vérifier que mes coordonnées sont correctes?

Pour vous assurer que vous avez sélectionné les coordonnées correctes pour l'image d'entrée, vous pouvez visualiser la zone de contenu que vous avez définie. Une méthode simple pour y parvenir consiste à tracer le rectangle sur l'image d'entrée et à l'enregistrer dans un nouveau fichier avec StampCropRectangleAndSaveAs. Cela vous permet de déboguer et d'affiner les coordonnées pour des performances optimales.

Cette technique de visualisation est particulièrement utile lorsque vous travaillez avec des mises en page complexes ou lorsque vous devez mettre en évidence des zones de texte spécifiques à des fins d'assurance qualité.

Voici l'image résultante après avoir tracé le cadre de délimitation spécifié sur notre image d'entrée d'exemple ci-dessus.

Comment visualiser la région sélectionnée?

:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image-highlighted.cs
using IronOcr;
using IronSoftware.Drawing;

var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();

// Define the specific rectangular area to scan within the image.
// The coordinates are in pixels: (x, y) is the top-left corner of the rectangle.
var ContentArea = new Rectangle(x: 4, y: 59, width: 365, height: 26);

ocrInput.LoadImage("region-input.png", ContentArea);

var ocrResult = ocrTesseract.Read(ocrInput);

// Draws the rectangle from above in a blue bounding box on the image for visualization.
ocrInput.StampCropRectangleAndSaveAs(ContentArea, Color.Aqua, "region-input.png");
Imports IronOcr
Imports IronSoftware.Drawing

Dim ocrTesseract = New IronTesseract()
Using ocrInput As New OcrInput()

    ' Define the specific rectangular area to scan within the image.
    ' The coordinates are in pixels: (x, y) is the top-left corner of the rectangle.
    Dim ContentArea As New Rectangle(x:=4, y:=59, width:=365, height:=26)

    ocrInput.LoadImage("region-input.png", ContentArea)

    Dim ocrResult = ocrTesseract.Read(ocrInput)

    ' Draws the rectangle from above in a blue bounding box on the image for visualization.
    ocrInput.StampCropRectangleAndSaveAs(ContentArea, Color.Aqua, "region-input.png")
End Using
$vbLabelText   $csharpLabel

À quoi ressemble la visualisation?

Sortie OCR mise en évidence

Le rectangle bleu clair confirme que nous avons correctement isolé le deuxième paragraphe pour traitement.

Quand dois-je utiliser l'OCR régional ?

L'OCR régional est idéal pour plusieurs scénarios courants :

  1. Traitement des formulaires : Lorsqu'il s'agit d'extraire des champs spécifiques de formulaires standardisés où les données apparaissent à des emplacements cohérents.
  2. Traitement des factures : pour extraire des valeurs spécifiques telles que des totaux, des dates ou des numéros de facture sans traiter l'ensemble du document.
  3. Plaques d'immatriculation : Lorsque vous utilisez la reconnaissance des plaques d'immatriculation, concentrez-vous uniquement sur la zone de la plaque.
  4. Documents d'identité : Extraire des champs spécifiques de passports ou de cartes d'identité.
  5. Capture d'écran : Lors de la capture de texte à partir d'éléments spécifiques de l'interface utilisateur dans des captures d'écran.

Bonnes pratiques pour l'OCR régional

Pour obtenir des résultats optimaux avec l'OCR régional :

  1. Add padding : incluez une petite zone tampon autour de votre texte pour vous assurer qu'aucun caractère n'est coupé sur les bords.
  2. Tester avec des échantillons d'images : Vérifiez toujours vos coordonnées à l'aide d'échantillons représentatifs avant de traiter des lots importants.
  3. Gérer les variations : Tenez compte des légères variations de positionnement dans les documents numérisés en agrandissant légèrement vos régions.
  4. Optimiser les performances : Pour le traitement multithread, traitez différentes régions en parallèle.
  5. Surveiller la confiance : Vérifiez les notes de confiance des résultats pour vous assurer de leur exactitude.

En concentrant le traitement OCR sur des régions spécifiques, vous pouvez améliorer de manière significative la vitesse et la précision de vos tâches d'extraction de texte. Cette approche ciblée est essentielle pour créer des flux de traitement de documents efficaces dans vos applications .NET.

Questions Fréquemment Posées

Comment extraire du texte d'une partie spécifique d'une image en C# ?

Avec IronOcr, vous pouvez extraire du texte d'une région spécifique en créant un objet Rectangle avec des coordonnées x/y, des valeurs de largeur et de hauteur. Transmettez ce rectangle en tant que deuxième paramètre de la méthode LoadImage, et IronOCR limitera son traitement OCR à la zone définie.

Quels sont les avantages de définir une région d'OCR au lieu de scanner l'ensemble de l'image ?

En définissant une région d'OCR spécifique avec IronOCR, vous pouvez améliorer la vitesse de traitement, augmenter la précision et réduire les erreurs dues à la capture de texte non pertinent. Ceci est particulièrement utile pour les documents structurés où les informations apparaissent à des endroits prévisibles.

De quels paramètres ai-je besoin pour créer un rectangle pour l'OCR régional ?

Pour créer un rectangle pour l'OCR régional d'IronOcr, vous avez besoin de quatre valeurs en pixels : la coordonnée x, la coordonnée y, la largeur et la hauteur. Les coordonnées (x, y) représentent le coin supérieur gauche de la zone de numérisation souhaitée.

Quel espace de noms contient l'objet Rectangle pour les régions OCR ?

L'objet Rectangle utilisé pour définir les régions d'OCR dans IronOcr se trouve dans l'espace de noms IronSoftware.Drawing.

Quels sont les types de documents qui bénéficient le plus du traitement OCR régional ?

La ROC régionale d'IronOcr est particulièrement efficace pour les documents structurés tels que les factures, les formulaires scannés et les documents d'identité où des informations spécifiques apparaissent systématiquement aux mêmes endroits.

IronOCR prend-elle en charge plusieurs langues ?

IronOCR prend en charge plusieurs langues, ce qui en fait un outil polyvalent pour des applications globales nécessitant la reconnaissance de texte dans différentes langues.

IronOCR peut-il être intégré dans des applications existantes ?

IronOCR est conçu pour être facilement intégré dans les applications existantes en utilisant C#, permettant aux développeurs d'ajouter des fonctionnalités OCR à leur logiciel avec un minimum d'effort.

Quels sont les avantages d'utiliser IronOCR pour la gestion des documents ?

Utiliser IronOCR pour la gestion des documents rationalise le flux de travail en convertissant les documents numérisés en texte modifiable et consultable, réduisant le besoin de saisie manuelle des données et améliorant l'accessibilité des documents.

Comment IronOCR peut-il améliorer la précision des données ?

IronOCR améliore la précision des données grâce à ses algorithmes de reconnaissance avancés et ses fonctionnalités de correction d'image, garantissant que le processus d'extraction de texte est à la fois fiable et précis.

Y a-t-il un essai gratuit disponible pour IronOCR ?

Oui, Iron Software propose un essai gratuit d'IronOCR, permettant aux utilisateurs de tester ses fonctionnalités et capacités avant de prendre une décision d'achat.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 5,896,332 | Version : 2026.5 just released
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronOcr
lancez un échantillon regardez votre image se transformer en texte consultable.