Cómo extraer texto de un archivo de imagen

Cómo utilizar Iron Tesseract en C

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

Iron Tesseract en C# se utiliza creando una instancia IronTesseract, configurándola con el idioma y ajustes de OCR, luego llamando al método Read() en un objeto OcrInput que contiene tus imágenes o PDFs. Esto convierte imágenes de texto en PDFs buscables usando el motor optimizado de Tesseract 5.

IronOCR proporciona una API intuitiva para utilizar el Tesseract 5 personalizado y optimizado, conocido como Iron Tesseract. Usando IronOCR y IronTesseract, podrás convertir imágenes de texto y documentos escaneados en texto y PDFs buscables. La biblioteca es compatible con 125 idiomas internacionales e incluye funciones avanzadas como lectura de códigos de barras y visión por ordenador.

Inicio Rápido: Configurar la Configuración de IronTesseract en C#

Este ejemplo demuestra cómo configurar IronTesseract con configuraciones específicas y realizar OCR en una sola línea de código.

  1. Instala IronOCR con el Administrador de Paquetes NuGet

    PM > Install-Package IronOcr
  2. Copie y ejecute este fragmento de código.

    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. Despliegue para probar en su entorno real

    Comienza a usar IronOCR en tu proyecto hoy mismo con una prueba gratuita

    arrow pointer

¿Cómo creo una instancia de IronTesseract?

Inicializa un objeto Tesseract con este código:

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

IronTesseract ocr = new IronTesseract();
Imports IronOcr

Dim ocr As New IronTesseract()
$vbLabelText   $csharpLabel

Puedes personalizar el comportamiento de IronTesseract seleccionando diferentes idiomas, habilitando la lectura de códigos de barras y permitiendo/bloqueando caracteres. IronOCR ofrece amplias opciones de configuración para ajustar el proceso de 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

Una vez configurado, puedes utilizar la funcionalidad de Tesseract para leer objetos OcrInput. La clase OcrInput proporciona métodos flexibles para cargar varios formatos de entrada:

: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

Para situaciones complejas, puede aprovechar las capacidades de multithreading para procesar varios documentos simultáneamente, lo que mejora significativamente el rendimiento de las operaciones por lotes.

¿Qué son las variables de configuración avanzadas de Tesseract?

La interfaz de Tesseract en IronOCR permite el control total de las variables de configuración de Tesseract a través de la Clase IronOcr.TesseractConfiguration. Estos ajustes avanzados permiten optimizar el rendimiento del OCR para casos de uso específicos, como corregir escaneos de baja calidad o leer tipos de documentos específicos.

¿Cómo se utiliza la configuración de Tesseract en el código?

: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 también proporciona una configuración especializada para diferentes tipos de documentos. Por ejemplo, al leer pasaportes o procesar cheques MICR, puede aplicar filtros específicos de preprocesamiento y detección de regiones para mejorar la precisión.

Ejemplo de configuración para documentos financieros:

:path=/static-assets/ocr/content-code-examples/how-to/iron-tesseract-6.cs
// Example: Configure for financial documents
IronTesseract ocr = new IronTesseract
{
    Language = OcrLanguage.English,
    Configuration = new TesseractConfiguration
    {
        PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock,
        TesseractVariables = new Dictionary<string, object>
        {
            ["tessedit_char_whitelist"] = "0123456789.$,",
            ["textord_heavy_nr"] = false,
            ["edges_max_children_per_outline"] = 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);
Imports IronOcr

' Example: Configure for financial documents
Dim ocr As New IronTesseract With {
    .Language = OcrLanguage.English,
    .Configuration = New TesseractConfiguration With {
        .PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock,
        .TesseractVariables = New Dictionary(Of String, Object) From {
            {"tessedit_char_whitelist", "0123456789.$,"},
            {"textord_heavy_nr", False},
            {"edges_max_children_per_outline", 10}
        }
    }
}

' Apply preprocessing filters for better accuracy
Using input As New OcrInput()
    input.LoadPdf("financial-document.pdf")
    input.Deskew()
    input.EnhanceResolution(300)

    Dim result As OcrResult = ocr.Read(input)
End Using
$vbLabelText   $csharpLabel

¿Cuál es la lista completa de todas las variables de configuración de Tesseract?

Estos se pueden establecer usando IronTesseract.Configuration.TesseractVariables["key"] = value;. Las variables de configuración le permiten ajustar el comportamiento del OCR para obtener resultados óptimos con sus documentos específicos. Para obtener información detallada sobre la optimización del rendimiento de OCR, consulte nuestra guía de configuración de OCR rápido.

Variable de configuración de Tesseract Default Significado
clasificar_num_cp_niveles3Número de niveles de podador de clase
búsqueda de pestaña de depuración de textord0Búsqueda de la pestaña de depuración
errores de depuración de textord0Activar la salida relacionada con errores en la búsqueda de pestañas
región de prueba de textord_izquierda-1Borde izquierdo del rectángulo de informe de depuración
región de prueba de textord_arriba-1Borde superior del rectángulo de informe de depuración
región de prueba de textord_derecha2147483647Borde derecho del rectángulo de depuración
región de prueba de textord_inferior2147483647Borde inferior del rectángulo de depuración
textord_tabfind_mostrar_particiones0Mostrar los límites de la partición, esperando si es >1
nivel de depuración dividido devanagari0Nivel de depuración para el proceso dividido shiro-rekha.
bordes_máximo_de_hijos_por_contorno10Número máximo de niños dentro del contorno de un personaje
bordes_máx._capas_hijas5Máximo de capas de elementos secundarios anidados dentro del contorno de un personaje
bordes_hijos_por_nieto10Relación de importancia para los contornos de sujeción
límite de conteo de niños en los bordes45Máximo de agujeros permitidos en el blob
bordes_min_sin_agujero12Mínimo de píxeles para caracteres potenciales en el cuadro
relación_área_de_ruta_de_aristas40Max lensq/area for acceptable child outline
Error de corte de textord_fp2Máxima flexión permitida de las celdas de corte
textord_tabfind_mostrar_imágenes0Show image blobs
desplazamiento suave y sesgado de textord4Para un factor de suavidad
desplazamiento suave y sesgado de textord21Para un factor de suavidad
prueba_textord_x-2147483647coord del paciente de prueba
prueba de texto_y-2147483647coord del paciente de prueba
textopalabra_min_blobs_en_fila4Mínimo de blobs antes del gradiente contado
textord_spline_minblobs8Min blobs in each spline segment
textord_spline_medianwin6Size of window for spline segmentation
superposiciones de blobs de textord_max4Max number of blobs a big blob can overlap
altura mínima de la x del texto10Min credible pixel xheight
ensayos de línea de textord_lms12Number of linew fits to do
recuento de pérdidas de oldbl_holed10Max lost before fallback line used
versión lineal de pitsync6Use new fast algorithm
pitsync_falsa_profundidad1Max advance fake generation
textord_tabfind_mostrar_anchos_de_trazo0Show stroke widths
brecha de matriz de puntos de textord3Max pixel gap for broken pixed pitch
bloque de depuración de textord0Block to do debug on
rango de paso de textord2Max range test on pitch
poder de veto de textord_words5Rows required to outvote a veto
detección de ecuación_guardar_imagen_bi0Save input bi image
detección de ecuación_guardar_imagen_spt0Save special character image
detección de ecuación_guardar_imagen_semilla0Save the seed image
detección de ecuación_guardar_imagen_combinada0Save the merged image
poli_depuración0Debug old poly
objetos poligonales mejores1More accurate approx on wide things
divisiones de visualización de wordrec0Display splits
textord_debug_imprimible0Make debug windows printable
El tamaño del espacio de texto es variable0If true, word delimiter spaces are assumed to have variable width, even though characters have fixed pitch.
textord_tabfind_mostrar_particiones_iniciales0Show partition bounds
textord_tabfind_mostrar_blobs_rechazados0Show blobs rejected as noise
textord_tabfind_mostrar_columnas0Show column bounds
textord_tabfind_mostrar_bloques0Show final block bounds
textord_tabfind_buscar_tablas1run table detection
imagen de depuración dividida devanagari0Whether to create a debug image for split shiro-rekha process.
textord_show_cortes_fijos0Draw fixed pitch cell boundaries
los bordes usan una nueva complejidad de contorno0Use the new outline complexity module
bordes_depuración0turn on debugging for this module
bordes_niños_arreglo0Remove boxy parents of char-like children
mapa de brechas_depuración0Say which blocks have tables
fin del uso del mapa de brechas0Use large space at start and end of rows
mapa de brechas sin cuantos aislados0Ensure gaps not less than 2quanta wide
textord_pesado_nr0Vigorously remove noise
textord_mostrar_filas_iniciales0Display row accumulation
textord_mostrar_filas_paralelas0Display page correlated rows
textord_mostrar_filas_expandidas0Display rows after expanding
textord_mostrar_filas_finales0Display rows after final fitting
textord_mostrar_blobs_finales0Display blob bounds after pre-ass
paisaje de prueba de textord0Tests refer to land/port
líneas base paralelas de textord1Force parallel baselines
líneas base rectas de textord0Force straight baselines
líneas base antiguas de textord1Use old baseline algorithm
altura_x_antigua_textord0Use old xheight algorithm
textord_corrección_error_altura_x1Use spline baseline
textord_corrección_error_makerow1Prevent multiple baselines
alturas de x de depuración de textord0Test xheight algorithms
cálculo sesgado de textord1Bias skew estimates with line length
sesgo de interpolación de textord1Interpolate across gaps
textord_nueva_altura_x_inicial1Use test xheight mechanism
textord_debug_blob0Print test blob information
textord_realmente_viejo_alturax0Use original wiseowl xheight
textord_oldbl_debug0Debug old baseline generation
líneas base de depuración de textord0Debug baseline generation
textord_oldbl_paradef1Use para default mechanism
splines divididos de textord_oldbl1Split stepped splines
textord_oldbl_fusionar_partes1Merge suspect partitions
oldbl_corrfix1Improve correlation of heights
oldbl_xhfix0Fix bug in modes threshold for xheights
modo textord_ocropus0Make baselines for ocropus
textord_tabfind_only_anchos_de_trazo0Only run stroke widths
textord_tabfind_show_initialtabs0Show tab candidates
textord_tabfind_show_finaltabs0Show tab vectors
textord_mostrar_tablas0Show table regions
textord_tablefind_mostrar_marca0Debug table marking steps in detail
textord_tablefind_mostrar_estadísticas0Show page stats used in table finding
textord_tablefind_reconocer_tablas0Enables the table recognizer for table layout and filtering.
textord_all_prop0All doc is proportial text
prueba de tono de depuración de textord0Debug on fixed pitch test
textord_deshabilitar_prueba_de_tono0Turn off dp fixed pitch algorithm
prueba de tono rápido de textord0Do even faster pitch algorithm
métrica de paso de depuración de textord0Write full metric stuff
textord_mostrar_cortes_de_fila0Draw row-level cuts
textord_mostrar_cortes_de_página0Draw page-level cuts
trucos de tono de textord0Use correct answer for fixed/prop
textord_blockndoc_arreglado0Attempt whole doc/block fixed pitch
textord_mostrar_palabras_iniciales0Display separate words
textord_mostrar_nuevas_palabras0Display separate words
textord_mostrar_palabras_fijas0Display forced fixed pitch words
textord_blocksall_arreglado0Moan about prop blocks
bloque de texto_todo_prop0Moan about fixed pitch blocks
Pruebas de textord_blocksall0Dump stats when moaning
modo de prueba de textord0Do current test
similitud de filas de paso de texto0.08Fraction of xheight for sameness
palabras_inicial_minúscula0.5Max initial cluster size
palabras_inicial_mayúscula0.15Min initial cluster spacing
palabras_predeterminadas_prop_sin espacio0.25Fraction of xheight
palabras_predeterminadas_espacio_fijo0.75Fraction of xheight
límite fijo predeterminado de palabras0.6Allowed size variance
propagación definida de palabras de textord0.3Non-fuzzy spacing region
relación de tamaño de espacio de texto2.8Min ratio space/nonspace
relación de tamaño de espacio de texto2Min ratio space/nonspace
relación fpiqr_textord1.5Pitch IQR/Gap IQR threshold
textord_máximo_paso_iq0.2Xh fraction noise in pitch
ancho mínimo de textord_fp0.5Min width of decent blobs
desplazamiento de subrayado de texto0.1Fraction of x to ignore
nivel de depuración de ambigs0Debug level for unichar ambiguities
clasificar_nivel_de_depuración0Classify debug level
método de clasificación de normas1Normalization Method ...
nivel de depuración del comparador0Matcher Debug Level
indicadores de depuración del comparador0Matcher Debug Flags
clasificar_aprendizaje_nivel_de_depuración0Learning Debug Level:
matcher_permanent_classes_min1Min # of permanent classes
ejemplos de matcher_min para creación de prototipos3Reliable Config Threshold
ejemplos_suficientes_de_comparación_para_la_creación_de_prototipos5Enable adaption even if the ambiguities have not been seen
clasificar_adaptar_proto_umbral230Threshold for good protos during adaptive 0-255
clasificar_adaptar_umbral_de_características230Threshold for good features during adaptive 0-255
clasificar_clase_podador_umbral229Class Pruner Threshold 0-255
clasificar_multiplicador_podador_de_clases15Class Pruner Multiplier 0-255:
clasificar_fuerza_de_corte_cp7Class Pruner CutoffStrength:
clasificar_multiplicador_comparador_de_enteros10Integer Matcher Multiplier 0-255:
nivel de depuración de dawg0Set to 1 for general debug info, to 2 for more details, to 3 to see all the debug messages
nivel de depuración de guión0Debug level for hyphenated words.
tapón_pequeño_tamaño_de_palabra2Size of dict word to be treated as non-dict word
nivel de depuración del tapón0Stopper debug level
registro de selección de palabras truncado de tessedit10Max words to keep in list
intentos máximos de permutación10000Maximum 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.
reparar manchas no cortadas1Fix blobs that aren't chopped
cortar_depuración0Chop debug
longitud de división10000Split Length
cortar_misma_distancia2Same distance
puntos de contorno mínimos de chop6Min Number of Points on Outline
tamaño de pila de costura cortada150Max number of seams in seam_pile
cortar_el_ángulo_interior-50Min Inside Angle Bend
área de contorno de chop_min2000Min Outline Area
ancho máximo centrado en el corte90Width of (smaller) chopped blobs above which we don't care that a chop is not near the center.
peso de corte x y3X / Y length weight
nivel de depuración de wordrec0Debug level for wordrec
fragmentos de unión de wordrec_max4Max number of broken pieces to associate
nivel de depuración de segsearch0SegSearch debug level
segsearch_máximos_puntos_de_dolor2000Maximum number of pain points stored in the queue
segsearch_max_futile_classifications20Maximum number of pain point classifications per chunk that did not result in finding a better word choice.
nivel de depuración del modelo de lenguaje0Language model debug level
orden de ngramas del modelo de lenguaje8Maximum order of the character ngram model
modelo de idioma_lista_viterbi_máximo_podable10Maximum number of prunable (those for which PrunablePath() is true) entries in each viterbi list recorded in BLOB_CHOICEs
modelo_de_idioma_viterbi_lista_tamaño_máximo500Maximum size of viterbi lists recorded in BLOB_CHOICEs
longitud mínima del compuesto del modelo de idioma3Minimum length of compound words
segmentaciones de visualización de wordrec0Display Segmentations
modo tessedit_pageseg6Page 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)
modo de motor tessedit_ocr2Which OCR engine(s) to run (Tesseract, LSTM, both). Defaults to loading and running the most accurate available.
páginaseg_devanagari_split_strategy0Whether to use the top-line splitting process for Devanagari documents while performing page-segmentation.
estrategia de división de ocr_devanagari0Whether to use the top-line splitting process for Devanagari documents while performing ocr.
depuración bidireccional0Debug level for BiDi
aplicar_box_debug1Debug level
página de caja de aplicación0Page number to apply boxes from
depuración de tessedit_bigram0Amount of debug output for bigram correction.
eliminación de ruido de depuración0Debug reassignment of small outlines
ruido_máximo por gota8Max diacritics to apply to a blob
ruido_máximo_por_palabra16Max diacritics to apply to a word
nivel_ht_debug_x0Reestimate debug
alfas iniciales mínimas de calidad requeridas2alphas in a good word
tessedit_tess_adaption_mode39Adaptation decision algorithm for tess
nivel de depuración multilang0Print multilang debug info.
nivel de depuración de párrafo0Print paragraph debug info.
tessedit_preservar_min_wd_len2Only preserve wds longer than this
calificación máxima de crunch10For adj length in rating per ch
indicadores de crunch_pot1How many potential indicators needed
crunch_leave_lc_strings4Don't crunch words with long lower case strings
crunch_leave_uc_strings4Don't crunch words with long lower case strings
crunch_largas_repeticiones3Crunch words with long repetitions
crunch_debug0As it says
fixsp_sin_límite_de_ruido1How many non-noise blbs either side?
modo fixsp_done1What constitues done for spacing
nivel de espacio de corrección de depuración0Contextual fixspace debug
tolerancia de aceptación x_ht8Max allowed deviation of blob top outside of font data
cambio de x_ht_min8Min change in xht before actually trying it
superíndice_depuración0Debug level for sub & superscript fixer
calidad jpg85Set JPEG quality level
dpi definidos por el usuario0Specify DPI for input image
min_caracteres_a_probar50Specify minimum characters to try during OSD
suspect_level99Suspect marker level
suspect_short_words2Don't suspect dict wds longer than this
modo de rechazo de tessedit0Rejection algorithm
borde de imagen de tessedit2Rej blbs near image edge limit
píxeles min_sane_x_ht8Reject any x-ht lt or eq than this
número de página de tessedit-1-1 -> All pages, else specific page to process
tessedit_paralelizar1Run in parallel where possible
modo de elección lstm2Allows 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.
iteraciones de elección lstm5Sets the number of cascading iterations for the Beamsearch in modo de elección lstm. Note that modo de elección lstm must be set to a value greater than 0 to produce results.
nivel de depuración de tosp0Debug data
tosp_suficientes_muestras_de_espacio_para_la_mediana3or should we use mean
límite de kern de rehacer tosp10No.samples reqd to reestimate for row
tosp_few_samples40No.gaps reqd with 1 large gap to treat as a table
tosp_fila corta20No.gaps reqd with few cert spaces to use certs
método de sanidad tosp1How to avoid being silly
tamaño máximo de ruido de textord7Pixel size of noise
depuración de línea base de textord0Baseline debug level
Fracción del tamaño del ruido de texto10Fraction of size for maxima
límite de transmisión de ruido de texto16Transitions for normal blob
recuento de ruido de textord1super norm blobs to save row
use_ambigs_para_adaptación0Use ambigs for deciding whether to adapt to a character
priorizar_división0Prioritize blob division over chopping
clasificar_habilitar_aprendizaje1Enable adaptive classifier
tess_cn_matching0Character Normalized Matching
tess_bn_coincidencia0Baseline Normalized Matching
clasificar_habilitar_comparador_adaptativo1Enable adaptive classifier
clasificar_utilizar_plantillas_preadaptadas0Use pre-adapted classifier templates
clasificar_guardar_plantillas_adaptadas0Save adapted templates to a file
clasificar_habilitar_depurador_adaptativo0Enable match debugger
clasificar_norma_no_lineal0Non-linear stroke-density normalization
disable_character_fragments1Do not include character fragments in the results of the classifier
clasificar_fragmentos_de_caracteres_de_depuración0Bring up graphical debugging windows for fragments training
ventanas separadas de depuración de matcher0Use two different windows for debugging the matching: One for the protos and one for the features.
clasificar_bln_modo_numérico0Assume the input is numbers [0-9].
sistema de carga dawg1Load system word dawg.
frecuencia de carga dawg1Load frequent word dawg.
cargar_unambig_dawg1Load unambiguous word dawg.
carga_punc_dawg1Load dawg with punctuation patterns.
número de carga dawg1Load dawg with number patterns.
cargar_bigram_dawg1Load dawg with special word bigrams.
use_solo_el_primer_paso_uft80Use only the first UTF8 step of the given string when computing log probabilities.
tapón_sin_opciones_aceptables0Make AcceptableChoice() always return false. Useful when there is a need to explore all segmentations
segmento_script_no_alfabético0Don't use any alphabetic-specific tricks. Set to true in the traineddata config file for scripts that are cursive or inherently fixed-pitch
guardar_doc_words0Save Document Words
fusionar fragmentos en la matriz1Merge the fragments in the ratings matrix and delete them after merging
wordrec_enable_assoc1Associator Enable
asociación de palabras de fuerza0force associator to run regardless of what enable_assoc is. This is used for CJK where component grouping is necessary.
habilitar chop1Chop enable
deslizamiento vertical de corte0Vertical creep
cortar_nueva_cosecha_pila1Use new seam_pile
asumir_segmento_de_caracteres_de_paso_fijo0include fixed-pitch heuristics in char segmentation
wordrec_skip_no_truth_words0Only run OCR for words that had truth recorded in BlamerBundle
Culpable de depuración de wordrec0Print blamer debug messages
culpar a wordrec_run_bamer0Try to set the blame for errors
guardar_opciones_alt1Save alternative paths found during chopping and segmentation search
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.
modelo_de_lenguaje_espacio_ngrama_lenguaje_delimitado1Words are delimited by space
modelo_de_lenguaje_utiliza_certeza_sigmoidea0Use sigmoidal score for certainty
tessedit_resegment_de_cajas0Take segmentation and labeling from box file
tessedit_resegment_de_cajas_de_línea0Conversion of word/line box file to char box file
tessedit_train_from_boxes0Generate training data from boxed chars
tessedit_hacer_cajas_a_partir_de_cajas0Generate more boxes from boxed chars
tessedit_reconocedor_de_líneas_de_tren0Break input into lines and remap boxes if present
imágenes de tessedit_dump_pageseg0Dump intermediate images made during page segmentation
tessedit_do_invert1Try inverting the image in LSTMRecognizeWord
entrenamiento de tessedit_ambigs0Perform training for ambiguities
depuración de adaptación de tessedit0Generate and print debug information for adaption
modo applybox_learn_chars_and_char_frags0Learn both character fragments (as is done in the special low exposure mode) as well as unfragmented characters.
modo applybox_learn_ngrams0Each bounding box is assumed to contain ngrams. Only learn the ngrams whose outlines overlap horizontally.
tessedit_mostrar_palabras_fuera0Draw output words
opciones de volcado de tessedit0Dump char choices
depuración de tiempo de tessedit0Print timing stats
tessedit_arregla_espacios_difusos1Try to improve fuzzy spaces
tessedit_unrej_any_wd0Don't bother with word plausibility
tessedit_fix_guiones1Crunch double hyphens?
tessedit_habilitar_doc_dict1Add words to the document dictionary
fuentes de depuración de tessedit0Output font info per char
rechazo de bloque de depuración de tessedit0Block and Row stats
tessedit_habilitar_corrección_de_bigramas1Enable correction based on the word bigram dictionary.
tessedit_habilitar_corrección_dict0Enable single word correction based on the dictionary.
habilitar_eliminación_de_ruido1Remove and conditionally reassign small outlines when they confuse layout analysis, determining diacritics vs noise
tessedit_minimal_rej_pass10Do minimal rejection on pass 1 output
adaptación de la prueba tessedit0Test adaption criteria
prueba_pt0Test for point
párrafo_basado_en_texto1Run paragraph detection on the post-text-recognition (more accurate)
matriz de uso lstm1Use ratings matrix/beam search with lstm
tessedit_buena_calidad_unrej1Reduce rejection on good docs
tessedit_use_reject_spaces1Reject 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
información de fuente hocr0Add font info to hocr output
cajas de caracteres hocr0Add coordinates for each character to hocr output
La fusión temprana de crunch falla1Before word crunch?
crunch_conversión temprana_mala_unlv_chs0Take out ~^ early?
crujido_terrible_basura1As it says
crunch_leave_ok_strings1Don't touch sensible 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_1Uso dict_word0Use dictword test
rej_1Il_trust_permuter_type1Don't double check
rej_use_tess_aceptado1Individual rejection control
rej_use_tess_blanks1Individual rejection control
rej_use_good_perm1Individual rejection control
rej_use_sensible_wd0Extend permuter check
rej_alphas_en_número_perm0Extend permuter check
tessedit_create_boxfile0Output text with boxes
tessedit_escribir_imágenes0Capture the image from the IPE
modo de visualización interactiva0Run interactively?
permutador de anulación de tessedit1According to dict_word
tessedit_use_modelo_de_parámetros_primarios0In multilingual mode use params model of the primary language
textord_tabfind_mostrar_líneas_v0Debug line finding
textord_use_cjk_fp_model0Use CJK fixed pitch model
poly_allow_detailed_fx0Allow feature extractors to see the original outline
tessedit_init_config_only0Only initialize with the config file. Useful if the instance is not going to be used for OCR but say only for layout analysis.
detección de ecuaciones de texto0Turn on equation detector
textord_tabfind_texto_vertical1Enable vertical detection
textord_tabfind_force_vertical_text0Force using vertical text page mode
preservar_los_espacios_entre_palabras0Preserve multiple interword spaces
pageseg_aplicar_máscara_musical1Detect music staff and remove intersecting components
modo de altura única de textord0Script has no xheight, so use a single mode
método tosp_old_to0Space stats use prechopping?
tosp_old_para_restringir_sp_kn0Constrain relative values of inter and intra-word gaps for old_to_method.
tosp_solo_use_prop_rows1Block stats to use fixed pitch rows?
tosp_forzar_ruptura_de_palabra_al_punct0Force word breaks on punct to break long lines in non-space delimited langs
tosp_use_pre_cortar0Space stats use prechopping?
tosp_old_to_bug_fix0Fix suspected bug in old code
tosp_block_use_cert_spaces1Only stat OBVIOUS spaces
tosp_row_use_cert_spaces1Only stat OBVIOUS spaces
tosp_narrow_blobs_no_certificado1Only stat OBVIOUS spaces
tosp_row_use_cert_spaces11Only stat OBVIOUS spaces
estadísticas de filas aisladas de recuperación de tosp1Use row alone when inadequate cert spaces
solo pequeños espacios para el kern0Better guess
tosp_all_flips_fuzzy0Pass ANY flip to context?
límite difuso total1Don't restrict kn->sp fuzzy limit to tables
textord_sin_rechazos0Don't remove noise blobs
textord_mostrar_blobs0Display unsorted blobs
cuadros de presentación de textord0Display unsorted blobs
textord_ruido_rejwords1Reject noise-like words
ruido de texto_rejrows1Reject noise-like rows
depuración de ruido de textord0Debug row garbage detector
clasificar_aprender_depurar_strClass str to debug learning
archivo de palabras del usuarioA filename of user-provided words.
sufijo de palabras de usuarioA suffix of user-provided words located in tessdata.
archivo de patrones de usuarioA filename of user-provided patterns.
sufijo de patrones de usuarioA suffix of user-provided patterns located in tessdata.
archivo de palabras ambiguas de salidaOutput file for ambiguities found in the dictionary
palabra_a_depurarWord for which stopper debug information should be printed to stdout
lista negra de caracteres de tesseditBlacklist of chars not to recognize
lista blanca de caracteres de tesseditWhitelist of chars to recognize
tessedit_char_unblacklistList of chars to override lista negra de caracteres de tessedit
tessedit_write_params_to_fileWrite all parameters to the given file.
patrón de exposición del cuadro de aplicación.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
chs_leading_punct('`"Puntuación inicial
chs_trailing_punct1¡).,;:?!1st Trailing punctuation
chs_trailing_punct2)'`"2nd Trailing punctuation
contornos_impares%|Número no estándar de contornos
contornos_2ij!?%":;Número no estándar de contornos
puntuación numérica.,Punct. chs expected WITHIN numbers
carácter no reconocido|Output char for unidentified blobs
ok_repetido_ch_no_alphanum_wds-?*=Allow NN to unrej
conjunto_de_conflictos_I_l_1Il1 []Il1 conflict set
tipo de archivo.tifFilename extension
tessedit_load_sublangsList of languages to load with this one
separador de páginasPage separator (default is form feed control character)
clasificar_rango_de_norma_de_caracteres0.2Character Normalization Range ...
clasificar_cociente_máximo_de_calificación1.5Veto ratio between classifier ratings
clasificar_máximo_margen_de_certeza5.5Veto difference between classifier certainties
umbral bueno del comparador0.125Good Match (0-1)
resultado adaptativo confiable del comparador0Great Match (0-1)
umbral perfecto del comparador0.02Perfect Match (0-1)
pad de emparejamiento incorrecto0.15Bad Match Pad (0-1)
margen de calificación del comparador0.1New template margin (0-1)
tamaño promedio de ruido del comparador12Avg. noise blob length
delta del ángulo máximo de agrupación del comparador0.015Maximum angle delta for prototype clustering
clasificar_penalización_basura_inadaptada0Penalty to apply when a non-alnum is vertically out of its expected textline position
escala de calificación1.5Rating scaling factor
escala de certeza20Certainty scaling factor
escala de fallas de clase tessedit0.00390625Scale factor for features not used
factor de poda adaptado para clasificar2.5Prune poor adapted results this much worse than best result
clasificar_umbral_de_poda_adaptado-1Threshold at which factor de poda adaptado para clasificar starts
clasificar_fragmentos_de_caracteres_umbral_de_certeza_de_basura-3Exclude fragments that do not look like whole characters from training and adaption
tamaño máximo de mota grande0.3Max large speckle size
penalización por moteado10Penalty to add to worst rating for noise
subíndices de penalización de altura x0.125Score penalty (0.1 = 10%) added if there are subscripts or superscripts in a word, but it is otherwise OK.
penalización de altura x inconsistente0.25Score penalty (0.1 = 10%) added if an xheight is inconsistent.
segmento_penalización_dict_palabra_frecuente1Score multiplier for word matches which have good case and are frequent in the given language (lower is better).
caso de dictamen de penalización de segmento ok1.1Score multiplier for word matches that have good case (lower is better).
caso de dictámenes de penalización de segmento incorrecto1.3125Default score multiplier for word matches, which may have case issues (lower is better).
segmento_penalización_dict_nonword1.25Score multiplier for glyph fragment segmentations which do not match a dictionary word (lower is better).
escala de certeza20Certainty 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
umbral de certeza de doc_dict-2.25Worst certainty for words that can be inserted into the document dictionary
umbral de certeza de tessedit-2.25Good blob limit
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
relación wh_máx_carácter_segsearch2Relación máxima entre el ancho y la altura de los caracteres

Para obtener los mejores resultados, se recomienda utilizar los filtros de preprocesamiento de imágenes de IronOCR antes de aplicar el OCR. Estos filtros pueden mejorar drásticamente la precisión, especialmente cuando se trabaja con escaneados de baja calidad o documentos complejos como tablas.

Preguntas Frecuentes

¿Cómo configuro IronTesseract para OCR en C#?

Para configurar IronTesseract, cree una instancia de IronTesseract y establezca propiedades como Idioma y Configuración. Puede especificar el idioma de OCR (de los 125 idiomas admitidos), activar la lectura de códigos de barras, configurar la salida de PDF con capacidad de búsqueda y establecer listas blancas de caracteres. Por ejemplo: var tesseract = new IronOcr.IronTesseract { Language = IronOcr.OcrLanguage.English, Configuration = new IronOcr.TesseractConfiguration { ReadBarCodes = false, RenderSearchablePdf = true } };

¿Qué formatos de entrada admite IronTesseract?

IronTesseract acepta varios formatos de entrada a través de la clase OcrInput. Puede procesar imágenes (PNG, JPG, etc.), archivos PDF y documentos escaneados. La clase OcrInput proporciona métodos flexibles para cargar estos diferentes formatos, lo que facilita la realización de OCR en prácticamente cualquier documento que contenga texto.

¿Puedo leer códigos de barras junto con texto utilizando IronTesseract?

Sí, IronTesseract incluye funciones avanzadas de lectura de códigos de barras. Puede activar la detección de códigos de barras estableciendo ReadBarCodes = true en TesseractConfiguration. Esto le permite extraer datos de texto y de código de barras del mismo documento en una sola operación de OCR.

¿Cómo puedo crear archivos PDF con función de búsqueda a partir de documentos escaneados?

IronTesseract puede convertir documentos e imágenes escaneados en archivos PDF con capacidad de búsqueda estableciendo RenderSearchablePdf = true en TesseractConfiguration. De este modo se crean archivos PDF en los que el texto se puede seleccionar y en los que se pueden realizar búsquedas, al tiempo que se mantiene el aspecto original del documento.

¿Qué idiomas admite IronTesseract para OCR?

IronTesseract admite 125 idiomas internacionales para el reconocimiento de texto. Puede especificar el idioma estableciendo la propiedad Language en su instancia de IronTesseract, como IronOcr.OcrLanguage.English, español, chino, árabe y muchos otros.

¿Puedo restringir los caracteres que se reconocen durante el OCR?

Sí, IronTesseract permite la creación de listas blancas y negras de caracteres mediante la propiedad WhiteListCharacters de TesseractConfiguration. Esta característica ayuda a mejorar la precisión cuando se conoce el conjunto de caracteres esperado, como limitar el reconocimiento sólo a caracteres alfanuméricos.

¿Cómo puedo realizar el OCR en varios documentos a la vez?

IronTesseract admite capacidades multihilo para el procesamiento por lotes. Puede aprovechar el procesamiento paralelo para realizar el reconocimiento óptico de caracteres de varios documentos simultáneamente, lo que mejora significativamente el rendimiento cuando se trabaja con grandes volúmenes de imágenes o archivos PDF.

¿Qué versión de Tesseract utiliza IronOCR?

IronOCR utiliza una versión personalizada y optimizada de Tesseract 5, conocida como Iron Tesseract. Este motor mejorado proporciona una mayor precisión y rendimiento en comparación con las implementaciones estándar de Tesseract, al tiempo que mantiene la compatibilidad con las aplicaciones .NET.

¿Cómo puede IronOCR mejorar la precisión de los datos?

IronOCR mejora la precisión de los datos a través de sus algoritmos de reconocimiento avanzados y características de corrección de imágenes, asegurando que el proceso de extracción de texto sea tanto confiable como preciso.

¿Hay una prueba gratuita disponible para IronOCR?

Sí, Iron Software ofrece una prueba gratuita de IronOCR, permitiendo a los usuarios probar sus características y capacidades antes de tomar una decisión de compra.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
Revisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente Principal de Programas - Equipo de la Comunidad .NET
Jeff también es Gerente Principal de Programas para los equipos de .NET y Visual Studio. Es el productor ejecutivo de la serie de conferencias virtuales .NET Conf y anfitrión de 'Fritz and Friends', una transmisión en vivo para desarrolladores que se emite dos veces a la semana donde habla sobre tecnología y escribe código junto con la audiencia. Jeff escribe talleres, presentaciones, y planifica contenido para los eventos de desarrolladores más importantes de Microsoft, incluyendo Microsoft Build, Microsoft Ignite, .NET Conf y la Cumbre de Microsoft MVP.
¿Listo para empezar?
Nuget Descargas 6,151,372 | Versión: 2026.7 recién lanzado
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronOcr
ejecuta una muestra y observa cómo tu imagen se convierte en texto buscable.