Guarde archivos PDF con capacidad de búsqueda en C# con IronOCR
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.
IronOCR proporciona una solución para realizar reconocimiento óptico de caracteres en documentos y exportar los resultados como PDFs con capacidad de búsqueda. Soporta la exportación de PDFs con capacidad de búsqueda como archivos, bytes y flujos. Esta capacidad es especialmente útil cuando se trabaja con documentos escaneados, se digitalizan archivos en papel o se hacen búsquedas en archivos PDF heredados para mejorar la gestión de documentos.
Inicio rápido: Exportar PDF con capacidad de búsqueda en una línea
<Descripción: Diagrama o captura de pantalla que ilustre el concepto de código -->
Establezca RenderSearchablePdf = true, ejecute Read(...) en su entrada, e invoque SaveAsSearchablePdf(...) - eso es todo lo que se necesita para generar un PDF con capacidad de búsqueda completa con IronOCR.
Empieza a crear PDF con NuGet ahora:
Instalar IronOCR con el gestor de paquetes NuGet
Copie y ejecute este fragmento de código.
new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } } .Read(new IronOcr.OcrImageInput("file.jpg")).SaveAsSearchablePdf("searchable.pdf");Despliegue para probar en su entorno real
Empieza a utilizar IronOCR en tu proyecto hoy mismo con una prueba gratuita
Flujo de trabajo mínimo (5 pasos)
- Descargue una biblioteca de C# para guardar los resultados como PDF con capacidad de búsqueda
- Prepare la imagen y el documento PDF para OCR
- Establezca la propiedad RenderSearchablePdf en
true - Utilice el método
SaveAsSearchablePdfpara generar un archivo PDF con capacidad de búsqueda - Exporte el PDF de búsqueda como byte y flujo
¿Cómo puedo exportar los resultados del OCR a un PDF que permita búsquedas?
Así exportas el resultado como PDF buscable con IronOCR. Primero debes establecer la propiedad Configuration.RenderSearchablePdf en true. Después de obtener el objeto de resultado de OCR del método Read, utiliza el método SaveAsSearchablePdf especificando la ruta del archivo de salida. El código a continuación demuestra el uso de un archivo TIFF de muestra.
:path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-searchable-pdf.csusing IronOcr;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Enable render as searchable PDF
ocrTesseract.Configuration.RenderSearchablePdf = true;
// Add image
using var imageInput = new OcrImageInput("Potter.tiff");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Export as searchable PDF
ocrResult.SaveAsSearchablePdf("searchablePdf.pdf");Imports IronOcr
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Enable render as searchable PDF
ocrTesseract.Configuration.RenderSearchablePdf = True
' Add image
Dim imageInput = New OcrImageInput("Potter.tiff")
' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Export as searchable PDF
ocrResult.SaveAsSearchablePdf("searchablePdf.pdf")Cuando se trabaja con archivos TIFF de varias páginas o documentos complejos, IronOcr procesa automáticamente todas las páginas y las incluye en el PDF de salida en el que se pueden realizar búsquedas. 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.
A continuación, una captura del TIFF de muestra y un PDF embebido buscable. Intenta seleccionar el texto en el PDF para confirmar su capacidad de búsqueda. La capacidad de selección también significa que el texto puede ser buscado en un visor de PDF.
IronOCR utiliza un tipo de letra particular para superponer el texto en el archivo de imagen, lo que puede dar lugar a algunas discrepancias en el tamaño del texto.

Archivo TIFF
PDF Buscable
Trabajar con documentos de varias páginas
Cuando se trata de operaciones de OCR de PDF en documentos de varias páginas, IronOcr procesa cada página secuencialmente y mantiene la estructura original del documento. He aquí un ejemplo de conversión de un PDF escaneado de varias páginas en un PDF con capacidad de búsqueda:
using IronOcr;
// Initialize IronTesseract with configuration
var ocrTesseract = new IronTesseract
{
Configuration =
{
RenderSearchablePdf = true,
PageSegmentationMode = TesseractPageSegmentationMode.Auto
}
};
// Load a multi-page PDF
using var pdfInput = new OcrPdfInput("multi-page-scan.pdf");
// Optionally specify page range (e.g., pages 1-10)
pdfInput.SelectPages(1, 10);
// Perform OCR with progress tracking
OcrResult result = ocrTesseract.Read(pdfInput);
// Save as searchable PDF
result.SaveAsSearchablePdf("searchable-multi-page.pdf");
// Display total pages processed
Console.WriteLine($"Processed {result.Pages.Length} pages");using IronOcr;
// Initialize IronTesseract with configuration
var ocrTesseract = new IronTesseract
{
Configuration =
{
RenderSearchablePdf = true,
PageSegmentationMode = TesseractPageSegmentationMode.Auto
}
};
// Load a multi-page PDF
using var pdfInput = new OcrPdfInput("multi-page-scan.pdf");
// Optionally specify page range (e.g., pages 1-10)
pdfInput.SelectPages(1, 10);
// Perform OCR with progress tracking
OcrResult result = ocrTesseract.Read(pdfInput);
// Save as searchable PDF
result.SaveAsSearchablePdf("searchable-multi-page.pdf");
// Display total pages processed
Console.WriteLine($"Processed {result.Pages.Length} pages");IRON VB CONVERTER ERROR developers@ironsoftware.com¿Cómo puedo aplicar filtros al crear archivos PDF con capacidad de búsqueda?
El SaveAsSearchablePdf también acepta un indicador booleano como segundo parámetro que permite aplicar filtros a un PDF con capacidad de búsqueda o no, dando a los desarrolladores la flexibilidad de elegir. 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.
A continuación se muestra un ejemplo de cómo aplicar el filtro de escala de grises y luego guardar el PDF con un filtro poniendo true en el segundo parámetro de SaveAsSearchablePdf.
:path=/static-assets/ocr/content-code-examples/how-to/image-quality-correction-searchable-pdf.csusing IronOcr;
var ocr = new IronTesseract();
var ocrInput = new OcrInput();
// Load a PDF file
ocrInput.LoadPdf("invoice.pdf");
// Apply gray scale filter
ocrInput.ToGrayScale();
OcrResult result = ocr.Read(ocrInput);
// Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputGrayscale.pdf", true);IRON VB CONVERTER ERROR developers@ironsoftware.comPara 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 exportar archivos PDF con capacidad de búsqueda como bytes o secuencias?
La salida del PDF con capacidad de búsqueda también se puede manejar como bytes o flujos utilizando los métodos SaveAsSearchablePdfBytes y SaveAsSearchablePdfStream, respectivamente. El ejemplo de código a continuación muestra cómo utilizar estos métodos.
:path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-searchable-pdf-byte-stream.cs// Export searchable PDF byte
byte[] pdfByte = ocrResult.SaveAsSearchablePdfBytes();
// Export searchable PDF stream
Stream pdfStream = ocrResult.SaveAsSearchablePdfStream();' Export searchable PDF byte
Dim pdfByte() As Byte = ocrResult.SaveAsSearchablePdfBytes()
' Export searchable PDF stream
Dim pdfStream As Stream = 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. He aquí un ejemplo ampliado que 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
}
}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
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comConsideraciones 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");
}
}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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comOpciones 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
};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
};IRON VB CONVERTER ERROR developers@ironsoftware.comResumen
La creación de archivos PDF con capacidad de búsqueda con IronOCR es sencilla y flexible. Tanto si necesita procesar imágenes individuales, documentos de varias páginas u operaciones por lotes, la biblioteca proporciona métodos sólidos para generar PDF con capacidad de búsqueda en varios formatos. 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 exhaustivos ejemplos de código o consulte la documentación de la API para obtener firmas de métodos y opciones detalladas.
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 superposición de texto en los PDF con función de búsqueda?
IronOCR gestiona automáticamente el posicionamiento del texto reconocido como una superposición invisible sobre la imagen original en el PDF. De este modo se garantiza una asignación precisa del texto a la imagen, lo que permite a los usuarios seleccionar y buscar texto manteniendo el aspecto visual del documento original. Para ello, la biblioteca utiliza fuentes y algoritmos de posicionamiento especializados.







