Saltar al pie de página
USANDO IRONOCR

.NET OCR SDK: una biblioteca de reconocimiento de texto para C#

Un SDK de OCR para .NET es un kit de desarrollo de software que permite a las aplicaciones de C# y .NET extraer texto de imágenes, archivos PDF escaneados y otros formatos de documento mediante programación. IronOCR es un SDK de OCR for .NET listo para producción que integra un motor Tesseract 5 optimizado con filtros de preprocesamiento, lectura de BarCodes, salida en PDF con capacidad de búsqueda y compatibilidad con más de 125 idiomas, todo ello accesible a través de una API de C# sencilla que funciona en Windows, Linux, macOS y plataformas en la nube.

¿Por qué IronOCR es el SDK de OCR for .NET adecuado para su proyecto?

Crear un sistema de reconocimiento de texto desde cero implica gestionar procesos de preprocesamiento de imágenes, archivos de datos lingüísticos, modelos de subprocesos y análisis de resultados: meses de trabajo antes de poder extraer la primera palabra. IronOCR elimina esa sobrecarga al ofrecer un motor probado en la práctica que tu equipo puede integrar en un proyecto en cuestión de minutos.

Capacidades clave que la diferencian de los enlaces Tesseract sin procesar:

  • Reconocimiento de más de 125 idiomas y alfabetos, incluido el texto manuscrito
  • Filtros integrados: eliminación de ruido, corrección de inclinación, binarización, mejora de la resolución y corrección del contraste
  • Detección de BarCodes y códigos QR en una misma lectura
  • Generación de PDF con capacidad de búsqueda y capas de texto invisibles para flujos de trabajo de archivo
  • Procesamiento asíncrono y en paralelo por lotes para pipelines de alto rendimiento
  • OCR zonal para seleccionar regiones específicas de la página y reducir el tiempo de procesamiento
  • Compatibilidad multiplataforma con Windows, Linux, macOS, Docker y Azure

Según la documentación del proyecto Tesseract OCR, Tesseract sin modificar requiere una configuración manual de los paquetes de idiomas, los ajustes de DPI y los modos de salida. IronOCR se encarga de todo esto automáticamente, lo que te permite centrarte en el significado del texto extraído en lugar de en cómo extraerlo.

¿En qué se diferencia IronOCR de Tesseract sin procesar?

El uso de Tesseract sin procesar a través de un envoltorio P/Invoke o del paquete NuGet Tesseract te hace responsable de: descargar y colocar los archivos de idioma tessdata, seleccionar el modo de segmentación de páginas correcto, gestionar tú mismo la división de archivos TIFF y PDF de varias páginas, y configurar el multihilo si deseas un procesamiento paralelo. Ninguno de esos detalles es exclusivo de su problema empresarial.

IronOCR se encarga de toda esa infraestructura. Obtienes una interfaz API tipada, gestión automática de datos, división y recombinación de PDF integrada, y un motor seguro para subprocesos que puedes reutilizar en todas las solicitudes. La contrapartida es una licencia de pago para uso en producción; la página de licencias muestra los niveles de precios actuales, incluida una licencia de desarrollo gratuita.

Para los equipos que necesitan dependencias exclusivamente de código abierto, Tesseract Plus sin procesar más un preprocesamiento personalizado es una opción viable. Para los equipos que necesitan implementar un OCR fiable rápidamente, IronOCR reduce la superficie de integración a unas pocas líneas de C#.

¿Cómo se instala el SDK de IronOCR .NET?

La instalación se realiza a través de NuGet, el gestor de paquetes estándar de .NET Standard. Ejecuta el siguiente comando en el directorio de tu proyecto:

Install-Package IronOcr

Para los usuarios de Visual Studio, busquen IronOcr en la interfaz gráfica de usuario del Gestor de paquetes de NuGet e instálenlo desde allí. Para ver todas las opciones de instalación, incluidas las referencias manuales a DLL, consulte la documentación de instalación de IronOCR.

Tras la instalación, añada la clave de licencia al inicio de su aplicación o appsettings.json. Puedes iniciar una prueba gratuita para obtener una clave de prueba que desbloquee todas las funciones durante la evaluación.

Verificación de la instalación

Una rápida comprobación tras la instalación confirma que todo está conectado correctamente. Crea una aplicación de consola for .NET 10:

using IronOcr;

// Minimal smoke test -- reads a single image and prints extracted text
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("sample.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

// Minimal smoke test -- reads a single image and prints extracted text
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("sample.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

Si aparece texto en la consola, significa que el SDK está instalado y que la clave de licencia es válida. Ya estás listo para crear flujos de trabajo de producción.

¿Cómo se extrae texto de imágenes y archivos PDF en C#?

El patrón de extracción básico es el mismo para todos los tipos de entrada. Se crea una instancia de IronTesseract, se carga el contenido en un objeto OcrInput y se llama a Read(). IronOCR detecta automáticamente el formato de archivo a partir de la extensión, por lo que la misma ruta de código gestiona archivos JPEG, PNG, TIFF, BMP y PDF de varias páginas.

using IronOcr;

// Reusable OCR service encapsulating the IronTesseract engine
public class OcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ExtractText(string filePath)
    {
        using var input = new OcrInput();

        // LoadPdf for PDF files; LoadImage for raster formats
        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        return _ocr.Read(input).Text;
    }

    public async Task<string> ExtractTextAsync(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        var result = await _ocr.ReadAsync(input);
        return result.Text;
    }
}
using IronOcr;

// Reusable OCR service encapsulating the IronTesseract engine
public class OcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ExtractText(string filePath)
    {
        using var input = new OcrInput();

        // LoadPdf for PDF files; LoadImage for raster formats
        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        return _ocr.Read(input).Text;
    }

    public async Task<string> ExtractTextAsync(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        var result = await _ocr.ReadAsync(input);
        return result.Text;
    }
}
$vbLabelText   $csharpLabel

Punto de entrada de primer nivel para utilizar el servicio:

using IronOcr;

var service = new OcrService();
string text = await service.ExtractTextAsync("invoice.pdf");
Console.WriteLine(text);
using IronOcr;

var service = new OcrService();
string text = await service.ExtractTextAsync("invoice.pdf");
Console.WriteLine(text);
$vbLabelText   $csharpLabel

La instancia IronTesseract es segura para subprocesos y está diseñada para su reutilización. Cree un objeto una sola vez al iniciar la aplicación (por ejemplo, mediante la inyección de dependencias en .NET Core) en lugar de instanciarlo por cada solicitud.

En el caso de los PDF de varias páginas, result.Pages te permite acceder, página por página, al texto, a la puntuación de confianza y a los cuadros delimitadores. Consulte la guía de OCR de PDF de varias páginas para obtener más detalles sobre la iteración página por página.

¿Cómo se mejora la precisión del OCR con filtros de preprocesamiento?

Los escaneos sin procesar procedentes de escáneres planos, cámaras de teléfonos inteligentes o máquinas de fax suelen adolecer de ruido, rotación, bajo contraste y resolución insuficiente. El proceso de corrección de la calidad de imagen de IronOCR aborda cada problema con filtros específicos que se encadenan antes de la llamada de lectura.

using IronOcr;

public class AccuracyOptimizedOcr
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ProcessLowQualityDocument(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        // Chain preprocessing filters in order of operation
        input.DeNoise();              // Remove scan artifacts and speckling
        input.Deskew();               // Correct page tilt up to 35 degrees
        input.Scale(150);             // Enlarge small text for better recognition
        input.Binarize();             // Convert to black/white for cleaner edges
        input.EnhanceResolution(300); // Sharpen blurry or low-DPI input

        var result = _ocr.Read(input);

        // Confidence below 70 often signals a preprocessing mismatch
        if (result.Confidence < 70)
            Console.WriteLine($"Warning: low confidence ({result.Confidence:F1}%)");

        return result.Text;
    }
}
using IronOcr;

public class AccuracyOptimizedOcr
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ProcessLowQualityDocument(string filePath)
    {
        using var input = new OcrInput();

        if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(filePath);
        else
            input.LoadImage(filePath);

        // Chain preprocessing filters in order of operation
        input.DeNoise();              // Remove scan artifacts and speckling
        input.Deskew();               // Correct page tilt up to 35 degrees
        input.Scale(150);             // Enlarge small text for better recognition
        input.Binarize();             // Convert to black/white for cleaner edges
        input.EnhanceResolution(300); // Sharpen blurry or low-DPI input

        var result = _ocr.Read(input);

        // Confidence below 70 often signals a preprocessing mismatch
        if (result.Confidence < 70)
            Console.WriteLine($"Warning: low confidence ({result.Confidence:F1}%)");

        return result.Text;
    }
}
$vbLabelText   $csharpLabel

Guía para la selección de filtros:

  • DeNoise() -- utilizar para escaneos con gran cantidad de motas o artefactos de compresión
  • Deskew() -- utilizar cuando los documentos se fotografían en ángulo; Véase la detección de rotación de página para la detección automática
  • Scale() -- utilizar para letra pequeña o entradas con menos de 150 ppp; Los valores de 150-200 suelen dar los mejores resultados
  • Binarize() -- utilizar para fondos de color o degradados; convierte la imagen a blanco y negro estricto
  • EnhanceResolution() -- utilizar para texto borroso o con poco contraste; apunta a 300 ppp como el punto óptimo de Tesseract

Las investigaciones publicadas en la revista International Journal on Document Analysis and Recognition demuestran sistemáticamente que la binarización y la corrección de la inclinación son los dos pasos de preprocesamiento de mayor impacto para mejorar las tasas de reconocimiento de caracteres. Aplique ambas como referencia para cualquier proceso de producción.

Filtros de preprocesamiento de IronOCR y sus principales casos de uso
Filtrar Problema resuelto Cuándo solicitarlo
`DeNoise()` Artefactos del escáner, ruido de moteado Cualquier escaneo con escáner plano o fax
`Deskew()` Inclinación y rotación de la página Documentos fotografiados o desalineados
`Scale()` Texto pequeño o baja resolución (DPI) Resolución inferior a 150 ppp
`Binarize()` Fondos de color, degradados Papel de color o formularios con marca de agua
`EnhanceResolution()` Desenfoque y bajo contraste Capturas de cámara y archivos JPEG comprimidos

¿Cómo se crea un canal de procesamiento por lotes en producción?

La extracción de un solo documento es sencilla, pero los escenarios de producción implican cientos o miles de archivos que llegan a colas, carpetas compartidas o almacenamiento en la nube. La API asíncrona y el motor seguro para subprocesos de IronOCR lo hacen adecuado para cargas de trabajo en paralelo.

using IronOcr;
using Microsoft.Extensions.Logging;

public class ProductionOcrService
{
    private readonly IronTesseract _ocr;
    private readonly ILogger<ProductionOcrService> _logger;

    public ProductionOcrService(ILogger<ProductionOcrService> logger)
    {
        _logger = logger;
        _ocr = new IronTesseract
        {
            Configuration =
            {
                RenderSearchablePdfsAndHocr = true,
                ReadBarCodes = true
            }
        };
    }

    public async Task<IReadOnlyList<string>> ProcessBatchAsync(
        IEnumerable<string> filePaths,
        int maxDegreeOfParallelism = 4)
    {
        var results = new System.Collections.Concurrent.ConcurrentBag<string>();

        var options = new ParallelOptions
        {
            MaxDegreeOfParallelism = maxDegreeOfParallelism
        };

        await Parallel.ForEachAsync(filePaths, options, async (filePath, ct) =>
        {
            try
            {
                using var input = new OcrInput();

                if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
                    input.LoadPdf(filePath);
                else
                    input.LoadImage(filePath);

                var result = await _ocr.ReadAsync(input);
                results.Add(result.Text);
                _logger.LogInformation("Processed {FilePath} at {Confidence:F1}% confidence",
                    filePath, result.Confidence);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "OCR failed for {FilePath}", filePath);
                results.Add(string.Empty);
            }
        });

        return results.ToList();
    }

    public void CreateSearchablePdf(string inputPath, string outputPath)
    {
        using var input = new OcrInput();

        if (inputPath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(inputPath);
        else
            input.LoadImage(inputPath);

        _ocr.Read(input).SaveAsSearchablePdf(outputPath);
        _logger.LogInformation("Searchable PDF written to {OutputPath}", outputPath);
    }
}
using IronOcr;
using Microsoft.Extensions.Logging;

public class ProductionOcrService
{
    private readonly IronTesseract _ocr;
    private readonly ILogger<ProductionOcrService> _logger;

    public ProductionOcrService(ILogger<ProductionOcrService> logger)
    {
        _logger = logger;
        _ocr = new IronTesseract
        {
            Configuration =
            {
                RenderSearchablePdfsAndHocr = true,
                ReadBarCodes = true
            }
        };
    }

    public async Task<IReadOnlyList<string>> ProcessBatchAsync(
        IEnumerable<string> filePaths,
        int maxDegreeOfParallelism = 4)
    {
        var results = new System.Collections.Concurrent.ConcurrentBag<string>();

        var options = new ParallelOptions
        {
            MaxDegreeOfParallelism = maxDegreeOfParallelism
        };

        await Parallel.ForEachAsync(filePaths, options, async (filePath, ct) =>
        {
            try
            {
                using var input = new OcrInput();

                if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
                    input.LoadPdf(filePath);
                else
                    input.LoadImage(filePath);

                var result = await _ocr.ReadAsync(input);
                results.Add(result.Text);
                _logger.LogInformation("Processed {FilePath} at {Confidence:F1}% confidence",
                    filePath, result.Confidence);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "OCR failed for {FilePath}", filePath);
                results.Add(string.Empty);
            }
        });

        return results.ToList();
    }

    public void CreateSearchablePdf(string inputPath, string outputPath)
    {
        using var input = new OcrInput();

        if (inputPath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(inputPath);
        else
            input.LoadImage(inputPath);

        _ocr.Read(input).SaveAsSearchablePdf(outputPath);
        _logger.LogInformation("Searchable PDF written to {OutputPath}", outputPath);
    }
}
$vbLabelText   $csharpLabel

El límite MaxDegreeOfParallelism evita el agotamiento de la memoria cuando los archivos son de gran tamaño. Un valor de 4 funciona bien en un servidor de cuatro núcleos; Auméntelo solo después de analizar el uso de la memoria. Para implementaciones de Azure Functions o AWS Lambda, establezca la concurrencia en 1 por instancia de función y escale horizontalmente en su lugar.

CreateSearchablePdf genera un PDF en el que la imagen original se conserva como una capa visible y el texto reconocido se incrusta de forma invisible debajo de ella. Esto permite la búsqueda de texto completo en visores de PDF y la indexación por parte de los motores de búsqueda, un requisito habitual en los sistemas de gestión de documentos.

Supervisión de las puntuaciones de confianza en producción

Cada OcrResult expone una propiedad Confidence (0-100) que refleja el grado de certeza del motor respecto al texto reconocido. El seguimiento de esta métrica en su infraestructura de registro le proporciona una señal de alerta temprana cuando la calidad de los documentos se degrada; por ejemplo, si la calibración de un escáner se desvía o si un nuevo proveedor de documentos envía escaneos con un DPI inferior al esperado.

Una estrategia práctica de umbrales: registrar una advertencia con una confianza inferior a 80, activar una pasada de preprocesamiento y reintento por debajo de 70, y marcar los documentos para su revisión humana por debajo de 60. Este enfoque por niveles detecta los problemas de calidad antes de que provoquen una corrupción silenciosa de los datos en los sistemas posteriores.

La documentación de registro de Microsoft .NET cubre los patrones ILogger utilizados en el servicio por lotes anterior para equipos que se integran con el contenedor de inyección de dependencias (DI) integrado de ASP.NET Core.

¿Cómo se extraen datos estructurados de documentos escaneados?

La extracción de texto es el primer paso. El segundo paso consiste en analizar ese texto y convertirlo en campos tipificados sobre los que tu aplicación pueda actuar. Este patrón combina la pasada de lectura de IronOCR con Regex de .NET para extraer datos estructurados de facturas, formularios e informes.

using IronOcr;
using System.Text.RegularExpressions;

public record Invoice(
    string? InvoiceNumber,
    DateOnly? Date,
    decimal? TotalAmount,
    string RawText
);

public class InvoiceOcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public Invoice ExtractInvoiceData(string invoicePath)
    {
        using var input = new OcrInput();

        if (invoicePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(invoicePath);
        else
            input.LoadImage(invoicePath);

        input.DeNoise();
        input.Deskew();

        var result = _ocr.Read(input);
        string text = result.Text;

        return new Invoice(
            InvoiceNumber: ExtractInvoiceNumber(text),
            Date: ExtractDate(text),
            TotalAmount: ExtractAmount(text),
            RawText: text
        );
    }

    private static string? ExtractInvoiceNumber(string text)
    {
        var match = Regex.Match(text, @"Invoice\s*#?:?\s*(\S+)", RegexOptions.IgnoreCase);
        return match.Success ? match.Groups[1].Value : null;
    }

    private static DateOnly? ExtractDate(string text)
    {
        // Numeric format: MM/DD/YYYY
        var numeric = Regex.Match(text, @"\b(\d{1,2}/\d{1,2}/\d{2,4})\b");
        if (numeric.Success && DateTime.TryParse(numeric.Groups[1].Value, out var d1))
            return DateOnly.FromDateTime(d1);

        // Written format: January 15, 2025
        var written = Regex.Match(text,
            @"\b(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2}),?\s+(\d{4})\b",
            RegexOptions.IgnoreCase);
        if (written.Success && DateTime.TryParse(written.Value, out var d2))
            return DateOnly.FromDateTime(d2);

        return null;
    }

    private static decimal? ExtractAmount(string text)
    {
        var match = Regex.Match(text, @"\$\s*(\d+(?:\.\d{2})?)");
        return match.Success && decimal.TryParse(match.Groups[1].Value, out var amt)
            ? amt
            : null;
    }
}
using IronOcr;
using System.Text.RegularExpressions;

public record Invoice(
    string? InvoiceNumber,
    DateOnly? Date,
    decimal? TotalAmount,
    string RawText
);

public class InvoiceOcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public Invoice ExtractInvoiceData(string invoicePath)
    {
        using var input = new OcrInput();

        if (invoicePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase))
            input.LoadPdf(invoicePath);
        else
            input.LoadImage(invoicePath);

        input.DeNoise();
        input.Deskew();

        var result = _ocr.Read(input);
        string text = result.Text;

        return new Invoice(
            InvoiceNumber: ExtractInvoiceNumber(text),
            Date: ExtractDate(text),
            TotalAmount: ExtractAmount(text),
            RawText: text
        );
    }

    private static string? ExtractInvoiceNumber(string text)
    {
        var match = Regex.Match(text, @"Invoice\s*#?:?\s*(\S+)", RegexOptions.IgnoreCase);
        return match.Success ? match.Groups[1].Value : null;
    }

    private static DateOnly? ExtractDate(string text)
    {
        // Numeric format: MM/DD/YYYY
        var numeric = Regex.Match(text, @"\b(\d{1,2}/\d{1,2}/\d{2,4})\b");
        if (numeric.Success && DateTime.TryParse(numeric.Groups[1].Value, out var d1))
            return DateOnly.FromDateTime(d1);

        // Written format: January 15, 2025
        var written = Regex.Match(text,
            @"\b(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2}),?\s+(\d{4})\b",
            RegexOptions.IgnoreCase);
        if (written.Success && DateTime.TryParse(written.Value, out var d2))
            return DateOnly.FromDateTime(d2);

        return null;
    }

    private static decimal? ExtractAmount(string text)
    {
        var match = Regex.Match(text, @"\$\s*(\d+(?:\.\d{2})?)");
        return match.Success && decimal.TryParse(match.Groups[1].Value, out var amt)
            ? amt
            : null;
    }
}
$vbLabelText   $csharpLabel

Este enfoque combina bien con el OCR por zonas cuando se sabe exactamente dónde aparece cada campo en un formulario. Al proporcionar un rectángulo delimitador, se omite el reconocimiento de página completa y se selecciona únicamente la zona que contiene el número de factura o el total, lo que reduce drásticamente el tiempo de procesamiento de los documentos de diseño fijo.

Para escenarios de extracción más avanzados, que incluyen tablas y formularios estructurados, consulte los ejemplos de extracción de datos de IronOCR en el sitio web del producto.

¿Cómo se gestiona el OCR multilingüe en .NET?

Muchas organizaciones procesan documentos en más de un idioma: formularios de importación/exportación, contratos internacionales o envíos multilingües de clientes. IronOCR lo gestiona permitiéndole configurar el paquete de idioma antes de la llamada de lectura.

using IronOcr;

// Configure multi-language recognition
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;  // Swap for any of 125+ supported languages

// For mixed-language documents, combine language packs
ocr.AddSecondaryLanguage(OcrLanguage.German);

using var input = new OcrInput();
input.LoadPdf("multilingual-contract.pdf");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

// Configure multi-language recognition
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.EnglishBest;  // Swap for any of 125+ supported languages

// For mixed-language documents, combine language packs
ocr.AddSecondaryLanguage(OcrLanguage.German);

using var input = new OcrInput();
input.LoadPdf("multilingual-contract.pdf");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
$vbLabelText   $csharpLabel

La página de compatibilidad lingüística de IronOCR enumera los más de 125 paquetes de idiomas disponibles con instrucciones de descarga. Los paquetes de idiomas se distribuyen como paquetes NuGet (por ejemplo, IronOcr.Languages.German), por lo que se integran en el mismo flujo de trabajo de gestión de paquetes que ya utilizas.

Para conjuntos de caracteres fuera del alfabeto latino (árabe, chino, japonés, coreano), IronOCR proporciona modelos optimizados que gestionan la dirección del texto de derecha a izquierda y los scripts ideográficos. Consulte la guía de OCR CJK para conocer los detalles de configuración.

¿Cuales son tus próximos pasos?

Ahora dispone de los patrones necesarios para añadir OCR de nivel de producción a cualquier aplicación .NET 10: extracción básica de texto, preprocesamiento para escaneos difíciles, procesamiento por lotes asíncrono, análisis de datos estructurados y compatibilidad con múltiples idiomas.

A partir de aquí, explora estas áreas en función de las necesidades de tu proyecto:

Empiece con la licencia de prueba gratuita para evaluar todas las funciones en sus propios documentos antes de comprometerse con un plan.

NuGet Instalar con NuGet

PM >  Install-Package IronOcr

Echa un vistazo a IronOCR en NuGet para una instalación rápida. Con más de 10 millones de descargas, está transformando el desarrollo de PDF con C#. También puede descargar el DLL o el instalador de Windows.

Preguntas Frecuentes

¿Qué es el SDK de .NET OCR?

El SDK de .NET OCR de IronOCR es una biblioteca diseñada para integrar capacidades de reconocimiento óptico de caracteres en aplicaciones C#, permitiendo a los desarrolladores extraer texto de imágenes, PDFs y documentos escaneados.

¿Cuáles son las características clave del SDK de .NET de IronOCR?

El SDK de .NET de IronOCR ofrece una API simple, soporte para múltiples idiomas, compatibilidad multiplataforma y características avanzadas para manejar varios formatos de archivo y escaneos de baja calidad.

¿Cómo maneja IronOCR diferentes idiomas?

El SDK de .NET de IronOCR admite múltiples idiomas, permitiendo la extracción y reconocimiento de texto de documentos en varios idiomas sin requerir configuraciones adicionales.

¿Puede IronOCR procesar escaneos de baja calidad?

Sí, IronOCR está diseñado para manejar eficazmente escaneos de baja calidad, empleando algoritmos avanzados para mejorar la precisión del reconocimiento de texto incluso en escenarios desafiantes.

¿Es el SDK de .NET de IronOCR multiplataforma?

El SDK de .NET de IronOCR es multiplataforma, lo que significa que se puede usar en diferentes sistemas operativos, haciéndolo versátil para varios entornos de desarrollo.

¿Qué formatos de archivo admite IronOCR?

IronOCR admite una amplia gama de formatos de archivo, incluyendo imágenes, PDFs y documentos escaneados, proporcionando flexibilidad para tareas de reconocimiento de texto en diferentes medios.

¿Cómo pueden los desarrolladores integrar IronOCR en sus proyectos?

Los desarrolladores pueden integrar IronOCR en sus proyectos C# utilizando su API tipificada, lo que simplifica el proceso de agregar funcionalidad de OCR a las aplicaciones.

¿Cuáles son algunos casos de uso para IronOCR?

IronOCR se puede usar en sistemas de gestión de documentos, entrada de datos automatizada, digitalización de contenido y cualquier aplicación que requiera extracción de texto de imágenes o PDFs.

Kannaopat Udonpant
Ingeniero de Software
Antes de convertirse en Ingeniero de Software, Kannapat completó un doctorado en Recursos Ambientales de la Universidad de Hokkaido en Japón. Mientras perseguía su grado, Kannapat también se convirtió en miembro del Laboratorio de Robótica de Vehículos, que es parte del Departamento de Ingeniería ...
Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame