Configuration OCR pour une lecture avancée

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

IronOCR provides advanced scan reading methods such as ReadPassport, ReadLicensePlate, and ReadPhoto that go beyond standard OCR. Ces méthodes sont alimentées par le package IronOcr.Extensions.AdvancedScan. To fine-tune how these methods process text, IronOCR exposes the TesseractConfiguration class, giving developers full control over character whitelisting, blacklisting, barcode detection, data table reading, and more.

This article covers the TesseractConfiguration properties available for advanced reading and practical examples for configuring OCR in real-world scenarios.

Démarrage rapide : Limiter la sortie OCR à une liste blanche de caractères

Set WhiteListCharacters on TesseractConfiguration before calling Read. Tout caractère ne figurant pas sur la liste blanche est silencieusement supprimé du résultat, éliminant ainsi le bruit sans aucun post-traitement.

  1. Installez IronOCR avec le Gestionnaire de Packages NuGet

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

    var result = new IronTesseract() { Configuration = new TesseractConfiguration { WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- " } }.Read(new OcrInput("image.png")); 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


Propriétés de TesseractConfiguration

The TesseractConfiguration class provides the following properties for customizing OCR behavior. These are set through IronTesseract.Configuration.

Propriété Type de texte Description du projet
WhiteListCharacters chaîne de caractères Seuls les caractères présents dans cette chaîne seront reconnus dans le résultat OCR. Tous les autres caractères sont exclus.
BlackListCharacters chaîne de caractères Les caractères dans cette chaîne sont ignorés et retirés activement du résultat OCR.
ReadBarCodes booléen Active ou désactive la détection de codes-barres dans le document lors du traitement OCR.
ReadDataTables booléen Active ou désactive la détection de la structure des tables dans le document en utilisant Tesseract.
PageSegmentationMode Mode de segmentation de page Tesseract Détermine comment Tesseract segmente l'image d'entrée. Les options incluent AutoOsd, Auto, SingleBlock, SingleLine, SingleWord, et plus.
RenderSearchablePdf booléen Lorsqu'elle est activée, la sortie OCR peut être enregistrée en tant que PDF consultable avec une couche de texte invisible.
RenderHocr booléen Lorsqu'elle est activée, la sortie OCR inclut les données hOCR pour un traitement ultérieur ou une exportation.
TesseractVariables Dictionary Provides direct access to low-level Tesseract configuration variables for fine-grained control.

The TesseractVariables dictionary goes further still, exposing hundreds of underlying Tesseract engine parameters for cases where the high-level properties are not sufficient.

Les exemples ci-dessous illustrent chaque groupe de propriétés, en commençant par la liste blanche de caractères.

Configurer une liste blanche de caractères pour les plaques d'immatriculation

A common use case for WhiteListCharacters is restricting OCR output to only the characters that can appear on a license plate: uppercase letters, digits, hyphens, and spaces. Cela élimine le bruit et améliore la précision en informant le moteur d'ignorer tout ce qui est en dehors de l'ensemble de caractères attendu.

Entrée

The following vehicle registration record contains a mix of uppercase text, lowercase text, special symbols (@, $, #, |, ~, ^, *), and punctuation.

Enregistrement de véhicule avec des caractères mixtes pour la démonstration de la liste blanche OCR

BlackListCharacters supplements the whitelist by actively excluding known noise symbols like `, ~, @, #, $, %, &, and *.

:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading.cs
using IronOcr;

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

ocr.Configuration = new TesseractConfiguration
{
    // Whitelist only characters that appear on license plates
    WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",

    // Blacklist common noise characters
    BlackListCharacters = "`~@#$%&*",
};

var ocrInput = new OcrInput();
// Load the input image
ocrInput.LoadImage("advanced-input.png");
// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);

// Print the filtered text result to the console
Console.WriteLine(results.Text);
Imports IronOcr

' Initialize the Tesseract OCR engine
Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    ' Whitelist only characters that appear on license plates
    .WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",
    
    ' Blacklist common noise characters
    .BlackListCharacters = "`~@#$%&*"
}

Dim ocrInput As New OcrInput()
' Load the input image
ocrInput.LoadImage("advanced-input.png")
' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)

' Print the filtered text result to the console
Console.WriteLine(results.Text)
$vbLabelText   $csharpLabel

Sortie

Sortie OCR ne montrant que les caractères de plaque d'immatriculation de la liste blanche

Le filtrage par liste blanche est clairement visible dans les résultats:

  • "Plate: ABC-1234" devient "P ABC-1234". Le mot en minuscule "late:" est supprimé, tandis que le numéro de plaque est préservé exactement.
  • "VIN: 1HGBH41JXMN109186" devient "VIN 1HGBH41JXMN109186". Le deux-points est supprimé, mais le VIN en majuscule et le numéro complet sont conservés.
  • "Owner: john.doe@email.com" devient "O". L'intégralité de l'email en minuscule et la ponctuation sont retirées.
  • "Region: CA-90210| Zone #5" devient "R CA-90210 Z 5". Le pipe (|) and hash (#`) are removed, while the uppercase letters and numbers survive.
  • *"Fee: $125.00 + tax" devient "F 12500"**. Le signe dollar, le point décimal, le signe plus et le "tax" en minuscule sont tous retirés.
  • "Ref: ~record_v2^final" devient "R 2" . The tilde (~), underscore, caret (^), and all lowercase characters are stripped.

The same WhiteListCharacters and BlackListCharacters approach works for any document type, not just license plates. La section suivante explique comment étendre une lecture pour détecter les codes-barres et les structures de tableau en une seule passe.

Configurer la lecture de codes-barres et de données tabulaires

IronOCR peut détecter des codes-barres et des tables structurées dans les documents en plus du texte. These features are controlled through TesseractConfiguration:

IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    // Enable barcode detection within documents
    ReadBarCodes = true,

    // Enable table structure detection
    ReadDataTables = true,
};
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    // Enable barcode detection within documents
    ReadBarCodes = true,

    // Enable table structure detection
    ReadDataTables = true,
};
Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .ReadBarCodes = True,
    .ReadDataTables = True
}
$vbLabelText   $csharpLabel
  • ReadBarCodes: When set to true, IronOCR scans the document for barcodes in addition to text. Set to false to skip barcode detection and speed up processing when barcodes are not expected.
  • ReadDataTables: When set to true, Tesseract attempts to detect and preserve table structures in the document. Cela est utile pour les factures, rapports et autres documents tabulaires.

These options can be combined with WhiteListCharacters and BlackListCharacters for precise control over what is extracted from complex documents.

Si le filtrage et la détection contrôlent les éléments extraits, l'interprétation de la mise en page est une préoccupation distincte. The next section covers how to select the right PageSegmentationMode for the document type.

Contrôler le mode de segmentation des pages

PageSegmentationMode tells Tesseract how to segment the input image before recognition. Choisir le mauvais mode pour une mise en page donnée peut entraîner une mauvaise lecture ou même l'omission complète du texte par le moteur.

Mode Cas d'utilisation
AutoOsd Analyse de la disposition automatique avec détection d'orientation et de script
Auto Analyse de la disposition automatique sans OSD (par défaut)
SingleColumn Suppose que l'image est une seule colonne de texte
SingleBlock Suppose que l'image est un seul bloc de texte uniforme
SingleLine Suppose que l'image est une seule ligne de texte
SparseText Trouve autant de texte que possible dans n'importe quel ordre

For a label or banner that contains a single line, SingleLine eliminates multi-block analysis and improves both speed and accuracy.

Entrée

single-line-label.png is a narrow shipping label with exactly one line of bold Courier text: SHIPPING LABEL: TRK-2024-XR9-001.

Étiquette d'expédition à une seule ligne pour le mode de segmentation OCR SingleLine
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    PageSegmentationMode = Mode de segmentation de page Tesseract.SingleLine,
};

using OcrInput input = new OcrInput();
input.LoadImage("single-line-label.png");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    PageSegmentationMode = Mode de segmentation de page Tesseract.SingleLine,
};

using OcrInput input = new OcrInput();
input.LoadImage("single-line-label.png");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronTesseract

Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .PageSegmentationMode = TesseractPageSegmentationMode.SingleLine
}

Using input As New OcrInput()
    input.LoadImage("single-line-label.png")

    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

For a scanned page with irregular text placement, SparseText recovers more content than Auto.

Entrée

receipt-scan.png is a Corner Market thermal receipt with four line items (coffee, muffin, juice, granola bar), a dashed separator, subtotal, tax, and total. Il s'agit du type de mise en page où la segmentation par blocs fixes omet des entrées à différentes positions horizontales.

Reçu thermique pour le mode de segmentation OCR SparseText
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    PageSegmentationMode = Mode de segmentation de page Tesseract.SparseText,
};

using OcrInput input = new OcrInput();
input.LoadImage("receipt-scan.png");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    PageSegmentationMode = Mode de segmentation de page Tesseract.SparseText,
};

using OcrInput input = new OcrInput();
input.LoadImage("receipt-scan.png");

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

Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .PageSegmentationMode = TesseractPageSegmentationMode.SparseText
}

Using input As New OcrInput()
    input.LoadImage("receipt-scan.png")

    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Une fois la segmentation de la mise en page adaptée au type de document, l'étape suivante consiste à contrôler le format de sortie pour le traitement en aval.

Générer des PDFs consultables et des sorties hOCR

RenderSearchablePdf and RenderHocr control the output formats that IronOCR produces alongside the plain text result.

RenderSearchablePdf embeds an invisible text layer over the original image, producing a PDF where users can search and copy text while the scanned image remains visible. C'est le format de sortie standard pour les flux de travail d'archivage de documents.

Entrée

scanned-document.pdf is a single-page business letter from IronOCR Solutions Ltd. (dated 15 March 2024, reference DOC-2024-OCR-0315). The result is saved as searchable-output.pdf.

IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderSearchablePdf = true,
};

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

OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderSearchablePdf = true,
};

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

OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
Imports IronOcr

Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .RenderSearchablePdf = True
}

Using input As New OcrInput()
    input.LoadPdf("scanned-document.pdf")

    Dim result As OcrResult = ocr.Read(input)
    result.SaveAsSearchablePdf("searchable-output.pdf")
End Using
$vbLabelText   $csharpLabel

Sortie

Le résultat est un fichier PDF identique en apparence au fichier d'entrée, mais contenant une couche de texte cachée. Open searchable-output.pdf and use Ctrl+F to verify that the embedded text is searchable and copyable.

RenderHocr produces an hOCR document, an HTML file that encodes the text content together with bounding box coordinates for every word. Ceci est utile lorsque les outils en aval nécessitent un positionnement précis des mots, par exemple les moteurs de rédaction ou l'analyse de la mise en page des documents.

Entrée

document-page.png is a document page with the heading "Quarterly Summary Q1 2024" and two paragraphs of financial data covering revenue, operating costs, and growth drivers. The result is saved as output.html.

Page de document en entrée pour la sortie du cadre de délimitation hOCR
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderHocr = true,
};

using OcrInput input = new OcrInput();
input.LoadImage("document-page.png");

OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("output.html");
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderHocr = true,
};

using OcrInput input = new OcrInput();
input.LoadImage("document-page.png");

OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("output.html");
Imports IronOcr

Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .RenderHocr = True
}

Using input As New OcrInput()
    input.LoadImage("document-page.png")

    Dim result As OcrResult = ocr.Read(input)
    result.SaveAsHocrFile("output.html")
End Using
$vbLabelText   $csharpLabel

Sortie

output.html encodes each recognized word with its bounding box coordinates. Ouvrez le fichier dans un navigateur pour inspecter la structure hOCR, ou transmettez-le à un outil en aval pour l'analyse de la mise en page ou la rédaction.

Les deux indicateurs peuvent être activés en même temps si vous avez besoin des trois formats de sortie (texte brut, PDF consultable, et hOCR) à partir d'un seul appel de lecture.

Ces options de sortie fonctionnent indépendamment de la langue de lecture, y compris les alphabets non latins. La section suivante explique comment appliquer le filtrage des caractères à un texte japonais.

Filtrage des caractères Unicode pour les documents internationaux

For international documents in Chinese, Japanese, or Korean, the WhiteListCharacters and BlackListCharacters properties work with Unicode characters. Cela vous permet de restreindre la sortie à des scripts spécifiques, comme uniquement Hiragana et Katakana pour le japonais.

Veuillez noter Assurez-vous que le pack de langue correspondant a été installé (par exemple, IronOcr.Languages.Japanese) avant de continuer.

Entrée

Le document contient un titre (テスト), une phrase japonaise mélangeant Hiragana et Katakana avec des variantes de marque vocale (プ, で), une ligne de prix avec des symboles de bruit sur liste noire (★, ■) et des Kanji (価格), et une ligne de mémo avec un autre symbole sur liste noire (§), plus de Kanji (購入), des variantes de marque vocale supplémentaires (プ, デ) et une base. Katakana (メモ,ール). La liste blanche ne laisse passer que les hiragana de base, les katakana de base, les chiffres et la ponctuation japonaise courante ; Les trois symboles de bruit sont explicitement mis sur liste noire.

Configuration avancée de l'OCR pour l'entrée japonaise

The Unicode character ranges for Hiragana and Katakana are passed as chaîne de caractères literals in WhiteListCharacters, with the noise symbols listed in BlackListCharacters.

Avertissement La console peut ne pas prendre en charge l'affichage des caractères Unicode. Rediriger la sortie vers un fichier .txt est un moyen fiable de vérifier les résultats lors de la gestion de tels caractères.

:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-jp.cs
using IronOcr;
using System.IO;

IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    // Whitelist only Hiragana, Katakana, numbers, and common Japanese punctuation
    WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" +
                            "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" +
                            "0123456789、。?!()¥ー",

    // Blacklist common noise/symbols you want to ignore
    BlackListCharacters = "★■§",
};

var ocrInput = new OcrInput();

// Load Japanese input image
ocrInput.LoadImage("jp.png");

// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);

// Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text);

// You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt");
Imports IronOcr
Imports System.IO

Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" &
                           "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" &
                           "0123456789、。?!()¥ー",
    .BlackListCharacters = "★■§"
}

Dim ocrInput As New OcrInput()

' Load Japanese input image
ocrInput.LoadImage("jp.png")

' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)

' Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text)

' You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt")
$vbLabelText   $csharpLabel

Sortie

Configuration avancée de sortie OCR japonaise

Le résultat filtré complet est disponible sous forme de fichier texte : jp-output.txt .

Étant donné que la liste blanche ne comprend que les caractères Hiragana et Katakana de base, les variantes de marques vocales dérivées telles que プ (pu) et デ (de) sont supprimées. Les caractères kanji comme 価格 (prix) et 購入 (achat) sont également exclus car ils ne font pas partie de l'ensemble de caractères autorisés. Blacklisted symbols like , , and § are actively removed regardless of the whitelist.

Où devrais-je aller ensuite ?

Maintenant que vous savez comment configurer IronOCR pour des scénarios de lecture avancés, explorez :

Pour une utilisation en production, pensez à obtenir une licence pour supprimer les filigranes et accéder à toutes les fonctionnalités.

Questions Fréquemment Posées

Qu'est-ce que TesseractConfiguration dans IronOCR?

La configuration Tesseract dans IronOCR permet aux utilisateurs de personnaliser les paramètres OCR, activant des fonctionnalités de lecture avancées telles que les listes blanches de caractères, la lecture de codes-barres et la prise en charge multilingue.

Comment puis-je configurer une liste blanche de caractères dans IronOCR?

Dans IronOCR, vous pouvez configurer une liste blanche de caractères à l'aide de TesseractConfiguration, ce qui vous permet de spécifier les caractères que le moteur OCR doit reconnaître, utile pour des tâches telles que la lecture des plaques d'immatriculation.

IronOCR peut-il lire les codes-barres et les tableaux de données ?

Oui, IronOCR peut être configuré pour lire les codes-barres et les tableaux de données en ajustant des paramètres spécifiques dans les propriétés TesseractConfiguration pour une extraction précise des données OCR.

IronOCR prend-il en charge les langues internationales telles que le chinois, le japonais et le coréen ?

IronOCR prend en charge les langues internationales, notamment le chinois, le japonais et le coréen, grâce à ses options multilingues TesseractConfiguration.

Quels sont les avantages de l'utilisation de configurations OCR avancées dans IronOCR?

L'utilisation de configurations OCR avancées dans IronOCR permet une reconnaissance de texte plus précise et plus efficace, prenant en charge des tâches spécialisées telles que la reconnaissance de texte spécifique à une langue et l'extraction de données structurées.

Est-il possible d'optimiser IronOCR pour des tâches OCR spécifiques ?

Oui, IronOCR peut être optimisé pour des tâches OCR spécifiques en configurant des paramètres tels que les listes blanches de caractères et en activant la reconnaissance de codes-barres ou de tableaux, améliorant ainsi les performances pour les applications ciblées.

Comment activer la prise en charge multilingue dans IronOCR?

Pour activer la prise en charge multilingue dans IronOCR, vous pouvez ajuster les paramètres de langue dans TesseractConfiguration, permettant ainsi au moteur OCR de reconnaître le texte dans plusieurs langues.

Que sont les listes blanches de caractères et comment sont-elles utilisées dans IronOCR?

Les listes blanches de caractères dans IronOCR sont des listes de caractères spécifiques que le moteur OCR est configuré pour reconnaître, idéales pour des tâches ciblées comme la lecture de chiffres ou de modèles de texte spécifiques.

IronOCR peut-il être utilisé pour lire des formats de données structurés ?

Oui, IronOCR peut être configuré pour lire et traiter des formats de données structurés tels que les codes-barres et les tableaux, offrant ainsi des capacités OCR polyvalentes pour répondre à divers besoins d'extraction de données.

Quelles sont les configurations disponibles dans IronOCR pour la reconnaissance de texte avancée ?

IronOCR propose des configurations telles que des listes blanches de caractères, la prise en charge multilingue et la reconnaissance de codes-barres pour améliorer les capacités avancées de reconnaissance de texte adaptées à des exigences spécifiques.

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,570,591 | Version : 2026.4 vient de sortir
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.