Comment extraire texte d'une région spécifique d'une image en C# avec IronOCR
Pour convertir image en texte depuis une région spécifique en C#, utilisez l'objet Rectangle d'IronOCR pour définir la zone exacte en spécifiant les coordonnées y, width et height, puis transmettez-le à la méthode LoadImage pour le traitement OCR ciblé.
Démarrage rapide : Extraire du texte d'une zone spécifique d'une image
-
Installez IronOCR avec le Gestionnaire de Packages NuGet
PM > Install-Package IronOcr -
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); -
Déployez pour tester sur votre environnement de production.
Commencez à utiliser IronOCR dans votre projet dès aujourd'hui avec un essai gratuit
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 définir une région OCR spécifique d'une image
- Téléchargez la bibliothèque C# pour définir la région OCR
- Instancier le moteur OCR
- Délimitez la zone OCR par un rectangle
- Chargez l'image avec `LoadImage` ainsi que le rectangle défini
- Accédez à la propriété **`OcrResult`** pour visualiser et manipuler les données extraites
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 coordonnée width et la coordonnée height, toutes en pixels. Les coordonnées (x, y) représentent le coin supérieur gauche de la zone souhaitée.
Lorsque vous chargez votre image en utilisant LoadImage, vous transmettez ce Rectangle comme 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 éditeur d'images simple comme MS Paint. Ouvrez votre image d'entrée, placez votre souris sur les coins supérieur gauche et inférieur droit de la région spécifiée et notez les coordonnées de 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.
Comment implémenter l'OCR régional dans le code?
L'implémentation consiste à créer un objet OcrInput et à charger 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
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
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.
La précision de l'OCR régional dépend de plusieurs facteurs :
- Qualité de l'image : Les images de haute résolution donnent généralement de meilleurs résultats. Pensez à utiliser les paramètresDPI pour optimiser vos images.
- Orientation du texte : veillez à ce que le texte soit correctement aligné. Utilisez la détection de la rotation des pages si nécessaire.
- Contraste et clarté : Appliquez des filtres de correction d'image pour améliorer la lisibilité du texte.
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 façon simple de faire cela est de dessiner le rectangle sur l'image d'entrée et de l'enregistrer comme 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
À quoi ressemble la visualisation?
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 :
- 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.
- 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.
- Plaques d'immatriculation : Lorsque vous utilisez la reconnaissance des plaques d'immatriculation, concentrez-vous uniquement sur la zone de la plaque.
- Documents d'identité : Extraire des champs spécifiques de passports ou de cartes d'identité.
- 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 :
- Add padding : incluez une petite zone tampon autour de votre texte pour vous assurer qu'aucun caractère n'est coupé sur les bords.
- Tester avec des échantillons d'images : Vérifiez toujours vos coordonnées à l'aide d'échantillons représentatifs avant de traiter des lots importants.
- 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.
- Optimiser les performances : Pour le traitement multithread, traitez différentes régions en parallèle.
- 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.

