Configuración de OCR para Lectura Avanzada
IronOCR proporciona métodos de lectura de escaneo avanzados como ReadPassport, ReadLicensePlate y ReadPhoto que van más allá del OCR estándar. Estos métodos son impulsados por el paquete IronOcr.Extensions.AdvancedScan. Para ajustar cómo estos métodos procesan el texto, IronOCR expone la clase TesseractConfiguration, dando a los desarrolladores control total sobre la inclusión y exclusión de caracteres, la detección de códigos de barras, la lectura de tablas de datos y más.
Este artículo cubre las propiedades TesseractConfiguration disponibles para la lectura avanzada y ejemplos prácticos para configurar el OCR en escenarios del mundo real.
Inicio Rápido: Recadenair la Salida de OCR a una Lista Blanca de Caracteres
Establezca WhiteListCharacters en TesseractConfiguration antes de llamar a Read. Cualquier carácter que no esté en la lista blanca se elimina silenciosamente del resultado, eliminando el ruido sin necesidad de procesamiento posterior.
-
Instala IronOCR con el Administrador de Paquetes NuGet
PM > Install-Package IronOcr -
Copie y ejecute este fragmento de código.
var result = new IronTesseract() { Configuration = new TesseractConfiguration { WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- " } }.Read(new OcrInput("image.png")); Console.WriteLine(result.Text); -
Despliegue para probar en su entorno real
Comienza a usar IronOCR en tu proyecto hoy mismo con una prueba gratuita
Cómo Configurar OCR para una Lectura Avanzada
- Instalar IronOCR desde NuGet
- Instalar el paquete IronOcr.Extensions.AdvancedScan
- Configure propiedades de
TesseractConfigurationcomoWhiteListCharactersyReadBarCodes - Cargue la imagen de entrada con
OcrInput - Lea la imagen usando un método avanzado como
ReadPhoto,ReadLicensePlateoReadPassport
Propiedades de TesseractConfiguration
La clase TesseractConfiguration proporciona las siguientes propiedades para personalizar el comportamiento del OCR. Estas se establecen a través de IronTesseract.Configuration.
| Propiedad | Escriba a | Descripción |
|---|---|---|
WhiteListCharacters |
cadena | Solo los caracteres presentes en esta cadena serán reconocidos en la salida de OCR. Todos los demás caracteres son excluidos. |
BlackListCharacters |
cadena | Los caracteres en esta cadena son ignorados activamente y eliminados de la salida de OCR. |
ReadBarCodes |
booleano | Habilita o deshabilita la detección de códigos de barras dentro del documento durante el procesamiento de OCR. |
ReadDataTables |
booleano | Habilita o deshabilita la detección de estructura de tablas dentro del documento usando Tesseract. |
PageSegmentationMode |
TesseractPageSegmentationMode | Determina cómo Tesseract segmenta la imagen de entrada. Las opciones incluyen AutoOsd, Auto, SingleBlock, SingleLine, SingleWord, y más. |
RenderSearchablePdf |
booleano | Cuando está habilitado, la salida de OCR puede guardarse como un PDF buscable con una capa de texto invisible. |
RenderHocr |
booleano | Cuando está habilitado, la salida de OCR incluye datos hOCR para un procesamiento adicional o exportación. |
TesseractVariables |
Dictionary |
Proporciona acceso directo a las variables de configuración de Tesseract a bajo nivel para un control detallado. |
El diccionario TesseractVariables va aún más allá, exponiendo cientos de parámetros subyacentes del motor Tesseract para casos donde las propiedades de alto nivel no son suficientes.
Los ejemplos a continuación demuestran cada grupo de propiedades, comenzando con la lista blanca de caracteres.
Configurar una lista blanca de caracteres para matrículas
Un caso de uso común para WhiteListCharacters es recadenair la salida del OCR a solo los caracteres que pueden aparecer en una placa de matrícula: letras mayúsculas, dígitos, guiones y espacios. Esto elimina el ruido y mejora la precisión al indicar al motor que ignore cualquier cosa fuera del conjunto de caracteres esperado.
Entrada
El siguiente registro de matriculación de vehículo contiene una mezcla de texto en mayúsculas, texto en minúsculas, símbolos especiales (@, $, #, |, *), y puntuación.
BlackListCharacters complementa la lista blanca al excluir activamente símbolos de ruido conocidos como , and*`.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading.cs
using IronOcr;
// Initialize the Tesseract OCR engine
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
// Whitelist only characters that appear on license plates
WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",
// Blacklist common noise characters
BlackListCharacters = "`~@#$%&*",
};
var ocrInput = new OcrInput();
// Load the input image
ocrInput.LoadImage("advanced-input.png");
// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);
// Print the filtered text result to the console
Console.WriteLine(results.Text);
Imports IronOcr
' Initialize the Tesseract OCR engine
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
' Whitelist only characters that appear on license plates
.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",
' Blacklist common noise characters
.BlackListCharacters = "`~@#$%&*"
}
Dim ocrInput As New OcrInput()
' Load the input image
ocrInput.LoadImage("advanced-input.png")
' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)
' Print the filtered text result to the console
Console.WriteLine(results.Text)
Resultado
El filtrado de la lista blanca es claramente visible en los resultados:
- "Placa: ABC-1234" se convierte en "P ABC-1234". La palabra en minúsculas "late:" se elimina, mientras que el número de placa se conserva exactamente.
- "VIN: 1HGBH41JXMN109186" se convierte en "VIN 1HGBH41JXMN109186". El colon se elimina, pero el VIN en mayúsculas y el número completo se mantienen.
- "Propietario: john.doe@email.com" se convierte en "O". Todo el correo electrónico en minúsculas y la puntuación se eliminan.
- "Región: CA-90210| Zona #5" se convierte en "R CA-90210 Z 5". La tubería (
|) and hash (#) son eliminados, mientras que las letras mayúsculas y los números sobreviven. - "Tasa: $125.00 + impuesto*" se convierte en "F 12500". El signo de dólar, el punto decimal, el signo más y "impuesto" en minúsculas se eliminan.
- "Ref: ~record_v2^final" se convierte en "R 2". La tilde (
~), el guion bajo, el acento circunflejo (^) y todos los caracteres en minúscula son eliminados.
El mismo enfoque de WhiteListCharacters y BlackListCharacters funciona para cualquier tipo de documento, no solo para placas de matrícula. La siguiente sección muestra cómo extender una lectura para detectar códigos de barras y estructuras de tablas en la misma pasada.
Configurando la lectura de códigos de barras y tablas de datos
IronOCR puede detectar códigos de barras y tablas estructuradas dentro de documentos junto con texto. Estas características se controlan a través de 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,
};
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.ReadBarCodes = True,
.ReadDataTables = True
}
- ReadBarCodes: Cuando se establece en
true, IronOCR escanea el documento en busca de códigos de barras además de texto. Establezca enfalsepara omitir la detección de códigos de barras y acelerar el procesamiento cuando no se esperan códigos de barras. - ReadDataTables: Cuando se establece en
true, Tesseract intenta detectar y preservar las estructuras de tablas en el documento. Esto es útil para facturas, informes y otros documentos tabulares.
Estas opciones se pueden combinar con WhiteListCharacters y BlackListCharacters para un control preciso sobre lo que se extrae de documentos complejos.
Mientras que el filtrado y la detección controla lo que se extrae, la interpretación del diseño es una preocupación separada. La próxima sección cubre cómo seleccionar el PageSegmentationMode adecuado para el tipo de documento.
Controlando el modo de segmentación de página
PageSegmentationMode le indica a Tesseract cómo segmentar la imagen de entrada antes del reconocimiento. Elegir el modo incorrecto para un diseño determinado hace que el motor lea mal o pase por alto texto por completo.
| Modo | Caso práctico |
|---|---|
AutoOsd |
Análisis de diseño automático con detección de orientación y guión |
Auto |
Análisis de diseño automático sin OSD (por defecto) |
SingleColumn |
Asume que la imagen es una sola columna de texto |
SingleBlock |
Asume que la imagen es un solo bloque uniforme de texto |
SingleLine |
Asume que la imagen es una sola línea de texto |
SparseText |
Busca tanto texto como sea posible en cualquier orden |
Para una etiqueta o banner que contiene una sola línea, SingleLine elimina el análisis multinúcleo y mejora tanto la velocidad como la precisión.
Entrada
single-line-label.png es una etiqueta de envío estrecha con exactamente una línea de texto en negrita en Courier: SHIPPING LABEL: TRK-2024-XR9-001.
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.SingleLine,
};
using OcrInput input = new OcrInput();
input.LoadImage("single-line-label.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.SingleLine,
};
using OcrInput input = new OcrInput();
input.LoadImage("single-line-label.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.PageSegmentationMode = TesseractPageSegmentationMode.SingleLine
}
Using input As New OcrInput()
input.LoadImage("single-line-label.png")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Para una página escaneada con colocación de texto irregular, SparseText recupera más contenido que Auto.
Entrada
receipt-scan.png es un recibo térmico de Corner Market con cuatro artículos (café, muffin, jugo, barra de granola), un separador de guiones, subtotal, impuestos y total. Este es el tipo de diseño donde la segmentación de bloque fijo omite entradas en diferentes posiciones horizontales.
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.SparseText,
};
using OcrInput input = new OcrInput();
input.LoadImage("receipt-scan.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.SparseText,
};
using OcrInput input = new OcrInput();
input.LoadImage("receipt-scan.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronTesseract
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.PageSegmentationMode = TesseractPageSegmentationMode.SparseText
}
Using input As New OcrInput()
input.LoadImage("receipt-scan.png")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Con la segmentación de diseño ajustada al tipo de documento, el siguiente paso es controlar el formato de salida para el procesamiento posterior.
Generando PDFs buscables y salida hOCR
RenderSearchablePdf y RenderHocr controlan los formatos de salida que IronOCR produce junto con el resultado de texto plano.
RenderSearchablePdf integra una capa de texto invisible sobre la imagen original, produciendo un PDF donde los usuarios pueden buscar y copiar texto mientras la imagen escaneada permanece visible. Este es el formato de salida estándar para flujos de trabajo de archivo de documentos.
Entrada
scanned-document.pdf es una carta comercial de una sola página de IronOCR Solutions Ltd. (con fecha 15 de marzo de 2024, referencia DOC-2024-OCR-0315). El resultado se guarda como 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");
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.RenderSearchablePdf = True
}
Using input As New OcrInput()
input.LoadPdf("scanned-document.pdf")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable-output.pdf")
End Using
Resultado
La salida es un PDF que parece idéntico a la entrada pero contiene una capa de texto oculta. Abra searchable-output.pdf y use Ctrl+F para verificar que el texto integrado sea buscable y copiable.
RenderHocr produce un documento hOCR, un archivo HTML que codifica el contenido de texto junto con las coordenadas de la caja delimitadora para cada palabra. Esto es útil cuando las herramientas posteriores necesitan una posición precisa de las palabras, por ejemplo, motores de redacción o análisis de diseño de documentos.
Entrada
document-page.png es una página de documento con el título "Resumen Trimestral Q1 2024" y dos párrafos de datos financieros que cubren ingresos, costos operativos y motores de crecimiento. El resultado se guarda como 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");
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
RenderHocr = true,
};
using OcrInput input = new OcrInput();
input.LoadImage("document-page.png");
OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("output.html");
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.RenderHocr = True
}
Using input As New OcrInput()
input.LoadImage("document-page.png")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsHocrFile("output.html")
End Using
Resultado
output.html codifica cada palabra reconocida con sus coordenadas de caja delimitadora. Abra el archivo en un navegador para inspeccionar la estructura de hOCR, o páselo a una herramienta posterior para análisis de diseño o redacción.
Ambos indicadores se pueden habilitar al mismo tiempo si necesita los tres formatos de salida (texto plano, PDF buscable y hOCR) de una sola llamada de lectura.
Estos indicadores de salida funcionan independientemente del idioma que se lee, incluidos los guiones no latinos. La siguiente sección muestra cómo aplicar el filtrado de caracteres a texto en japonés.
Filtrado de caracteres Unicode para documentos internacionales
Para documentos internacionales en chino, japonés o coreano, las propiedades WhiteListCharacters y BlackListCharacters funcionan con caracteres Unicode. Esto le permite recadenair la salida a scripts específicos, como solo Hiragana y Katakana para japonés.
Entrada
El documento contiene un título (テスト), una oración japonesa que mezcla hiragana y katakana con variantes de marcas de voz (プ, で), una línea de precio con símbolos de ruido en lista negra (★, ■) y kanji (価格), y una línea de memo con otro símbolo en lista negra (§), más kanji (購入), variantes de marcas de voz adicionales (プ, デ), y katakana base (メモ, ール). La lista blanca solo pasa hiragana base, katakana base, dígitos y puntuación japonesa común; los tres símbolos de ruido están explícitamente en lista negra.
Los rangos de caracteres Unicode para Hiragana y Katakana se pasan como literales de cadena en WhiteListCharacters, con los símbolos de ruido listados en BlackListCharacters.
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-jp.cs
using IronOcr;
using System.IO;
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
// Whitelist only Hiragana, Katakana, numbers, and common Japanese punctuation
WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" +
"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" +
"0123456789、。?!()¥ー",
// Blacklist common noise/symbols you want to ignore
BlackListCharacters = "★■§",
};
var ocrInput = new OcrInput();
// Load Japanese input image
ocrInput.LoadImage("jp.png");
// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);
// Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text);
// You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt");
Imports IronOcr
Imports System.IO
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" &
"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" &
"0123456789、。?!()¥ー",
.BlackListCharacters = "★■§"
}
Dim ocrInput As New OcrInput()
' Load Japanese input image
ocrInput.LoadImage("jp.png")
' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)
' Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text)
' You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt")
Resultado
La salida filtrada completa está disponible como un archivo de texto: jp-output.txt.
Debido a que la lista blanca incluye solo caracteres hiragana y katakana base, las variantes de marcas de voz derivadas como プ (pu) y デ (de) se eliminan. Los caracteres kanji como 価格 (precio) y 購入 (compra) también se excluyen ya que están fuera del conjunto de caracteres en lista blanca. Símbolos en lista negra como ★, ■ y § son eliminados activamente sin importar la lista blanca.
¿Qué paso debo dar a continuación?
Ahora que comprende cómo configurar IronOCR para escenarios de lectura avanzada, explore:
- Leer tipos específicos de documentos como pasaportes y matrículas
- Lectura de código de barras y códigos QR como un caso de uso OCR independiente
- Exportación de hOCR y PDFs buscables a partir de resultados procesados
Para el uso en producción, recuerde obtener una licencia para eliminar las marcas de agua y acceder a la funcionalidad completa.
Preguntas Frecuentes
¿Qué es TesseractConfiguration en IronOCR?
TesseractConfiguration en IronOCR permite a los usuarios personalizar la configuración del OCR, habilitando capacidades de lectura avanzadas como listas blancas de caracteres, lectura de BarCode y soporte multilingüe.
¿Cómo puedo configurar una lista blanca de caracteres en IronOCR?
En IronOCR, puedes configurar una lista blanca de caracteres mediante TesseractConfiguration, lo que te permite especificar qué caracteres debe reconocer el motor OCR, algo útil para tareas como la lectura de matrículas.
¿Puede IronOCR leer BARCODES y tablas de datos?
Sí, IronOCR se puede configurar para leer BarCodes y tablas de datos ajustando parámetros específicos en las propiedades de TesseractConfiguration para una extracción precisa de datos mediante OCR.
¿Es compatible IronOCR con idiomas internacionales como el chino, el japonés y el coreano?
IronOCR admite idiomas internacionales, incluidos el chino, el japonés y el coreano, a través de sus opciones multilingües de TesseractConfiguration.
¿Cuáles son las ventajas de utilizar configuraciones avanzadas de OCR en IronOCR?
El uso de configuraciones avanzadas de OCR en IronOCR permite un reconocimiento de texto más preciso y eficiente, lo que facilita tareas especializadas como el reconocimiento de texto específico de un idioma y la extracción de datos estructurados.
¿Es posible optimizar IronOCR para tareas específicas de OCR?
Sí, IronOCR se puede optimizar para tareas específicas de OCR configurando ajustes como listas blancas de caracteres y habilitando el reconocimiento de BARCODE o tablas, lo que mejora el rendimiento para las aplicaciones específicas.
¿Cómo activo la compatibilidad multilingüe en IronOCR?
Para habilitar la compatibilidad multilingüe en IronOCR, puede ajustar la configuración de idioma en TesseractConfiguration, lo que permite al motor OCR reconocer texto en varios idiomas.
¿Qué son las listas blancas de caracteres y cómo se utilizan en IronOCR?
Las listas blancas de caracteres en IronOCR son listas de caracteres específicos que el motor OCR está configurado para reconocer, ideales para tareas específicas como la lectura de números o patrones de texto concretos.
¿Se puede utilizar IronOCR para leer formatos de datos estructurados?
Sí, IronOCR se puede configurar para leer y procesar formatos de datos estructurados, como BarCodes y tablas, lo que proporciona capacidades de OCR versátiles para diversas necesidades de extracción de datos.
¿Qué configuraciones hay disponibles en IronOCR para el reconocimiento de texto avanzado?
IronOCR ofrece configuraciones como listas blancas de caracteres, compatibilidad multilingüe y reconocimiento de BARCODES para mejorar las capacidades avanzadas de reconocimiento de texto adaptadas a requisitos específicos.

