Comment extraire du texte à partir d'un fichier image

Comment utiliser Iron Tesseract en C#

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

Iron Tesseract en C# s'utilise en créant une instance IronTesseract, en la configurant avec des paramètres de langue et d'OCR, puis en appelant la méthode Read() sur un objet OcrInput contenant vos images ou PDF. Ce projet convertit des images de texte en PDF consultables à l'aide du moteur optimisé de Tesseract 5.

IronOCR fournit une API intuitive pour utiliser le Tesseract 5 personnalisé et optimisé, connu sous le nom d'Iron Tesseract. En utilisant IronOCR et IronTesseract, vous serez en mesure de convertir des images de texte et des documents numérisés en texte et en PDF consultables. La bibliothèque prend en charge 125 langues internationales et comprend des fonctionnalités avancées telles que la lecture de codes-barres et la vision par ordinateur.

Démarrage rapide : Configuration d'IronTesseract en C#

Cet exemple montre comment configurer IronTesseract avec des paramètres spécifiques et effectuer l'OCR en une seule ligne de code.

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  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 IronOcr.IronTesseract { Language = IronOcr.OcrLanguage.English, Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = false, RenderSearchablePdf = true, WhiteListCharacters = "ABCabc123" } }.Read(new IronOcr.OcrInput("image.png"));
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronOCR dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer

Comment créer une instance IronTesseract?

<TODO : Ajouter une image ici -->

<Description : Capture d'écran montrant la sortie ou les résultats de l'exécution d'un code -->

Initialiser un objet Tesseract avec ce code :

:path=/static-assets/ocr/content-code-examples/how-to/irontesseract-initialize-irontesseract.cs
using IronOcr;

IronTesseract ocr = new IronTesseract();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Vous pouvez personnaliser le comportement de IronTesseract en sélectionnant différentes langues, en activant la lecture des codes-barres et en établissant des listes blanches/noires de caractères. IronOcr propose des options de configuration complètes pour affiner votre processus d'OCR :

:path=/static-assets/ocr/content-code-examples/how-to/irontesseract-configure-irontesseract.cs
IronTesseract ocr = new IronTesseract
{
    Configuration = new TesseractConfiguration
    {
        ReadBarCodes = false,
        RenderHocr = true,
        TesseractVariables = null,
        WhiteListCharacters = null,
        BlackListCharacters = "`ë|^",
    },
    MultiThreaded = false,
    Language = OcrLanguage.English,
    EnableTesseractConsoleMessages = true, // False as default
};
Dim ocr As New IronTesseract With {
	.Configuration = New TesseractConfiguration With {
		.ReadBarCodes = False,
		.RenderHocr = True,
		.TesseractVariables = Nothing,
		.WhiteListCharacters = Nothing,
		.BlackListCharacters = "`ë|^"
	},
	.MultiThreaded = False,
	.Language = OcrLanguage.English,
	.EnableTesseractConsoleMessages = True
}
$vbLabelText   $csharpLabel

Une fois configuré, vous pouvez utiliser la fonctionnalité Tesseract pour lire les objets OcrInput. La classe OcrInput fournit des méthodes flexibles pour charger différents formats d'entrée :

:path=/static-assets/ocr/content-code-examples/how-to/irontesseract-read.cs
IronTesseract ocr = new IronTesseract();

using OcrInput input = new OcrInput();
input.LoadImage("attachment.png");
OcrResult result = ocr.Read(input);
string text = result.Text;
Dim ocr As New IronTesseract()

Using input As New OcrInput()
	input.LoadImage("attachment.png")
	Dim result As OcrResult = ocr.Read(input)
	Dim text As String = result.Text
End Using
$vbLabelText   $csharpLabel

Pour les scénarios complexes, vous pouvez exploiter les capacités de multithreading pour traiter plusieurs documents simultanément, ce qui améliore considérablement les performances des opérations par lots.

Qu'est-ce que les variables de configuration avancées de Tesseract?

<TODO : Ajouter une image ici -->

<Description : Diagramme ou capture d'écran illustrant le concept de code -->

L'interface IronOCR Tesseract permet un contrôle total des variables de configuration de Tesseract via la classe IronOCR.TesseractConfiguration . Ces paramètres avancés vous permettent d'optimiser les performances de l'OCR pour des cas d'utilisation spécifiques, tels que la correction de scans de faible qualité ou la lecture de types de documents spécifiques.

Comment utiliser la configuration Tesseract dans le code?

:path=/static-assets/ocr/content-code-examples/how-to/irontesseract-tesseract-configuration.cs
using IronOcr;
using System;

IronTesseract Ocr = new IronTesseract();

Ocr.Language = OcrLanguage.English;
Ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Configure Tesseract Engine
Ocr.Configuration.TesseractVariables["tessedit_parallelize"] = false;

using var input = new OcrInput();
input.LoadImage("/path/file.png");

OcrResult Result = Ocr.Read(input);
Console.WriteLine(Result.Text);
Imports IronOcr
Imports System

Private Ocr As New IronTesseract()

Ocr.Language = OcrLanguage.English
Ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd

' Configure Tesseract Engine
Ocr.Configuration.TesseractVariables("tessedit_parallelize") = False

Dim input = New OcrInput()
input.LoadImage("/path/file.png")

Dim Result As OcrResult = Ocr.Read(input)
Console.WriteLine(Result.Text)
$vbLabelText   $csharpLabel

IronOCR propose également une configuration spécialisée pour différents types de documents. Par exemple, lorsque vous lisez des passeports ou traitez des chèques MICR, vous pouvez appliquer des filtres de prétraitement spécifiques et une détection de région pour améliorer la précision.

Exemple de configuration pour des documents financiers :

// Example: Configure for financial documents
IronTesseract ocr = new IronTesseract
{
    Language = OcrLanguage.English,
    Configuration = new TesseractConfiguration
    {
        PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock,
        TesseractVariables = new Dictionary<string, object>
        {
            ["liste blanche de caractères tessedit"] = "0123456789.$,",
            ["textord_lourd_nr"] = false,
            ["bords_max_enfants_par_contour"] = 10
        }
    }
};

// Apply preprocessing filters for better accuracy
using OcrInput input = new OcrInput();
input.LoadPdf("financial-document.pdf");
input.Deskew();
input.EnhanceResolution(300);

OcrResult result = ocr.Read(input);
// Example: Configure for financial documents
IronTesseract ocr = new IronTesseract
{
    Language = OcrLanguage.English,
    Configuration = new TesseractConfiguration
    {
        PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock,
        TesseractVariables = new Dictionary<string, object>
        {
            ["liste blanche de caractères tessedit"] = "0123456789.$,",
            ["textord_lourd_nr"] = false,
            ["bords_max_enfants_par_contour"] = 10
        }
    }
};

// Apply preprocessing filters for better accuracy
using OcrInput input = new OcrInput();
input.LoadPdf("financial-document.pdf");
input.Deskew();
input.EnhanceResolution(300);

OcrResult result = ocr.Read(input);
CONVERTER NOT RUNNING
$vbLabelText   $csharpLabel

Quelle est la liste complète de toutes les variables de configuration de Tesseract ? Ces valeurs peuvent être définies à l'aide de `IronTesseract.Configuration.TesseractVariables["key"] = value;` . Les variables de configuration vous permettent d'affiner le comportement de l'OCR pour obtenir des résultats optimaux avec vos documents spécifiques. Pour des conseils détaillés sur l'optimisation des performances de l'OCR, consultez notre [guide de configuration de l'OCR rapide](https://ironsoftware.com/csharp/ocr/examples/tune-tesseract-for-speed-in-dotnet/). 0Use old baseline algorithm 0All doc is proportial text 0Debug on fixed pitch test 0Turn off dp fixed pitch algorithm 0Do even faster pitch algorithm 0Write full metric stuff 0Draw row-level cuts 0Draw page-level cuts 0Use correct answer for fixed/prop 0Attempt whole doc/block fixed pitch 0Display separate words 0Display separate words 0Display forced fixed pitch words 0Moan about prop blocks 0Moan about fixed pitch blocks 0Dump stats when moaning 0Do current test 0.08Fraction of xheight for sameness 0.5Max initial cluster size 0.15Min initial cluster spacing 0.25Fraction of xheight 0.75Fraction of xheight 0.6Allowed size variance 0.3Non-fuzzy spacing region 2.8Min ratio space/nonspace 2Min ratio space/nonspace 1.5Pitch IQR/Gap IQR threshold 0.2Xh fraction noise in pitch 0.5Min width of decent blobs 0.1Fraction of x to ignore 0Debug level for unichar ambiguities 0Classify debug level 1Normalization Method ... 0Matcher Debug Level 0Matcher Debug Flags 0Learning Debug Level: 1Min # of permanent classes 3Reliable Config Threshold 5Enable adaption even if the ambiguities have not been seen 230Threshold for good protos during adaptive 0-255 230Threshold for good features during adaptive 0-255 229Class Pruner Threshold 0-255 15Class Pruner Multiplier 0-255: 7Class Pruner CutoffStrength: 10Integer Matcher Multiplier 0-255: 0Set to 1 for general debug info, to 2 for more details, to 3 to see all the debug messages 0Debug level for hyphenated words. 2Size of dict word to be treated as non-dict word 0Stopper debug level 10Max words to keep in list 10000Maximum number of different character choices to consider during permutation. This limit is especially useful when user patterns are specified, since overly generic patterns can result in dawg search exploring an overly large number of options. 1Fix blobs that aren't chopped 0Chop debug 10000Split Length 2Same distance 6Min Number of Points on Outline 150Max number of seams in seam_pile -50Min Inside Angle Bend 2000Min Outline Area 90Width of (smaller) chopped blobs above which we don't care that a chop is not near the center. 3X / Y length weight 0Debug level for wordrec 4Max number of broken pieces to associate 0SegSearch debug level 2000Maximum number of pain points stored in the queue 0Language model debug level 8Maximum order of the character ngram model 10Maximum number of prunable (those for which PrunablePath() is true) entries in each viterbi list recorded in BLOB_CHOICEs 500Maximum size of viterbi lists recorded in BLOB_CHOICEs 3Minimum length of compound words 0Display Segmentations 6Page seg mode: 0=osd only, 1=auto+osd, 2=auto_only, 3=auto, 4=column, 5=block_vert, 6=block, 7=line, 8=word, 9=word_circle, 10=char,11=sparse_text, 12=sparse_text+osd, 13=raw_line (Values from PageSegMode enum in tesseract/publictypes.h) 2Which OCR engine(s) to run (Tesseract, LSTM, both). Défauts to loading and running the most accurate available. 0Whether to use the top-line splitting process for Devanagari documents while performing page-segmentation. 0Whether to use the top-line splitting process for Devanagari documents while performing ocr. 0Debug level for BiDi 1Debug level 0Page number to apply boxes from 0Amount of debug output for bigram correction. 0Debug reassignment of small outlines 8Max diacritics to apply to a blob 16Max diacritics to apply to a word 0Reestimate debug 2alphas in a good word 39Adaptation decision algorithm for tess 0Print multilang debug info. 0Print paragraph debug info. 2Only preserve wds longer than this 10For adj length in rating per ch 1How many potential indicators needed 4Don't crunch words with long lower case strings 4Don't crunch words with long lower case strings 3Crunch words with long repetitions 1How many non-noise blbs either side? 1What constitues done for spacing 0Contextual fixspace debug 8Max allowed deviation of blob top outside of font data 8Min change in xht before actually trying it 0Debug level for sub & superscript fixer 85Set JPEG quality level 0Specify DPI for input image 50Specify minimum characters to try during OSD 0Rejection algorithm 2Rej blbs near image edge limit 8Reject any x-ht lt or eq than this -1-1 -> All pages, else specific page to process 1Run in parallel where possible 2Allows to include alternative symbols choices in the hOCR output. Valid input values are 0, 1 and 2. 0 is the default value. With 1 the alternative symbol choices per timestep are included. With 2 alternative symbol choices are extracted from the CTC process instead of the lattice. The choices are mapped per character. 5Sets the number of cascading iterations for the Beamsearch in lstm_choice_mode. Note that lstm_choice_mode must be set to a value greater than 0 to produce results. 0Debug data 3or should we use mean 10No.samples reqd to reestimate for row 40No.gaps reqd with 1 large gap to treat as a table 20No.gaps reqd with few cert spaces to use certs 1How to avoid being silly 7Pixel size of noise 0Baseline debug level 10Fraction of size for maxima 16Transitions for normal blob 1super norm blobs to save row 0Use ambigs for deciding whether to adapt to a character 0Prioritize blob division over chopping 1Enable adaptive classifier 0Character Normalized Matching 0Baseline Normalized Matching 1Enable adaptive classifier 0Use pre-adapted classifier templates 0Save adapted templates to a file 0Enable match debugger 0Non-linear stroke-density normalization 0Bring up graphical debugging windows for fragments training 0Use two different windows for debugging the matching: One for the protos and one for the features. 0Assume the input is numbers [0-9]. 1Load system word dawg. 1Load frequent word dawg. 1Load unambiguous word dawg. 1Load dawg with punctuation patterns. 1Load dawg with number patterns. 1Load dawg with special word bigrams. 0Use only the first UTF8 step of the given string when computing log probabilities. 0Make AcceptableChoice() always return false. Useful when there is a need to explore all segmentations 0Don't use any alphabetic-specific tricks. Set to true in the traineddata config file for scripts that are cursive or inherently fixed-pitch 0Save Document Words 1Merge the fragments in the ratings matrix and delete them after merging 1Associator Enable 0force associator to run regardless of what enable_assoc is. This is used for CJK where component grouping is necessary. 1Chop enable 0Vertical creep 1Use new seam_pile 0include fixed-pitch heuristics in char segmentation 0Only run OCR for words that had truth recorded in BlamerBundle 0Print blamer debug messages 0Try to set the blame for errors 1Save alternative paths found during chopping and segmentation search 1Words are delimited by space 0Use sigmoidal score for certainty 0Take segmentation and labeling from box file 0Conversion of word/line box file to char box file 0Generate training data from boxed chars 0Generate more boxes from boxed chars 0Break input into lines and remap boxes if present 0Dump intermediate images made during page segmentation 1Try inverting the image in LSTMRecognizeWord 0Perform training for ambiguities 0Generate and print debug information for adaption 0Learn both character fragments (as is done in the special low exposure mode) as well as unfragmented characters. 0Each bounding box is assumed to contain ngrams. Only learn the ngrams whose outlines overlap horizontally. 0Draw output words 0Dump char choices 0Print timing stats 1Try to improve fuzzy spaces 0Don't bother with word plausibility 1Crunch double hyphens? 1Add words to the document dictionary 0Output font info per char 0Block and Row stats 1Enable correction based on the word bigram dictionary. 0Enable single word correction based on the dictionary. 1Remove and conditionally reassign small outlines when they confuse layout analysis, determining diacritics vs noise 0Do minimal rejection on pass 1 output 0Test adaption criteria 0Test for point 1Run paragraph detection on the post-text-recognition (more accurate) 1Use ratings matrix/beam search with lstm 1Reduce rejection on good docs 1Reject spaces? 0Add font info to hocr output 0Add coordinates for each character to hocr output 1Before word crunch? 0Take out ~^ early? 1As it says 1Don't touch sensible strings 0Use dictword test 1Individual rejection control 1Individual rejection control 1Individual rejection control 0Extend permuter check 0Extend permuter check 0Output text with boxes 0Capture the image from the IPE 0Run interactively? 1According to dict_word 0In multilingual mode use params model of the primary language 0Debug line finding 0Use CJK fixed pitch model 0Allow feature extractors to see the original outline 0Only initialize with the config file. Useful if the instance is not going to be used for OCR but say only for layout analysis. 0Turn on equation detector 1Enable vertical detection 0Force using vertical text page mode 0Preserve multiple interword spaces 1Detect music staff and remove intersecting components 0Script has no xheight, so use a single mode 0Space stats use prechopping? 0Constrain relative values of inter and intra-word gaps for old_to_method. 1Block stats to use fixed pitch rows? 0Force word breaks on punct to break long lines in non-space delimited langs 0Space stats use prechopping? 0Fix suspected bug in old code 1Only stat OBVIOUS spaces 1Only stat OBVIOUS spaces 1Only stat OBVIOUS spaces 1Only stat OBVIOUS spaces 1Use row alone when inadequate cert spaces 0Better guess 0Pass ANY flip to context? 1Don't restrict kn->sp fuzzy limit to tables 0Don't remove noise blobs 0Display unsorted blobs 0Display unsorted blobs 1Reject noise-like words 1Reject noise-like rows 0Debug row garbage detector Class str to debug learning A filename of user-provided words. A suffix of user-provided words located in tessdata. A filename of user-provided patterns. A suffix of user-provided patterns located in tessdata. Output file for ambiguities found in the dictionary Word for which stopper debug information should be printed to stdout Blacklist of chars not to recognize Whitelist of chars to recognize List of chars to override tessedit_char_blacklist .expExposure value follows this pattern in the image filename. The name of the image files are expected to be in the form [lang].[fontname].exp [num].tif Ponctuation initiale).,;: ?!1st Trailing punctuation 2nd Trailing punctuationPage separator (default is form feed control character) 0.2Character Normalization Range ... 1.5Veto ratio between classifier ratings 5.5Veto difference between classifier certainties 0.125Good Match (0-1) 0Great Match (0-1) 0.02Perfect Match (0-1) 0.15Bad Match Pad (0-1) 0.1New template margin (0-1) 12Avg. noise blob length 0.015Maximum angle delta for prototype clustering 0Penalty to apply when a non-alnum is vertically out of its expected textline position 1.5Rating scaling factor 20Certainty scaling factor 0.00390625Scale factor for features not used 2.5Prune poor adapted results this much worse than best result -1Threshold at which facteur d'élagage adapté à la classification starts -3Exclude fragments that do not look like whole characters from training and adaption 0.3Max large speckle size 10Penalty to add to worst rating for noise 0.125Score penalty (0.1 = 10%) added if there are subscripts or superscripts in a word, but it is otherwise OK. 0.25Score penalty (0.1 = 10%) added if an xheight is inconsistent. 1Score multiplier for word matches which have good case and are frequent in the given language (lower is better). 1.1Score multiplier for word matches that have good case (lower is better). 1.3125Défaut score multiplier for word matches, which may have case issues (lower is better). 1.25Score multiplier for glyph fragment segmentations which do not match a dictionary word (lower is better). -2.25Worst certainty for words that can be inserted into the document dictionary -2.25Good blob limit 2Rapport largeur/hauteur maximal des caractères
Variable de configuration Tesseract Défaut Signification
classifier_num_cp_niveaux3Nombre de niveaux de taille de l'élagueuse
textord_debug_tabfind0Recherche de l'onglet de débogage
textord_debug_bugs0Activer les résultats relatifs aux bogues dans la recherche par onglets
textord_testregion_gauche-1Bord gauche du rectangle de rapport de débogage
textord_testregion_top-1Bord supérieur du rectangle de rapport de débogage
textord_testregion_droite2147483647Bord droit du rectangle de débogage
textord_testregion_bottom2147483647Bord inférieur du rectangle de débogage
textord_tabfind_show_partitions0Afficher les limites de la partition, en attente si >1
niveau de débogage de la division devanagari0Niveau de débogage pour le processus shiro-rekha divisé.
bords_max_enfants_par_contour10Nombre maximal d'enfants à l'intérieur d'un contour de personnage
couches enfants maximum des bords5Nombre maximal de calques enfants imbriqués dans le contour d'un personnage
bords_enfants_par_petit-enfant10Rapport d'importance pour le découpage des contours
limite du nombre d'enfants aux bords45Nombre maximal de trous autorisés dans la tache
bords_min_non-trou12Nombre minimal de pixels pour un caractère potentiel dans la boîte
rapport de surface du chemin des bords40Max lensq/area for acceptable child outline
textord_fp_chop_error2Courbure maximale autorisée des cellules hachées
textord_tabfind_afficher_images0Show image blobs
textord_skewsmooth_offset4Pour un facteur lisse
textord_skewsmooth_offset21Pour un facteur lisse
textord_test_x-2147483647coordonnées du point de test
textord_test_y-2147483647coordonnées du point de test
textword_min_blobs_dans_ligne4Nombre minimal de blobs avant le comptage du gradient
textord_spline_minblobs8Min blobs in each spline segment
textord_spline_médianewin6Size of window for spline segmentation
textord_max_blob_overlaps4Max number of blobs a big blob can overlap
textord_min_xhauteur10Min credible pixel xheight
essais_lms_ligne_textord12Number of linew fits to do
vieux_trou_perte10Max lost before fallback line used
version linéaire de Pitsync6Use new fast algorithm
profondeur_fausse_synchronisation_pit1Max advance fake generation
textord_tabfind_show_strokewidths0Show stroke widths
intervalle de matrice de points textord3Max pixel gap for broken pixed pitch
bloc de débogage textord0Block to do debug on
plage de hauteur de textord2Max range test on pitch
pouvoir de veto des mots textord5Rows required to outvote a veto
equationdetect_save_bi_image0Save input bi image
equationdetect_save_spt_image0Save special character image
equationdetect_save_seed_image0Save the seed image
equationdetect_save_merged_image0Save the merged image
poly_debug0Debug old poly
poly_wide_objects_better1More accurate approx on wide things
wordrec_display_splits0Display splits
textord_debug_imprimable0Make debug windows printable
textord_space_size_is_variable0If true, word delimiter spaces are assumed to have variable width, even though characters have fixed pitch.
textord_tabfind_show_initial_partitions0Show partition bounds
textord_tabfind_show_reject_blobs0Show blobs rejected as noise
textord_tabfind_afficher_colonnes0Show column bounds
textord_tabfind_show_blocks0Show final block bounds
textord_tabfind_find_tables1run table detection
devanagari_split_debugimage0Whether to create a debug image for split shiro-rekha process.
textord_show_fixed_cuts0Draw fixed pitch cell boundaries
edge_use_new_outline_complexity0Use the new outline complexity module
edges_debug0turn on debugging for this module
contours_enfants_fix0Remove boxy parents of char-like children
gapmap_debug0Say which blocks have tables
gapmap_utiliser_ends0Use large space at start and end of rows
gapmap_no_isolated_quanta0Ensure gaps not less than 2quanta wide
textord_lourd_nr0Vigorously remove noise
textord_show_initial_rows0Display row accumulation
textord_show_parallel_rows0Display page correlated rows
textord_show_expanded_rows0Display rows after expanding
textord_afficher_dernières_lignes0Display rows after final fitting
textord_show_final_blobsDisplay blob bounds after pre-ass
textord_test_paysage0Tests refer to land/port
lignes de base parallèles textord1Force parallel baselines
lignes de base droites de textord0Force straight baselines
textord_anciennes_bases1
textord_old_xhauteur0Use old xheight algorithm
textord_fix_xheight_bug1Use spline baseline
textord_fix_makerow_bug1Prevent multiple baselines
textord_debug_xheights0Test xheight algorithms
textord_biased_skewcalc1Bias skew estimates with line length
interpolation de textord_skew1Interpolate across gaps
textord_new_initial_xheight1Use test xheight mechanism
textord_debug_blob0Print test blob information
textord_vraiment_vieux_xhauteur0Use original wiseowl xheight
textord_oldbl_debug0Debug old baseline generation
lignes de base de débogage textord0Debug baseline generation
textord_oldbl_paradef1Use para default mechanism
textord_oldbl_splines de séparation1Split stepped splines
textord_oldbl_merge_parts1Merge suspect partitions
vieux_corrfix1Improve correlation of heights
oldbl_xhfix0Fix bug in modes threshold for xheights
mode textord_ocropus0Make baselines for ocropus
textord_tabfind_only_strokewidths0Only run stroke widths
textord_tabfind_show_initiitialtabs0Show tab candidates
textord_tabfind_show_finaltabs0Show tab vectors
textord_afficher_tables0Show table regions
textord_tablefind_show_mark0Debug table marking steps in detail
textord_tablefind_show_stats0Show page stats used in table finding
textord_tablefind_recognize_tables0Enables the table recognizer for table layout and filtering.
textord_all_prop
textord_debug_pitch_test
textord_désactiver_test_de_hauteur
test de balle rapide textord
textord_debug_pitch_metric
textord_show_row_cuts
textord_show_page_cuts
triche textord_pitch
textord_blockndoc_fixed
textord_afficher_mots_initiales
textord_afficher_nouveaux_mots
textord_show_fixed_words
textord_blocksall_fixed
textord_blocksall_prop
textord_blocksall_testing
mode de test textord
textord_pitch_rowsimilarité
mots_initiale_minuscule
mots_initiale_majuscule
mots_propriété_par_défaut_espace
mots_espace_fixe_par_défaut
limite_fixe_par_défaut_de_mots
textord_mots_definite_spread
textord_spacesize_ratiofp
textord_spacesize_ratioprop
rapport textord_fpiqr
textord_max_pitch_iqr
textord_fp_largeur_min
textord_décalage_soulignement
niveau_debug_ambigs
classifier_debug_level
méthode de normalisation de la classification
niveau_de_débogage_matcher
drapeaux_debug_matcher
niveau_debug_de_classification_de_l'apprentissage
matcher_permanent_classes_min
matcher_min_examples_for_prototyping
matcher_suffisant_exemples_pour_prototypage
classifier_adapter_proto_seuil
seuil d'adaptation des caractéristiques de classification
seuil de classification_classe_élagage
multiplicateur de classify_class_pruner
classifier_cp_seuil_force
multiplicateur de correspondance d'entiers de classification
niveau_debug_dawg
niveau de débogage du tiret
taille_petit_mot_stopper
niveau_de_débogage_stopper
tessedit_truncate_wordchoice_log
max_permuter_attempts
réparer_blobs_non_coupés
chop_debug
longueur_de_séparation_couper
même_distance
points de contour min_couper
taille_de_pile_de_couture_coupée
couper_à_l'intérieur_angle
zone de contour min_couper
largeur_max_centrée_couper
poids_x_y
niveau de débogage wordrec
wordrec_max_join_chunks
niveau de débogage de la recherche segmentée
segsearch_max_pain_points
segsearch_max_futile_classifications20Maximum number of pain point classifications per chunk that did not result in finding a better word choice.
niveau_de_débogage_du_modèle_de_langue
ordre_ngram_du_modèle_de_langue
modèle_de_langue_liste_viterbi_nombre_maximum_élaguable
taille maximale de la liste Viterbi du modèle de langage
longueur minimale du modèle de langage
wordrec_display_segmentations
tessedit_pageseg_mode
mode moteur otesedit_ocr
pageseg_devanagari_split_strategy
ocr_devanagari_split_strategy
bidi_debug
appliquer_débogage
page de la boîte d'application
tessedit_bigram_debug
suppression_du_bruit_de_débogage
bruit_maxparblob
bruit_max par mot
niveau de débogage x_ht
qualité_min_initial_alphas_requis
mode d'adaptation tessedit_tess
niveau_de_débogage_multilingue
niveau_de_débogage_paragraphe
tessedit_preserve_min_wd_len
crunch_rating_max
indicateurs_de_croûte
crunch_leave_lc_strings
crunch_leave_uc_strings
crunch_long_repetitions
crunch_debug0As it says
fixsp_non_noise_limit
fixsp_done_mode
niveau_de_correction_d_espace_de_débogage
x_ht_acceptance_tolérance
x_ht_min_change
superscript_debug
qualité_jpg
dpi défini par l'utilisateur
nombre_min_de_caractères_à_essayer
suspect_level99Suspect marker level
suspect_short_words2Don't suspect dict wds longer than this
mode de rejet de tessedit
tessedit_image_border
min_sane_x_ht_pixels
numéro_de_page_tessedit
tessedit_paralléliser
lstm_choice_mode
itérations de choix lstm
niveau_debug_tosp
tosp_espace_suffisant_échantillons_pour_la_médiane
tosp_redo_kern_limit
tosp_peu_d'échantillons
tosp_short_row
méthode tosp_sanity
taille_maximale_bruit_textord
textord_ligne_de_base_debug
textord_noise_sizefraction
textord_noise_translimit
textord_noise_sncount
utiliser_ambiguïtés_pour_l'adaptation
prioriser_division
classifier_activer_apprentissage
tess_cn_matching
tess_bn_matching
classifier_activer_correspondance_adaptative
classifier_utiliser_modèles_pré_adaptés
classifier_sauvegarder_modèles_adaptés
classifier_activer_débogueur_adaptatif
classifier_non-linéaire_norm
disable_character_fragments1Do not include character fragments in the results of the classifier
classifier_déboguer_fragments_de_personnages
matcher_debug_fenêtres séparées
classify_bln_numeric_mode
charger_system_dawg
charge_freq_chien
charger_unambig_dawg
charger_punc_dawg
charger_numéro_chien
charger_bigram_dawg
utiliser_uniquement_la_première_étape_uft8
stopper_pas_de_choix_acceptables
segment_nonalphabétique_script
enregistrer_doc_words
fusionner_fragments_dans_la_matrice
wordrec_enable_assoc
force_word_assoc
activer_couper
chop_vertical_creep
couper_nouvelle_couture_pile
supposer_fixed_pitch_char_segment
wordrec_skip_no_truth_words
wordrec_debug_blamer
wordrec_run_blamer
save_alt_choices
language_model_ngram_on0Turn on/off the use of character ngram model
language_model_ngram_use_ only_first_uft8_step0Use only the first UTF8 step of the given string when computing log probabilities.
modèle_de_langue_ngramme_espace_délimité_langue
l'utilisation du modèle de langage et la certitude sigmoïdale
tessedit_resegment_from_boxes
tessedit_resegment_from_line_boxes
tessedit_train_from_boxes
tessedit_make_boxes_from_boxes
tessedit_reconnaissance_ligne_de_train
tessedit_dump_pageseg_images
tessedit_do_invert
tessedit_ambigs_training
tessedit_adaptation_debug
applybox_learn_chars_and_char_frags_mode
applybox_learn_ngrams_mode
tessedit_display_outwords
tessedit_dump_choices
tessedit_timing_debug
tessedit_fix_flozzy_spaces
tessedit_unrej_any_wd
tessedit_fix_hyphens
tessedit_enable_doc_dict
polices de débogage tessedit
rejet du bloc de débogage tessedit
tessedit_activer_la_correction_des_bigrammes
tessedit_enable_dict_correction
activer_la_suppression_du_bruit
tessedit_minimal_rej_pass1
adaptation_test_tessedit
test_pt
basé sur le texte du paragraphe
lstm_use_matrix
tessedit_bonne_qualité_non_rej
tessedit_use_reject_spaces
tessedit_preserve_blk_rej_perfect_wds1Only rej partially rejected words in block rejection
tessedit_preserve_row_rej_perfect_wds1Only rej partially rejected words in row rejection
tessedit_dont_blkrej_good_wds0Use word segmentation quality metric
tessedit_dont_rowrej_good_wds0Use word segmentation quality metric
tessedit_row_rej_good_docs1Apply row rejection to good docs
tessedit_reject_bad_qual_wds1Reject all bad quality wds
tessedit_debug_doc_rejection0Page stats
tessedit_debug_quality_metrics0Output data to debug file
bland_unrej0unrej potential with no checks
unlv_tilde_crunching0Mark v.bad words for tilde crunch
info_police_hogr
boîtes_de_caractères_hocr
crunch_early_merge_tess_fails
crunch_early_convert_bad_unlv_chs
crunch_terrible_garbage
crunch_leave_ok_strings
crunch_accept_ok1Use acceptability in okstring
crunch_leave_accept_strings0Don't pot crunch sensible strings
crunch_include_numerals0Fiddle alpha figures
tessedit_prefer_joined_punct0Reward punctuation joins
tessedit_write_block_separators0Write block separators in output
tessedit_write_rep_codes0Write repetition char code
tessedit_write_unlv0Write .unlv output file
tessedit_create_txt0Write .txt output file
tessedit_create_hocr0Write .html hOCR output file
tessedit_create_alto0Write .xml ALTO file
tessedit_create_lstmbox0Write .box file for LSTM training
tessedit_create_tsv0Write .tsv output file
tessedit_create_wordstrbox0Write WordStr format .box output file
tessedit_create_pdf0Write .pdf output file
textonly_pdf0Create PDF with only one invisible text layer
suspect_constrain_1Il0UNLV keep 1Il chars rejected
tessedit_minimal_rejection0Only reject tess failures
tessedit_zero_rejection0Don't reject ANYTHING
tessedit_word_for_word0Make output have exactly one word per WERD
tessedit_zero_kelvin_rejection0Don't reject ANYTHING AT ALL
tessedit_rejection_debug0Adaption debug
tessedit_flip_0O1Contextual 0O O0 flips
rej_trust_doc_dawg0Use DOC dawg in 11l conf. detector
rej_1Il_utilise_dict_word
rej_1Il_trust_permuter_type1Don't double check
rej_use_tess_accepté
rej_use_tess_blanks
rej_use_good_perm
rej_use_sensible_wd
rej_alphas_in_number_perm
tessedit_create_boxfile
tessedit_write_images
mode d'affichage interactif
tessedit_override_permuter
tessedit_use_primary_params_model
textord_tabfind_show_vlines
textord_use_cjk_fp_model
poly_autoriser_detailed_fx
tessedit_init_config_only
textord_equation_detect
textord_tabfind_vertical_text
textord_tabfind_force_vertical_text
préserver_les_espaces_intermots
pageseg_appliquer_masque_musical
mode de hauteur unique de textord
tosp_old_to_method
tosp_old_to_constrain_sp_kn
tosp_only_use_prop_rows
tosp_force_wordbreak_on_punct
tosp_utiliser_avant_couper
tosp_old_to_bug_fix
tosp_block_use_cert_spaces
tosp_row_use_cert_spaces
tosp_narrow_blobs_not_cert
tosp_row_use_cert_spaces1
tosp_recovery_isolated_row_stats
tosp_seulement_de_petites_lacunes_pour_le_kern
tosp_all_flips_fuzzy
tosp_fuzzy_limit_all
textord_pas_de_rejets
textord_show_blobs
textord_show_boxes
mots_bruits
texteord_noise_rejrows
textord_noise_debug
classify_learn_debug_str
fichier_mots_utilisateur
suffixe_mots_utilisateur
fichier de modèles d'utilisateur
suffixe des modèles d'utilisateur
fichier de sortie des mots ambigus
mot_à_déboguer
tessedit_char_blacklist
liste blanche de caractères tessedit
tessedit_char_unblacklist
tessedit_write_params_to_fileWrite all parameters to the given file.
appliquer_modèle_d'exposition_boîte
chs_leading_punct('`"
chs_trailing_punct1
chs_trailing_punct2)'`"
contours_impairs%|Nombre de contours non standard
contours_2ij!?%":;Nombre de contours non standard
ponctuation numérique.,Punct. chs expected WITHIN numbers
caractère_non_reconnu|Output char for unidentified blobs
ok_répété_ch_non_alphanum_wds-?*=Allow NN to unrej
ensemble_de_conflit_I_l_1Il1 []Il1 conflict set
type_de_fichier.tifFilename extension
tessedit_load_sublangsList of languages to load with this one
séparateur de page
classifier_char_norm_range
classify_max_ratio
classifier_max_marge_d'incertitude
seuil de correspondance_bon
résultat_adaptatif_fiable_matcher
seuil de correspondance parfait
matcher_bad_match_pad
marge de notation du matcher
taille_moyenne_bruit_matcher
matcher_clustering_max_angle_delta
pénalisation_indésirable_déchet
échelle d'évaluation
échelle de certitude
tessedit_class_miss_scale
facteur d'élagage adapté à la classification
seuil d'élagage adapté à la classification
classify_character_fragments_ garbage_certainty_threshold
speckle_large_max_size
pénalité de notation de speckle
xheight_penalty_subscripts
xheight_penalty_incohérent
segment_penalty_dict_frequent_word
segment_penalty_dict_case_ok
segment_penalty_dict_case_bad
segment_penalty_dict_nonword
échelle de certitude20Certainty scaling factor
stopper_nondict_certainty_base-2.5Certainty threshold for non-dict words
stopper_phase2_certainty_rejection_offset1Reject certainty offset
stopper_certainty_per_char-0.5Certainty to add for each dict char above small word size.
stopper_allowable_character_badness3Max certaintly variation allowed in a word (in sigma)
doc_dict_pending_threshold0Worst certainty for using pending dictionary
doc_dict_certainty_threshold
seuil de certitude de tessedit
chop_split_dist_knob0.5Split length adjustment
chop_overlap_knob0.9Split overlap adjustment
chop_center_knob0.15Split center adjustment
chop_sharpness_knob0.06Split sharpness adjustment
chop_width_change_knob5Width change adjustment
chop_ok_split100OK split limit
chop_good_split50Good split limit
segsearch_max_char_wh_ratio
Pour de meilleurs résultats, il est recommandé d'utiliser les [filtres de prétraitement d'image](https://ironsoftware.com/csharp/ocr/examples/ocr-image-filters-for-net-tesseract/) d'IronOCR avant d'appliquer l'OCR. Ces filtres peuvent améliorer considérablement la précision, en particulier lorsque vous travaillez avec des [scans de mauvaise qualité](https://ironsoftware.com/csharp/ocr/examples/ocr-low-quality-scans-tesseract/) ou des documents complexes tels que des [tableaux](https://ironsoftware.com/csharp/ocr/examples/read-table-in-document/).

Questions Fréquemment Posées

Comment configurer IronTesseract pour l'OCR en C# ?

Pour configurer IronTesseract, créez une instance IronTesseract et définissez des propriétés telles que la langue et la configuration. Vous pouvez spécifier la langue de l'OCR (parmi 125 langues prises en charge), activer la lecture des codes-barres, configurer la sortie PDF avec recherche et définir la liste blanche des caractères. Par exemple : var tesseract = new IronOcr.IronTesseract { Language = IronOcr.OcrLanguage.English, Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = false, RenderSearchablePdf = true } ; var tesseract = new IronOcr.IronTesseract = new IronOcr.OcrLanguage.English, Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = false, RenderSearchablePdf = true } } ;

Quels sont les formats d'entrée pris en charge par IronTesseract ?

IronTesseract accepte différents formats d'entrée grâce à la classe OcrInput. Vous pouvez traiter des images (PNG, JPG, etc.), des fichiers PDF et des documents scannés. La classe OcrInput fournit des méthodes flexibles pour charger ces différents formats, ce qui facilite l'exécution de l'OCR sur pratiquement n'importe quel document contenant du texte.

Puis-je lire des codes-barres en même temps que du texte à l'aide d'IronTesseract ?

Oui, IronTesseract comprend des fonctionnalités avancées de lecture de codes-barres. Vous pouvez activer la détection des codes-barres en définissant ReadBarCodes = true dans la TesseractConfiguration. Cela vous permet d'extraire à la fois des données textuelles et des codes-barres du même document en une seule opération d'OCR.

Comment créer des PDF consultables à partir de documents numérisés ?

IronTesseract peut convertir des documents et des images numérisés en PDF interrogeables en définissant RenderSearchablePdf = true dans la TesseractConfiguration. Cela permet de créer des fichiers PDF dont le texte peut être sélectionné et faire l'objet d'une recherche, tout en conservant l'aspect du document original.

Quelles sont les langues prises en charge par IronTesseract pour l'OCR ?

IronTesseract prend en charge 125 langues internationales pour la reconnaissance de texte. Vous pouvez spécifier la langue en définissant la propriété Language sur votre instance IronTesseract, comme IronOcr.OcrLanguage.English, Spanish, Chinese, Arabic, et bien d'autres.

Puis-je limiter les caractères reconnus lors de l'OCR ?

Oui, IronTesseract permet d'établir une liste blanche et une liste noire de caractères grâce à la propriété WhiteListCharacters de TesseractConfiguration. Cette fonctionnalité permet d'améliorer la précision lorsque vous connaissez le jeu de caractères attendu, par exemple en limitant la reconnaissance aux seuls caractères alphanumériques.

Comment puis-je effectuer l'OCR sur plusieurs documents simultanément ?

IronTesseract prend en charge les capacités multithreading pour le traitement par lots. Vous pouvez exploiter le traitement parallèle pour l'OCR de plusieurs documents simultanément, ce qui améliore considérablement les performances lorsque vous traitez de gros volumes d'images ou de PDF.

Quelle version de Tesseract IronOCR utilise-t-elle ?

IronOcr utilise une version personnalisée et optimisée de Tesseract 5, connue sous le nom d'Iron Tesseract. Ce moteur amélioré offre une précision et des performances accrues par rapport aux implémentations Tesseract standard, tout en conservant la compatibilité avec les applications .NET.

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
Revu par
Jeff Fritz
Jeffrey T. Fritz
Responsable principal du programme - Équipe de la communauté .NET
Jeff est également responsable principal du programme pour les équipes .NET et Visual Studio. Il est le producteur exécutif de la série de conférences virtuelles .NET Conf et anime 'Fritz and Friends', une diffusion en direct pour développeurs qui est diffusée deux fois par semaine où il parle de technologie et écrit du code avec les téléspectateurs. Jeff écrit des ateliers, des présentations et prévoit du contenu pour les plus grands événements de développement Microsoft, y compris Microsoft Build, Microsoft Ignite, .NET Conf et le sommet Microsoft MVP
Prêt à commencer?
Nuget Téléchargements 5,246,844 | Version : 2025.12 vient de sortir