Configuration OCR pour une lecture avancée
IronOCR propose des méthodes avancées de lecture de scans telles que ReadPassport, ReadLicensePlate et ReadPhoto qui vont au-delà de l'OCR standard. Ces méthodes sont fournies par le package IronOcr.Extensions.AdvancedScan. Pour affiner la manière dont ces méthodes traitent le texte, IronOCR expose la classe TesseractConfiguration, offrant aux développeurs un contrôle total sur la liste blanche et la liste noire des caractères, la détection des BarCode, la lecture des tableaux de données, et bien plus encore.
Cet article traite des propriétés TesseractConfiguration disponibles pour une lecture approfondie et propose des exemples pratiques de configuration de l'OCR dans des scénarios concrets.
Guide de 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 dans la liste blanche est automatiquement supprimé du résultat, ce qui élimine 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
- Installez IronOCR depuis NuGet
- Installez le package IronOcr.Extensions.AdvancedScan
- Configurer
TesseractConfigurationdes propriétés telles queCaractères autorisésetReadBarCodes - Chargez l'image d'entrée avec
OcrInput - Lisez l'image à l'aide d'une méthode avancée telle que
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.Co/nfiguration.
| Propriété | Type | Description |
|---|---|---|
Caractères autorisés |
string | Seuls les caractères présents dans cette chaîne seront reconnus dans le résultat de l'OCR. Tous les autres caractères sont exclus. |
Caractères interdits |
string | Les caractères de cette chaîne sont activement ignorés et supprimés de la sortie OCR. |
ReadBarCodes |
bool | Active ou désactive la détection des codes-barres dans le document pendant le traitement OCR. |
ReadDataTables |
bool | Active ou désactive la détection de la structure des tableaux dans le document à l'aide de Tesseract. |
PageSegmentationMode |
TesseractPageSegmentationMode | Détermine comment Tesseract segmente l'image d'entrée. Les options incluent AutoOsd, Auto, SingleBlock, SingleLine, SingleWord, et plus encore. |
RenderSearchablePdf |
bool | Lorsqu'elle est activée, la sortie OCR peut être enregistrée sous forme de PDF consultable avec une couche de texte invisible. |
RenderHocr |
bool | Lorsqu'elle est activée, la sortie OCR inclut des données hOCR pour un traitement ultérieur ou une exportation. |
TesseractVariables |
Dictionary<string, object> | Offre 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, en exposant des centaines de paramètres sous-jacents du moteur Tesseract 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.
Configuration d'une liste blanche de caractères pour les plaques d'immatriculation
Un cas d'utilisation courant de WhiteListCharacters consiste à limiter la sortie OCR aux seuls caractères pouvant apparaître sur une plaque d'immatriculation : lettres majuscules, chiffres, tirets et espaces. Cela élimine le bruit et améliore la précision en indiquant au moteur d'ignorer tout ce qui ne fait pas partie du jeu de caractères attendu.
Entrée
Le registre d'immatriculation de véhicule suivant contient un mélange de majuscules, de minuscules et de symboles spéciaux (@, $, #, |, *), et la ponctuation.
BlackListCharacters complète la liste blanche en excluant activement les symboles de bruit connus tels que , 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)
Résultat
Le filtrage par liste blanche est clairement visible dans les résultats :
- " Plate: ABC-1234 " devient " P ABC-1234 ". Le mot " late: " en minuscules est supprimé, tandis que le numéro de plaque est conservé tel quel.
- " VIN : 1HGBH41JXMN109186 " devient " VIN 1HGBH41JXMN109186 ". Les deux-points sont supprimés, mais le VIN en majuscules et le numéro complet sont conservés.
- " Propriétaire : john.doe@email.com " devient " O ". Les minuscules et la ponctuation ont été supprimées.
- " Région : CA-90210 | " Zone #5 " devient " R CA-90210 Z 5 ". Le caractère pipe (
|) and hash (#) sont supprimés, tandis que les lettres majuscules et les chiffres sont conservés. - " Tarif : 125,00 $ + taxes* " devient " F 12500 ". Le signe dollar, la virgule décimale, le signe plus et le mot " tax " en minuscules sont tous supprimés.
- " Ref: ~record_v2^final " devient " R 2 ". Le tilde (
~), le trait de soulignement, le signe d'insertion (^) et tous les caractères en minuscules sont supprimés.
La même approche WhiteListCharacters et BlackListCharacters fonctionne pour tout type de document, pas seulement pour les plaques d'immatriculation. La section suivante montre comment étendre une lecture pour détecter des BARCODES et des structures de tableaux en un seul passage.
Configuration de la lecture des BarCode et des tableaux de données
IronOCR peut détecter les Barcodes et les tableaux structurés dans les documents, en plus du texte. Ces fonctionnalités sont contrôlées via TesseractConfiguration :
IronTesseract ocr = new IronTesseract();
ocr.Co/nfiguration = new TesseractConfiguration
{
// Enable barcode detection within documents
ReadBarCodes = true,
// Enable table structure detection
ReadDataTables = true,
};
IronTesseract ocr = new IronTesseract();
ocr.Co/nfiguration = 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 : lorsqu'il est défini sur
true, IronOCR analyse le document à la recherche de BarCodes en plus du texte. Définissez surfalsepour ignorer la détection des BarCodes et accélérer le traitement lorsque des BarCodes ne sont pas attendus. - ReadDataTables : lorsqu'il est défini sur
true, Tesseract tente de détecter et de préserver les structures de tableaux dans le document. Ceci est utile pour les factures, les rapports et autres documents sous forme de tableaux.
Ces options peuvent être combinées avec WhiteListCharacters et BlackListCharacters pour un contrôle précis sur ce qui est extrait de documents complexes.
Si le filtrage et la détection déterminent ce qui est extrait, l'interprétation de la mise en page est un aspect distinct. La section suivante explique comment choisir le bon PageSegmentationMode en fonction du type de document.
Contrôle du mode de segmentation des pages
PageSegmentationMode indique à Tesseract comment segmenter l'image d'entrée avant la reconnaissance. Le choix d'un mode inadapté à une mise en page donnée entraîne une lecture erronée ou l'omission totale du texte par le moteur.
| Mode | Cas d'utilisation |
|---|---|
AutoOsd |
Analyse automatique de la mise en page avec détection de l'orientation et du script |
Auto |
Analyse automatique de la mise en page sans OSD (par défaut) |
SingleColumn |
En supposant que l'image représente une seule colonne de texte |
SingleBlock |
On suppose que l'image est un bloc de texte unique et homogène |
SingleLine |
En supposant que l'image ne comporte qu'une seule ligne de texte |
SparseText |
Recherche autant de texte que possible, dans n'importe quel ordre |
Pour une étiquette ou une bannière contenant 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 comportant exactement une ligne de texte en gras de police Courier : SHIPPING LABEL: TRK-2024-XR9-001.
IronTesseract ocr = new IronTesseract();
ocr.Co/nfiguration = 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);
IronTesseract ocr = new IronTesseract();
ocr.Co/nfiguration = 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 présentant un placement irrégulier du texte, SparseText récupère plus de contenu que Auto.
Entrée
receipt-scan.png est un ticket de caisse thermique de Corner Market comportant quatre lignes (café, muffin, jus de fruits, barre granola), un séparateur en pointillés, un sous-total, la taxe et le total. Il s'agit d'un type de mise en page où la segmentation en blocs fixes omet des entrées à différentes positions horizontales.
IronTesseract ocr = new IronTesseract();
ocr.Co/nfiguration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.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.Co/nfiguration = 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 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ération de PDF consultables et de sortie hOCR
RenderSearchablePdf et RenderHocr contrôlent les formats de sortie qu'IronOCR génère en plus du résultat en texte brut.
RenderSearchablePdf intègre une couche de texte invisible par-dessus l'image d'origine, produisant un PDF dans lequel les utilisateurs peuvent rechercher et copier du texte tandis que l'image numérisée reste visible. Il s'agit du format de sortie standard pour les workflows d'archivage de documents.
Entrée
scanned-document.pdf est une lettre commerciale d'une page émanant d'IronOCR Solutions Ltd. (datée du 15 mars 2024, référence DOC-2024-OCR-0315). Le résultat est enregistré sous le nom searchable-output.pdf.
IronTesseract ocr = new IronTesseract();
ocr.Co/nfiguration = 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.Co/nfiguration = 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
Résultat
Le résultat est un fichier PDF qui a l'apparence du fichier d'origine mais qui contient une couche de texte masqué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 textuel ainsi que les coordonnées du cadre de sélection pour chaque mot. Cela s'avère utile lorsque des 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 intitulée " Résumé trimestriel T1 2024 " et comportant deux paragraphes de données financières couvrant le chiffre d'affaires, les coûts d'exploitation et les moteurs de croissance. Le résultat est enregistré sous le nom output.html.
IronTesseract ocr = new IronTesseract();
ocr.Co/nfiguration = 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.Co/nfiguration = 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
Résultat
output.html encode chaque mot reconnu avec les coordonnées de son cadre de sélection. Ouvrez le fichier dans un navigateur pour inspecter la structure hOCR, ou transmettez-le à un outil en aval pour une analyse de mise en page ou une expurgation.
Les deux indicateurs peuvent être activés simultanément si vous avez besoin des trois formats de sortie (texte brut, PDF consultable et hOCR) à partir d'un seul appel de lecture.
Ces indicateurs de sortie fonctionnent indépendamment de la langue lue, y compris les scripts non latins. La section suivante montre comment appliquer un filtrage de 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 prennent en charge les caractères Unicode. Cela vous permet de limiter la sortie à des scripts spécifiques, tels que le hiragana et le katakana uniquement pour le japonais.
Entrée
Le document contient un titre (テスト), une phrase en japonais mêlant hiragana et katakana avec des variantes de marques de voyelles (プ, で), une ligne de prix comportant des symboles de bruit interdits (★, ■) et des kanji (価格), ainsi qu'une ligne de note comportant un autre symbole interdit (§), d'autres kanji (購入), des variantes de marques vocaliques supplémentaires (プ, デ) et des katakana de base (メモ, ール). La liste blanche n'autorise que les caractères hiragana de base, les caractères katakana de base, les chiffres et la ponctuation japonaise courante ; Les trois symboles de bruit sont explicitement interdits.
Les plages de caractères Unicode pour le hiragana et le katakana sont transmises sous forme de chaînes littérales dans WhiteListCharacters, les symboles de bruit étant 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")
Résultat
Le résultat filtré complet est disponible sous forme de fichier texte : jp-output.txt.
La liste blanche ne comprenant que les caractères de base en hiragana et en katakana, les variantes dérivées avec marque de voyelle, telles que プ (pu) et デ (de), sont supprimées. Les caractères kanji tels que 価格 (prix) et 購入 (achat) sont également exclus, car ils ne font pas partie du jeu de caractères autorisé. Les symboles figurant sur la liste noire, tels que ★, ■ et §, sont systématiquement supprimés, quelle que soit la liste blanche.
Quelle est la prochaine étape ?
Maintenant que vous savez comment configurer IronOCR pour des scénarios de lecture avancés, découvrez :
- Lecture de types de documents spécifiques tels que les passeports et les plaques d'immatriculation
- Lecture de BarCodes et de QR en tant que cas d'utilisation autonome de l'OCR
- Exportation de fichiers hOCR et de PDF consultables à partir des résultats traités
Pour une utilisation en production, n'oubliez pas d'obtenir une licence afin de supprimer les filigranes et d'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.

