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 de numérisation 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 des caractères, la liste noire, la détection des codes-barres, la lecture des tables de données, et plus encore.

Cet article couvre les propriétés TesseractConfiguration disponibles pour la 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

Configurez 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 OCR. Ces paramètres sont définis via 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 Fournit un accès direct aux variables de configuration de bas niveau de Tesseract pour un contrôle précis. Voir la liste complète des variables Tesseract.

Le dictionnaire TesseractVariables va encore plus loin, exposant des centaines de paramètres sous-jacents du moteur Tesseract pour les cas où les propriétés de haut niveau ne sont pas suffisantes.

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 cas d'utilisation courant pour 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 informant le moteur d'ignorer tout ce qui est en dehors de l'ensemble de caractères attendu.

Entrée

L'enregistrement d'immatriculation de véhicule suivant contient un mélange de texte en majuscules, de texte en minuscules et de symboles spéciaux (@, $, #, |, *), et la 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 les symboles de bruit 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);
$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 (|Les caractères ) and hash (#`) sont supprimés, tandis que les lettres majuscules et les chiffres sont conservés.
  • *"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, le caret (^) et tous les caractères 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 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 :

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,
};
$vbLabelText   $csharpLabel
  • ReadBarCodes : Lorsqu'il est défini sur true, IronOCR analyse le document à la recherche de codes-barres en plus du texte. Configurez-le sur false pour ignorer la détection des codes-barres et accélérer le traitement lorsque les codes-barres ne sont pas attendus.
  • ReadDataTables : Lorsqu'il est défini 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 de 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 section suivante explique 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 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 avec exactement une ligne de texte Courier en gras : 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);
$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 Corner Market avec quatre lignes (café, muffin, jus, barre de granola), un séparateur en pointillés, un sous-total, la taxe et le 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);
$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 IronOCR produit en plus du résultat en 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 tandis que l'image numérisée reste 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 commerciale d'une seule page 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.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");
$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 du texte ainsi que 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 facteurs de croissance. Le résultat est enregistré sous le nom 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");
$vbLabelText   $csharpLabel

Sortie

output.html encode chaque mot reconnu avec les coordonnées de sa 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 transmises sous forme de chaînes littérales dans WhiteListCharacters, avec les symboles de bruit listé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");
$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 figurant sur la liste noire, tels que , 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.

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,556,263 | Version : 2026.3 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.