Configuration OCR pour une lecture avancée
IronOCR fournit des méthodes de lecture avancées telles que ReadPassport, ReadLicensePlate, et ReadPhoto qui vont au-delà de l'OCR standard. Ces méthodes sont alimentées par le package IronOcr.Extensions.AdvancedScan. Pour affiner la façon dont ces méthodes traitent le texte, IronOCR expose la classe TesseractConfiguration, donnant aux développeurs un contrôle total sur la liste blanche de caractères, la liste noire, la détection de codes-barres, la lecture de tableaux de données, et plus encore.
Cet article couvre les propriétés TesseractConfiguration disponibles pour une lecture avancée et des exemples pratiques pour configurer l'OCR dans des scénarios réels.
Démarrage rapide : Limiter la sortie OCR à une liste blanche de caractères
Définissez WhiteListCharacters sur TesseractConfiguration avant d'appeler 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
-
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
La classe TesseractConfiguration fournit les propriétés suivantes pour personnaliser le comportement de l'OCR. Celles-ci sont définies via IronTesseract.Configuration.
| Propriété | Type de texte | Description du projet |
|---|---|---|
WhiteListCharacters |
string | 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 |
string | Les caractères dans cette chaîne sont ignorés et retirés activement du résultat OCR. |
ReadBarCodes |
bool | Active ou désactive la détection de codes-barres dans le document lors du traitement OCR. |
ReadDataTables |
bool | 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 | 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 | Lorsqu'elle est activée, la sortie OCR inclut les données hOCR pour un traitement ultérieur ou une exportation. |
TesseractVariables |
Dictionary<string, object> | Fournit un accès direct aux variables de configuration de bas niveau de Tesseract pour un contrôle précis. |
Le dictionnaire TesseractVariables va encore plus loin, exposant des centaines de paramètres du moteur Tesseract sous-jacent pour les cas où les propriétés de haut niveau ne suffisent pas.
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
Un usage courant de WhiteListCharacters est de restreindre la sortie de l'OCR uniquement aux caractères qui peuvent apparaître sur une plaque d'immatriculation : lettres majuscules, chiffres, tirets, et espaces. 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
L'enregistrement de l'immatriculation de véhicule suivant contient un mélange de texte en majuscules, de texte en minuscules, de symboles spéciaux (@, $, #, |) ,*`, et de ponctuation.
BlackListCharacters complète la liste blanche en excluant activement des symboles parasites connus comme , 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 (#`) sont supprimés, tandis que les lettres majuscules et les chiffres survivent. - *"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" . Le tilde (
~), le trait de soulignement, l'accent circonflexe (^), et tous les caractères en minuscule sont enlevés.
La même approche WhiteListCharacters et BlackListCharacters fonctionne pour tout type de document, pas seulement pour les plaques d'immatriculation. 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. Ces fonctionnalités sont contrôlées via TesseractConfiguration:
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-3.cs
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, ' Enable barcode detection within documents
.ReadDataTables = True ' Enable table structure detection
}
- ReadBarCodes : Lorsqu'il est défini sur
true, IronOCR numérise le document pour les codes-barres en plus du texte. Réglez surfalsepour ignorer la détection de codes-barres et accélérer le traitement lorsque les codes-barres ne sont pas attendus. - ReadDataTables : Lorsqu'il est réglé sur
true, Tesseract tente de détecter et de préserver les structures de tableau dans le document. Cela est utile pour les factures, rapports et autres documents tabulaires.
Ces options peuvent être combinées avec WhiteListCharacters et BlackListCharacters pour un contrôle précis sur ce qui est extrait des documents complexes.
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. La prochaine section couvre comment sélectionner le bon PageSegmentationMode pour le type de document.
Contrôler le mode de segmentation des pages
PageSegmentationMode indique à Tesseract comment segmenter l'image d'entrée avant la reconnaissance. 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 |
Pour une étiquette ou une bannière qui contient une seule ligne, SingleLine élimine l'analyse multi-blocs et améliore à la fois la vitesse et la précision.
Entrée
single-line-label.png est une étiquette d'expédition étroite avec exactement une ligne de texte Courier gras : SHIPPING LABEL: TRK-2024-XR9-001.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-4.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.SingleLine,
};
using OcrInput input = new OcrInput();
input.LoadImage("single-line-label.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
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
Pour une page numérisée avec un placement de texte irrégulier, SparseText récupère plus de contenu que Auto.
Entrée
receipt-scan.png est un reçu thermique de Corner Market avec quatre articles en ligne (café, muffin, jus, barre granola), un séparateur en tirets, sous-total, taxe, et total. Il s'agit du type de mise en page où la segmentation par blocs fixes omet des entrées à différentes positions horizontales.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-5.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.SparseText,
};
using OcrInput input = new OcrInput();
input.LoadImage("receipt-scan.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronTesseract
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 et RenderHocr contrôlent les formats de sortie que IronOCR produit en plus du résultat texte brut.
RenderSearchablePdf intègre une couche de texte invisible sur l'image originale, produisant un PDF où les utilisateurs peuvent rechercher et copier du texte tout en gardant l'image numérisée visible. C'est le format de sortie standard pour les flux de travail d'archivage de documents.
Entrée
scanned-document.pdf est une lettre d'affaires d'une page de IronOCR Solutions Ltd. (datée du 15 mars 2024, référence DOC-2024-OCR-0315). Le résultat est enregistré comme searchable-output.pdf.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-6.cs
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 IronTesseract
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. Ouvrez searchable-output.pdf et utilisez Ctrl+F pour vérifier que le texte intégré est consultable et copiable.
RenderHocr produit un document hOCR, un fichier HTML qui encode le contenu texte avec les coordonnées de la boîte englobante pour chaque mot. 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 est une page de document avec l'en-tête "Résumé trimestriel T1 2024" et deux paragraphes de données financières couvrant les revenus, les coûts d'exploitation, et les moteurs de croissance. Le résultat est enregistré comme output.html.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-7.cs
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 IronTesseract
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 encode chaque mot reconnu avec ses coordonnées de boîte englobante. 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
Pour les documents internationaux en chinois, japonais ou coréen, les propriétés WhiteListCharacters et BlackListCharacters fonctionnent avec les caractères Unicode. 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.
Les plages de caractères Unicode pour Hiragana et Katakana sont passées comme littéraux de chaîne dans WhiteListCharacters, avec les symboles parasites répertoriés dans 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. Les symboles en liste noire comme ★, ■, et § sont activement supprimés indépendamment de la liste blanche.
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.

