Configuration OCR pour une lecture avancée
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.
-
Installez IronOCR avec le Gestionnaire de Packages NuGet
PM > Install-Package IronOcr -
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); -
Déployez pour tester sur votre environnement de production.
Commencez à utiliser IronOCR dans votre projet dès aujourd'hui avec un essai gratuit
Comment configurer l'OCR pour une lecture avancée
- Installer IronOCR depuis NuGet
- Installer le package IronOcr.Extensions.AdvancedScan
- Configurer les propriétés de
TesseractConfigurationtelles queWhiteListCharactersetReadBarCodes - Charger l'image d'entrée avec
OcrInput - Lire l'image en utilisant une méthode avancée comme
ReadPhoto,ReadLicensePlate, ouReadPassport
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.
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)
Sortie
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
}
- ReadBarCodes: When set to
true, IronOCR scans the document for barcodes in addition to text. Set tofalseto 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.
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
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.
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
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
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.
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
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.
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.
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.
: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")
Sortie
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 :
- Lecture de certains types de documents tels que les passeports et les plaques d'immatriculation
- Lecture de codes-barres et de codes QR en tant que cas d'utilisation OCR autonome
- Exportation des résultats traités sous forme de fichiers hOCR et de PDF consultables
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.

