Configuration OCR pour une lecture avancée

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

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.

  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

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.

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

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)
$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 (#`) 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
}
$vbLabelText   $csharpLabel
  • ReadBarCodes : Lorsqu'il est défini sur true, IronOCR numérise le document pour les codes-barres en plus du texte. Réglez sur false pour 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.

Étiquette d'expédition à une seule ligne pour le mode de segmentation OCR SingleLine
: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
$vbLabelText   $csharpLabel

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.

Reçu thermique pour le mode de segmentation OCR SparseText
: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
$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 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
$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. 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.

Page de document en entrée pour la sortie du cadre de délimitation hOCR
: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
$vbLabelText   $csharpLabel

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.

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

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.

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. 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 :

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 6,136,090 | Version : 2026.7 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.