IRONSOFTWAREHOME

Guarde archivos PDF con capacidad de búsqueda en C# con IronOCR

Curtis Chau
Curtis Chau
Updated: 4 de junio de 2026

IronOCR permite a los desarrolladores de C# convertir documentos e imágenes escaneados en archivos PDF con capacidad de búsqueda mediante tecnologíaOCR, admitiendo la salida como archivos, bytes o secuencias con sólo unas pocas líneas de código.

Un PDF con capacidad de búsqueda, a menudo referido como un PDF con OCR (Reconocimiento Óptico de Caracteres), es un tipo de documento PDF que contiene tanto imágenes escaneadas como texto legible por máquina. Estos PDFs se crean al realizar OCR en documentos de papel escaneados o imágenes, reconociendo el texto en las imágenes y convirtiéndolo en texto seleccionable y con capacidad de búsqueda.

SaveAsSearchablePdf también está disponible en los resultados de ReadPhoto, ReadScreenShot y ReadDocumentAdvanced, permitiendo la creación de PDF buscables desde fotos y flujos de trabajo OCR avanzados de documentos. Esta capacidad resulta especialmente útil a la hora de digitalizar archivos en papel o de hacer que los archivos PDF heredados sean consultables para una mejor gestión de documentos.

Guía de inicio rápido: Exportar PDF con capacidad de búsqueda en una sola línea

Configure RenderSearchablePdf = true, ejecute Read(...) en su entrada e invoque SaveAsSearchablePdf(...). Eso es todo lo que se necesita para generar un PDF totalmente buscable con IronOCR.

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. 2Copie y ejecute este fragmento de código.

    new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } } .Read(new IronOcr.OcrImageInput("file.jpg")).SaveAsSearchablePdf("searchable.pdf");
    C#
  3. 3Despliegue para probar en su entorno real

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

¿Cómo puedo exportar los resultados del OCR a un PDF que permita búsquedas?

Para exportar el resultado como un PDF buscable usando IronOCR, establezca la propiedad Configuration.RenderSearchablePdf en true, obtenga el objeto de resultado OCR del método Read y llame a SaveAsSearchablePdf con la ruta del archivo de salida.

Entrada

Una sola página de una novela de Harry Potter, escaneada como un archivo TIFF y cargada a través de OcrImageInput. La página contiene texto impreso denso, una entrada realista para probar la capa de texto de PDF con capacidad de búsqueda.

Página del libro de Harry Potter que muestra el capítulo ocho, "La fiesta del día de la muerte", con texto sobre el encuentro de Harry con Nick Casi Decapitado

potter.tiff: Página de novela escaneada utilizada como entrada de OCR para generar un PDF con capacidad de búsqueda y una capa de texto invisible.

using IronOcr;

// Create the OCR engine: defaults to English with balanced speed and accuracy
IronTesseract ocrTesseract = new IronTesseract();

// Required: without this flag the text overlay layer is not built, and SaveAsSearchablePdf produces a plain image PDF
ocrTesseract.Configuration.RenderSearchablePdf = true;

// Wrap the TIFF in OcrImageInput: handles DPI detection and page layout automatically
using var imageInput = new OcrImageInput("Potter.tiff");
// Run OCR; returns a result containing the recognized text and spatial layout data
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Write the output: the original scanned image is preserved with an invisible text layer on top
ocrResult.SaveAsSearchablePdf("searchablePdf.pdf");

Resultado

searchablePdf.pdf: Salida en PDF con capacidad de búsqueda. Seleccione o busque cualquier palabra para verificar la capa de texto OCR.

El PDF resultante incorpora la imagen original de la página escaneada con una capa de texto invisible situada sobre cada palabra reconocida. Seleccione o busque cualquier palabra en el visor para confirmar que la capa de texto está presente.

IronOCR utiliza una fuente concreta para la superposición, lo que puede provocar ligeras discrepancias en el tamaño del texto renderizado en comparación con el original.

Al trabajar con archivos TIFF de varias páginas o documentos complejos, IronOCR procesa automáticamente todas las páginas y las incluye en el resultado. La biblioteca gestiona automáticamente el orden de las páginas y el posicionamiento del texto superpuesto, lo que garantiza una asignación precisa del texto a la imagen.

¿Cómo puedo crear archivos PDF con capacidad de búsqueda a partir de fotos o escaneos avanzados de documentos?

La exportación de PDF buscable también está disponible cuando se utiliza ReadPhoto, ReadScreenShot o ReadDocumentAdvanced. Cada uno de estos métodos devuelve un tipo de resultado que admite SaveAsSearchablePdf.

Opcionalmente, puede pasar un ModelType al llamar a estos métodos. El valor predeterminado es Normal, mientras que Enhanced ofrece mejor precisión a costa de la velocidad.

Entrada

Una foto de un mural con texto pintado, cargada a través de LoadImage. La escena contiene múltiples palabras incrustadas en un entorno del mundo real, lo que lo convierte en una prueba práctica para ReadPhoto con el modelo Enhanced.

Foto con texto utilizada como entrada para el OCR de ReadPhoto

photo.png: Foto de un mural de pared cargada a través de ReadPhoto con el modelo Enhanced para generar un PDF con capacidad de búsqueda.

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("photo.png");

// ReadPhoto with Enhanced model
OcrPhotoResult photoResult = ocr.ReadPhoto(input, ModelType.Enhanced);
Console.WriteLine(photoResult.Text);

// Save as searchable PDF
byte[] pdfBytes = photoResult.SaveAsSearchablePdfBytes();
File.WriteAllBytes("searchable-photo.pdf", pdfBytes);
C#

Resultado

searchable-photo.pdf: PDF con capacidad de búsqueda generado por ReadPhoto. La capa de texto admite la búsqueda de texto completo en cualquier visor de PDF.

El PDF con capacidad de búsqueda resultante contiene una capa de texto invisible sobre las palabras reconocidas. Al buscar "Milk" en el visor de PDF se obtienen 3 resultados, extraídos directamente del texto pintado en la foto original.

El mismo enfoque funciona con ReadDocumentAdvanced, el cual devuelve un OcrDocAdvancedResult:

Entrada

Una factura escaneada cargada a través de LoadImage. Contiene campos estructurados (nombre del proveedor, artículos y totales) que ReadDocumentAdvanced con el modelo Enhanced reconoce e incrusta como una capa de texto buscable.

Documento de factura utilizado como entrada para ReadDocumentAdvanced OCR

invoice.png: Factura escaneada cargada en OcrInput y pasada a ReadDocumentAdvanced con el modelo Enhanced.

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("invoice.png");

// ReadDocumentAdvanced with Enhanced model
OcrDocAdvancedResult docResult = ocr.ReadDocumentAdvanced(input, ModelType.Enhanced);
byte[] docPdfBytes = docResult.SaveAsSearchablePdfBytes();
File.WriteAllBytes("searchable-doc.pdf", docPdfBytes);
C#

Resultado

searchable-doc.pdf: PDF con capacidad de búsqueda generado por ReadDocumentAdvanced. Los campos de la factura se pueden seleccionar y buscar.

SaveAsSearchablePdf no es compatible con los resultados ReadPassport o ReadLicensePlate y lanzará un ExtensionAdvancedScanException.

Trabajar con documentos de varias páginas

Al realizar operaciones de OCR de PDF en documentos de varias páginas, IronOCR procesa cada página de forma secuencial y mantiene la estructura original del documento.

Entrada

Un informe anual de 11 páginas de Hartwell Capital Management cargado a través de OcrPdfInput. Las páginas 1–10 (índices 0–9) se seleccionan usando el rango PageIndices y se procesan en una sola llamada Read.

multi-page-scan.pdf: informe anual de Hartwell Capital Management de 11 páginas utilizado como entrada para la conversión a PDF de varias páginas con capacidad de búsqueda.

using IronOcr;

// Create the OCR engine. RenderSearchablePdf is false by default; no need to set it when using OcrPdfInput directly
var ocrTesseract = new IronTesseract();

// Load pages 1–10 (indices 0–9) only; PageIndices avoids loading and OCR-ing the full document unnecessarily
using var pdfInput = new OcrPdfInput("multi-page-scan.pdf", PageIndices: Enumerable.Range(0, 10));

// Run OCR across all selected pages in order
OcrResult result = ocrTesseract.Read(pdfInput);

// Write the searchable PDF; true = apply the input's image filters to the embedded page images in the output
result.SaveAsSearchablePdf("searchable-multi-page.pdf", true);

Resultado

searchable-multi-page.pdf: archivo PDF de 10 páginas con capacidad de búsqueda. Cada página tiene una capa de texto invisible para la búsqueda de texto completo.

El PDF resultante contiene 10 páginas (páginas 1-10 del informe original), cada una con una capa de texto invisible que permite seleccionar y buscar el contenido extraído en cualquier visor de PDF.

¿Cómo puedo aplicar filtros al crear archivos PDF con capacidad de búsqueda?

El segundo parámetro de SaveAsSearchablePdf acepta un booleano que controla si se aplican filtros de imagen al resultado incrustado. El uso de filtros de optimización de imágenes puede mejorar significativamente la precisión del OCR, especialmente cuando se trata de escaneados de baja calidad.

El ejemplo a continuación aplica el filtro de escala de grises y pasa true como segundo argumento para incrustar la imagen filtrada en el resultado PDF buscable.

using IronOcr;

// Create OCR engine: filters are applied at the OcrInput level, so no configuration changes are needed here
var ocr = new IronTesseract();
var ocrInput = new OcrInput();

// Load the scanned PDF as the OCR source
ocrInput.LoadPdf("invoice.pdf");

// Convert to grayscale: removes color noise that can reduce OCR accuracy on color-printed documents
ocrInput.ToGrayScale();
// Run OCR on the preprocessed input
OcrResult result = ocr.Read(ocrInput);

// Write the searchable PDF; true = embed the grayscale-filtered image rather than the original color scan
result.SaveAsSearchablePdf("outputGrayscale.pdf", true);

Para obtener resultados óptimos, considere la posibilidad de utilizar el Asistente para filtros para determinar automáticamente la mejor combinación de filtros para su tipo de documento específico. Esta herramienta analiza su entrada y sugiere los pasos de preprocesamiento adecuados.

¿Cómo puedo corregir caracteres incorrectos en archivos PDF con función de búsqueda?

Si el texto parece correcto visualmente en el PDF, pero muestra caracteres dañados al buscarlo o copiarlo, el problema se debe a la fuente predeterminada utilizada en la capa de texto buscable. Por defecto, SaveAsSearchablePdf usa Times New Roman, que no soporta completamente todos los caracteres Unicode. Esto afecta a los idiomas con caracteres acentuados o no ASCII.

Para solucionar esto, proporciona un archivo de fuente compatible con Unicode como tercer parámetro:

result.SaveAsSearchablePdf("output.pdf", false, "Fonts/LiberationSerif-Regular.ttf");

También puede especificar un nombre de fuente personalizado como cuarto parámetro:

result.SaveAsSearchablePdf("output.pdf", false, "Fonts/LiberationSerif-Regular.ttf", "MyFont");

Esto se aplica a todos los tipos de resultados incluyendo OcrResult, OcrPhotoResult y OcrDocAdvancedResult, por lo que la corrección funciona independientemente de qué método de lectura produjo el resultado.

Por favor nota: Para documentos compuestos originalmente en Times New Roman, se recomienda Liberation Serif, ya que es métricamente compatible y conserva el espaciado y el diseño originales. Para un uso multilingüe general, Noto Sans o DejaVu Sans son buenas alternativas.

En los casos en los que no sea posible escribir en una ruta de archivo, IronOCR también admite la devolución del PDF con capacidad de búsqueda como una matriz de bytes o un flujo.


¿Cómo puedo exportar archivos PDF con capacidad de búsqueda como bytes o secuencias?

La salida del PDF buscable también se puede manejar como bytes o streams usando los métodos SaveAsSearchablePdfBytes y SaveAsSearchablePdfStream, respectivamente. El siguiente ejemplo de código muestra cómo utilizar estos métodos.

// Return as a byte array: suited for storing in a database or sending in an HTTP response body
byte[] pdfByte = ocrResult.SaveAsSearchablePdfBytes();

// Return as a stream: suited for uploading to cloud storage or piping to another I/O operation without buffering the full file
Stream pdfStream = ocrResult.SaveAsSearchablePdfStream();

Estas opciones de salida son especialmente útiles cuando se integran con servicios de almacenamiento en la nube, bases de datos o aplicaciones web en las que el acceso al sistema de archivos puede ser limitado. El siguiente ejemplo muestra aplicaciones prácticas:

using IronOcr;
using System.IO;

public class SearchablePdfExporter
{
    public async Task ProcessAndUploadPdf(string inputPath)
    {
        var ocr = new IronTesseract
        {
            Configuration = { RenderSearchablePdf = true }
        };
        
        // Process the input
        using var input = new OcrImageInput(inputPath);
        var result = ocr.Read(input);
        
        // Option 1: Save to database as byte array
        byte[] pdfBytes = result.SaveAsSearchablePdfBytes();
        // Store pdfBytes in database BLOB field
        
        // Option 2: Upload to cloud storage using stream
        using (Stream pdfStream = result.SaveAsSearchablePdfStream())
        {
            // Upload stream to Azure Blob Storage, AWS S3, etc.
            await UploadToCloudStorage(pdfStream, "searchable-output.pdf");
        }
        
        // Option 3: Return as web response
        // return File(pdfBytes, "application/pdf", "searchable.pdf");
    }
    
    private async Task UploadToCloudStorage(Stream stream, string fileName)
    {
        // Cloud upload implementation
    }
}

Consideraciones sobre el rendimiento

Al procesar grandes volúmenes de documentos, considere la posibilidad de implementar operaciones de OCR multihilo para mejorar el rendimiento. IronOCR admite el procesamiento concurrente, lo que permite manejar varios documentos a la vez:

using IronOcr;
using System.Threading.Tasks;
using System.Collections.Concurrent;

public class BatchPdfProcessor
{
    private readonly IronTesseract _ocr;
    
    public BatchPdfProcessor()
    {
        _ocr = new IronTesseract
        {
            Configuration = 
            {
                RenderSearchablePdf = true,
                // Configure for optimal performance
                Language = OcrLanguage.English
            }
        };
    }
    
    public async Task ProcessBatchAsync(string[] filePaths)
    {
        var results = new ConcurrentBag<(string source, string output)>();
        
        await Parallel.ForEachAsync(filePaths, async (filePath, ct) =>
        {
            using var input = new OcrImageInput(filePath);
            var result = _ocr.Read(input);
            
            string outputPath = Path.ChangeExtension(filePath, ".searchable.pdf");
            result.SaveAsSearchablePdf(outputPath);
            
            results.Add((filePath, outputPath));
        });
        
        Console.WriteLine($"Processed {results.Count} files");
    }
}

Opciones de configuración avanzadas

Para situaciones más avanzadas, puede aprovechar configuración detallada de Tesseract para ajustar el motor de OCR a tipos de documentos o idiomas específicos:

var advancedOcr = new IronTesseract
{
    Configuration = 
    {
        RenderSearchablePdf = true,
        TesseractVariables = new Dictionary<string, object>
        {
            { "preserve_interword_spaces", 1 },
            { "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" }
        },
        PageSegmentationMode = TesseractPageSegmentationMode.SingleColumn
    },
    Language = OcrLanguage.EnglishBest
};

Estas opciones de configuración se aplican por igual a los tres métodos de salida: SaveAsSearchablePdf, SaveAsSearchablePdfBytes y SaveAsSearchablePdfStream. El resumen que figura a continuación recoge el conjunto completo de métodos de PDF con capacidad de búsqueda junto con sus formatos de salida correspondientes.

Resumen

La creación de archivos PDF con capacidad de búsqueda con IronOCR es sencilla y flexible. Ya sea que necesite procesar imágenes individuales, documentos de múltiples páginas, fotos a través de ReadPhoto o escaneos avanzados de documentos a través de ReadDocumentAdvanced, la biblioteca proporciona métodos robustos para generar PDF buscables en varios formatos. Use el parámetro ModelType para elegir entre los modelos ML estándar y mejorados para mayor precisión. La posibilidad de exportar como archivos, bytes o flujos hace que se adapte a cualquier arquitectura de aplicación, desde aplicaciones de escritorio hasta servicios basados en la nube.

Para escenarios de OCR más avanzados, explore los ejemplos de código completos o consulte la documentación de la API para obtener información detallada sobre las firmas de métodos y las opciones.

Preguntas Frecuentes

¿Cómo puedo crear un PDF con función de búsqueda a partir de imágenes escaneadas en C#?

IronOCR simplifica la creación de archivos PDF con capacidad de búsqueda a partir de imágenes escaneadas. Basta con establecer RenderSearchablePdf en true en la configuración, utilizar el método Read() en la imagen de entrada y llamar a SaveAsSearchablePdf() con la ruta de salida deseada. IronOCR realizará el OCR en la imagen y generará un PDF con texto seleccionable y buscable superpuesto en la imagen original.

¿Qué formatos de archivo se pueden convertir en PDF con función de búsqueda?

IronOCR puede convertir varios formatos de imagen, incluidos JPG, PNG, TIFF y documentos PDF existentes en PDF con capacidad de búsqueda. La biblioteca admite tanto imágenes de una sola página como documentos de varias páginas, como archivos TIFF, procesando automáticamente todas las páginas y manteniendo el orden correcto de las páginas en el PDF de salida.

¿Puedo exportar archivos PDF con función de búsqueda como matrices de bytes o secuencias en lugar de archivos?

Sí, IronOCR permite exportar archivos PDF con capacidad de búsqueda en varios formatos. Además de guardar directamente en un archivo mediante SaveAsSearchablePdf(), también puede exportar los resultados del OCR como matrices de bytes o flujos, lo que facilita la integración con aplicaciones web, almacenamiento en la nube o sistemas de bases de datos sin crear archivos temporales.

¿Cuál es el código mínimo necesario para crear un PDF con capacidad de búsqueda?

La creación de un PDF con capacidad de búsqueda con IronOCR se puede hacer en una sola línea de código: new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } }.Read(new IronOcr.OcrImageInput("file.jpg")).SaveAsSearchablePdf("searchable.pdf"). Esto demuestra el diseño simplificado de la API de IronOCR.

¿Cómo funciona la capa de texto invisible en los PDF con función de búsqueda?

IronOCR gestiona automáticamente el posicionamiento del texto reconocido como una capa invisible sobre la imagen original del PDF. Esto garantiza una correspondencia precisa entre el texto y la imagen, lo que permite a los usuarios seleccionar y buscar texto sin alterar el aspecto visual del documento original. La biblioteca IronOCR utiliza fuentes especializadas y algoritmos de posicionamiento para lograrlo.

¿Puedo crear archivos PDF con capacidad de búsqueda a partir de fotos o capturas de pantalla?

Sí, SaveAsSearchablePdf es compatible con los resultados de ReadPhoto, ReadScreenShot y ReadDocumentAdvanced. Cada método devuelve un tipo de resultado que admite la exportación a PDF con capacidad de búsqueda, lo que facilita la conversión de fotos del mundo real, capturas de pantalla o escaneos de documentos complejos en PDF con capacidad de búsqueda.

¿Qué hace el parámetro ModelType?

El parámetro ModelType controla qué modelo de aprendizaje automático preentrenado se utiliza para el OCR. Normal es el valor predeterminado y procesa imágenes redimensionadas a 960 píxeles para obtener resultados rápidos. Enhanced admite imágenes de hasta 2560 píxeles, conservando los detalles más finos y mejorando la precisión para entradas de alta resolución.

¿Por qué los caracteres copiados o buscados aparecen dañados en mi PDF con capacidad de búsqueda?

Esto ocurre porque la fuente predeterminada (Times New Roman) utilizada en la capa de texto buscable no es totalmente compatible con todos los caracteres Unicode. Para solucionarlo, pase un archivo de fuente compatible con Unicode como tercer parámetro de SaveAsSearchablePdf. Si sus documentos se compusieron originalmente en Times New Roman y observa inconsistencias de espaciado con otras fuentes, pruebe Liberation Serif, ya que comparte las mismas métricas de glifos y conserva el diseño original.

What advanced configuration options are available in IronOCR for creating searchable PDFs?

IronOCR offers advanced configuration options, including detailed Tesseract configuration, setting Tesseract variables, and choosing different page segmentation modes. These can be tailored to fine-tune OCR for specific document types or languages.

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 estructurados y visualmente atractivos.

...
Leer más

¿Listo para empezar?

Nuget Downloads 6,236,385Versión:2026.9recién lanzado

Obtén tu GRATIS

Clave de prueba de 30 días instantáneamente.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuenta
bullet_testPrueba en producción
sin marcas de agua
bullet_calendarProducto completamente
funcional por 30 días
bullet_supportSoporte técnico 24/5
durante la prueba
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta
Biblioteca C# NuGet para PDF
Instalar con NuGet

Versión: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. En el Explorador de Soluciones, haga clic derecho en Referencias, Administrar Paquetes NuGet
  2. Selecciona Examinar y busca "IronOCR"
  3. Seleccione el paquete e instale
C# PDF DLL
Descargar DLL

Versión: 2026.9

o descargar el instalador de Windows aquí.

  1. Descarga y descomprime IronOCR en una ubicación como ~/Libs dentro de tu directorio de Solución
  2. En Visual Studio Solution Explorer, haz clic derecho en Referencias. Selecciona Examinar, "IronOCR.dll"

Licencias desde $999

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta