Configuración de OCR para Lectura Avanzada

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

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.

  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 IronTesseract() { Configuration = new TesseractConfiguration { WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- " } }.Read(new OcrInput("image.png")); Console.WriteLine(result.Text);
  3. Despliegue para probar en su entorno real

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

    arrow pointer


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.

Registro de matrícula de vehículo con caracteres mixtos para demostración de lista blanca de OCR

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)
$vbLabelText   $csharpLabel

Resultado

Salida de OCR que muestra solo los caracteres de la matrícula incluidos en la lista blanca

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
}
$vbLabelText   $csharpLabel
  • ReadBarCodes: Cuando se establece en true, IronOCR escanea el documento en busca de códigos de barras además de texto. Establezca en false para 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.

Etiqueta de envío de una sola línea para el modo de segmentación OCR SingleLine
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
$vbLabelText   $csharpLabel

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.

Recibo térmico para modo de segmentación OCR SparseText
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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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.

Entrada de página de documento para salida de cuadro delimitador hOCR
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderHocr = true,
};

using OcrInput input = new OcrInput();
input.LoadImage("document-page.png");

OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("output.html");
IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    RenderHocr = true,
};

using OcrInput input = new OcrInput();
input.LoadImage("document-page.png");

OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("output.html");
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
$vbLabelText   $csharpLabel

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.

Por favor nota Asegúrese de que el paquete de idioma correspondiente esté instalado (por ejemplo, IronOcr.Languages.Japanese) antes de continuar.

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.

Configuración avanzada de OCR entrada en japonés

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.

AdvertenciaLa consola puede no soportar mostrar caracteres Unicode. Redirigir la salida a un archivo .txt es una forma confiable de verificar los resultados al tratar con tales caracteres.

:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-jp.cs
using IronOcr;
using System.IO;

IronTesseract ocr = new IronTesseract();

ocr.Configuration = new TesseractConfiguration
{
    // Whitelist only Hiragana, Katakana, numbers, and common Japanese punctuation
    WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" +
                            "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" +
                            "0123456789、。?!()¥ー",

    // Blacklist common noise/symbols you want to ignore
    BlackListCharacters = "★■§",
};

var ocrInput = new OcrInput();

// Load Japanese input image
ocrInput.LoadImage("jp.png");

// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);

// Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text);

// You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt");
Imports IronOcr
Imports System.IO

Dim ocr As New IronTesseract()

ocr.Configuration = New TesseractConfiguration With {
    .WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" &
                           "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" &
                           "0123456789、。?!()¥ー",
    .BlackListCharacters = "★■§"
}

Dim ocrInput As New OcrInput()

' Load Japanese input image
ocrInput.LoadImage("jp.png")

' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)

' Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text)

' You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt")
$vbLabelText   $csharpLabel

Resultado

Configuración avanzada de OCR salida en japonés

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:

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.

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
¿Listo para empezar?
Nuget Descargas 5,896,332 | Versión: 2026.5 just released
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.