Cómo leer PDFs en OCR C#

Cómo leer PDFs en C# con IronOCR

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

IronOCR permite extraer texto de archivos PDF en C# con una sola línea de código, es compatible con todas las versiones de PDF y ofrece resultados de OCR precisos gracias a su motor basado en Tesseract.

PDF son las siglas de "Portable Document Format" Es un formato de archivo desarrollado por Adobe que conserva las fuentes, las imágenes, los gráficos y el diseño de cualquier documento fuente, independientemente de la aplicación y la plataforma utilizadas para crearlos. Los archivos PDF se utilizan generalmente para compartir y ver documentos en un formato consistente, sin importar el software o hardware usado para abrirlos. IronOCR maneja varias versiones de documentos PDF, desde las especificaciones PDF 1.0 más antiguas hasta los estándares PDF 2.0 más recientes.

como-título:2(Inicio rápido: Realiza OCR en un archivo PDF en segundos)

Configure OCR rápidamente con IronOCR construyendo un OcrPdfInput que apunte a su PDF, luego llame a Read. Este ejemplo muestra la extracción de texto de un PDF con IronOCR.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronOCR con el gestor de paquetes NuGet

    PM > Install-Package IronOcr

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

    using var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrPdfInput("document.pdf", PdfContents.TextAndImages));
  3. Despliegue para probar en su entorno real

    Empieza a utilizar IronOCR en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer


¿Cómo leer un archivo PDF completo?

Comience por instanciar la clase IronTesseract para realizar el OCR. Luego, utiliza una declaración 'using' para crear un objeto OcrPdfInput, pasándole la ruta del archivo PDF. Finalmente, realiza OCR usando el método Read. Este enfoque funciona tanto con PDF escaneados (basados en imágenes) como con PDF en los que se pueden realizar búsquedas (basados en texto), adecuados para extraer texto de varios tipos de PDF.

/* :path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf.cs */
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);

// Access the extracted text
string extractedText = ocrResult.Text;
System.Console.WriteLine(extractedText);
/* :path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf.cs */
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);

// Access the extracted text
string extractedText = ocrResult.Text;
System.Console.WriteLine(extractedText);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel
Vista dividida que muestra el texto formateado de Harry Potter frente al texto sin formato extraído para demostrar la extracción de texto en PDF

En la mayoría de los casos, no es necesario especificar la propiedad DPI. Sin embargo, proporcionar un número alto de DPI en la construcción de OcrPdfInput puede mejorar la precisión de lectura. La configuración de PPP predeterminada suele ser suficiente para la mayoría de los documentos PDF estándar, pero los documentos especializados pueden beneficiarse de un ajuste.

¿Cuándo debo ajustar la configuración de PPP?

Los ajustes de PPP (puntos por pulgada) son cruciales cuando se trabaja con documentos escaneados de baja resolución o PDF que contienen texto pequeño. Para obtener resultados óptimos, considere ajustar la configuración de PPP cuando:

  • Trabajo con documentos escaneados por debajo de 200 DPI
  • Procesamiento de PDF históricos o de archivo
  • Diseños complejos o fuentes pequeñas
  • Problemas de precisión con la configuración predeterminada

Se recomienda un DPI de 300 para la mayoría de las operaciones de OCR, mientras que 600 DPI puede ser necesario para documentos con texto muy pequeño o detalles intrincados.

¿Qué formatos de archivo soporta IronOCR además de PDF?

IronOCR es compatible con numerosos formatos de archivo, además de PDF. Puede procesar imágenes en varios formatos, incluyendo:

  • JPEG/JPG para fotografías estándar
  • PNG para imágenes con transparencia
  • TIFF para documentos de varias páginas
  • BMP para imágenes sin comprimir
  • GIF para gráficos sencillos

Además, IronOCR puede manejar corrientes PDF directamente desde la memoria, lo que resulta adecuado para aplicaciones web y servicios en la nube.

Trabajar con tipos de contenido PDF

Al procesar archivos PDF, puede optimizar el rendimiento especificando el tipo de contenido. El enum PdfContents permite seleccionar contenidos específicos:

// For text-only PDFs (faster processing)
var textOnlyPdf = new OcrPdfInput("document.pdf", PdfContents.Text);

// For image-only PDFs (scanned documents)
var imageOnlyPdf = new OcrPdfInput("scanned.pdf", PdfContents.Images);

// For mixed content (default)
var mixedPdf = new OcrPdfInput("mixed.pdf", PdfContents.TextAndImages);
// For text-only PDFs (faster processing)
var textOnlyPdf = new OcrPdfInput("document.pdf", PdfContents.Text);

// For image-only PDFs (scanned documents)
var imageOnlyPdf = new OcrPdfInput("scanned.pdf", PdfContents.Images);

// For mixed content (default)
var mixedPdf = new OcrPdfInput("mixed.pdf", PdfContents.TextAndImages);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

¿Cómo leer páginas específicas de un PDF?

Al leer páginas específicas de un documento PDF, especifique el número de índice de la página para la importación. Para ello, pase la lista de índices de página al parámetro PageIndices cuando construya el OcrPdfInput. Ten en cuenta que los índices de página utilizan numeración basada en cero. Esta función resulta especialmente útil cuando se trabaja con documentos extensos en los que solo algunas páginas contienen información relevante.

:path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-pdf-pages.cs
using IronOcr;
using System.Collections.Generic;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Create page indices list
List<int> pageIndices = new List<int>() { 0, 2 };

// Add PDF
using var pdfInput = new OcrPdfInput("Potter.pdf", PageIndices: pageIndices);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(pdfInput);
Imports IronOcr
Imports System.Collections.Generic

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Create page indices list
Private pageIndices As New List(Of Integer)() From {0, 2}

' Add PDF
Private pdfInput = New OcrPdfInput("Potter.pdf", PageIndices:= pageIndices)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(pdfInput)
$vbLabelText   $csharpLabel

¿Por qué la numeración de páginas empieza por cero?

La indexación basada en ceros es una convención estándar en C# y en la mayoría de los lenguajes de programación. Esto significa que la primera página es el índice 0, la segunda página es el índice 1, y así sucesivamente. Esta coherencia con la indexación de matrices facilita a los desarrolladores el trabajo con colecciones de páginas mediante programación. Para pasar de números de página legibles (1, 2, 3...) a índices, basta con restar 1 al número de página.

¿Cómo puedo leer páginas no consecutivas?

La lectura de páginas no consecutivas es sencilla con IronOCR. Simplemente añada los índices de página deseados a su lista en cualquier orden. Por ejemplo:

// Read pages 1, 3, 5, and 10 (using zero-based indices)
List<int> pageIndices = new List<int>() { 0, 2, 4, 9 };

// Or use LINQ for range-based selection
var evenPages = Enumerable.Range(0, 10).Where(x => x % 2 == 0).ToList();
// Read pages 1, 3, 5, and 10 (using zero-based indices)
List<int> pageIndices = new List<int>() { 0, 2, 4, 9 };

// Or use LINQ for range-based selection
var evenPages = Enumerable.Range(0, 10).Where(x => x % 2 == 0).ToList();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

El motor de OCR procesará únicamente las páginas especificadas, lo que mejora significativamente el rendimiento de los documentos de gran tamaño.

¿Qué ocurre si especifico números de página no válidos?

Si especifica índices de páginas que superen el número de páginas del documento, IronOCR lanzará una excepción. Implementar el tratamiento de errores o validar el recuento de páginas antes de procesarlas. Puede comprobar el número total de páginas de un PDF antes de realizar el OCR para asegurarse de que sus índices son válidos.

¿Cómo realizar el reconocimiento óptico de caracteres de una región específica de un PDF?

<Descripción: Captura de pantalla que muestra el proceso paso a paso -->

Al acotar el área a ser leída, puedes mejorar significativamente la eficiencia de lectura. Para conseguirlo, especifique la región exacta del PDF importado que debe leerse. En el siguiente ejemplo de código, IronOCR se centra únicamente en extraer el número de capítulo y el título. Esta técnica, similar a la definición de regiones OCR para imágenes, mejora tanto la velocidad como la precisión.

:path=/static-assets/ocr/content-code-examples/how-to/input-pdfs-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Specify crop regions
Rectangle[] scanRegions = { new Rectangle(550, 100, 600, 300) };

// Add PDF
using (var pdfInput = new OcrPdfInput("Potter.pdf", ContentAreas: scanRegions))
{
    // Perform OCR
    OcrResult ocrResult = ocrTesseract.Read(pdfInput);

    // Output the result to console
    Console.WriteLine(ocrResult.Text);
}
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Specify crop regions
Private scanRegions() As Rectangle = { New Rectangle(550, 100, 600, 300) }

' Add PDF
Using pdfInput = New OcrPdfInput("Potter.pdf", ContentAreas:= scanRegions)
	' Perform OCR
	Dim ocrResult As OcrResult = ocrTesseract.Read(pdfInput)

	' Output the result to console
	Console.WriteLine(ocrResult.Text)
End Using
$vbLabelText   $csharpLabel

¿Cómo determinar las coordenadas correctas de un rectángulo?

PDF con rectángulo rojo seleccionando título de capítulo para procesamiento OCR, consola de Visual Studio mostrando ejecución completada

Encontrar las coordenadas correctas requiere comprender el sistema de coordenadas del PDF. El constructor Rectangle toma cuatro parámetros: X (posición horizontal), Y (posición vertical), Ancho y Alto. Todas las medidas están en píxeles. Herramientas como los visores de PDF con funciones de regla o las utilidades de depuración pueden ayudar a identificar las coordenadas exactas. Como alternativa, utilice el método de ensayo y error con pequeños ajustes para refinar su área de selección.

Para una definición más precisa de las regiones, puede utilizar la función resaltar textos para depuración para visualizar las áreas que se están procesando.

¿Puedo especificar varias regiones en una sola operación?

Sí, IronOCR admite varias regiones en una sola operación de OCR. Simplemente añada varios objetos Rectangle a su matriz:

Rectangle[] scanRegions = { 
    new Rectangle(50, 50, 200, 100),    // Header region
    new Rectangle(50, 200, 500, 300),   // Main content region
    new Rectangle(50, 550, 200, 50)     // Footer region
};
Rectangle[] scanRegions = { 
    new Rectangle(50, 50, 200, 100),    // Header region
    new Rectangle(50, 200, 500, 300),   // Main content region
    new Rectangle(50, 550, 200, 50)     // Footer region
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cada región se procesará por separado y los resultados se combinarán en el orden especificado.

¿Por qué utilizar OCR específico de región en lugar de página completa?

El OCR específico por región ofrece varias ventajas:

  • Rendimiento: El procesamiento de áreas más pequeñas es significativamente más rápido
  • Precisión: Centrarse en regiones específicas reduce el ruido del contenido irrelevante
  • Estructura: Extraer datos de formularios y tablas de forma más fiable
  • Eficiencia de costes: Menos tiempo de procesamiento significa menores costes computacionales

Este enfoque es especialmente valioso cuando se trabaja con documentos estructurados como facturas, formularios o informes en los que los datos aparecen en lugares predecibles. Para estructuras de documentos complejas, explore lectura de tablas en documentos para conocer técnicas especializadas de extracción de tablas.

¿Qué funciones avanzadas de OCR de PDF están disponibles?

IronOCR ofrece funciones adicionales para el procesamiento de PDF que van más allá de la extracción básica de texto. Puede crear PDF con función de búsqueda a partir de documentos escaneados, conservando el diseño original y añadiendo una capa de texto para buscar y copiar. La biblioteca también es compatible con multithreading para un procesamiento más rápido de grandes colecciones de PDF.

Para los desarrolladores que deseen empezar a utilizar el OCR en sus aplicaciones .NET, la exploración de los ejemplos sencillos de OCR proporciona una base sólida para comprender las capacidades y las mejores prácticas de IronOCR.

Manejo de escenarios PDF complejos

Cuando se trata de documentos PDF complejos, IronOCR ofrece varias funciones avanzadas:

  1. Preprocesamiento de imágenes: Aplicar filtros de imagen para mejorar la claridad del texto
  2. Múltiples idiomas: Procese documentos que contengan múltiples idiomas simultáneamente
  3. Configuraciones personalizadas: Ajuste con precisión la configuración de OCR para tipos de documentos específicos
  4. Opciones de exportación: guarde los resultados en varios formatos, incluidos PDF con opción de búsqueda y hOCR HTML

Estas características hacen de IronOCR una solución completa para los requisitos de procesamiento de PDF a nivel empresarial.

Preguntas Frecuentes

¿Cómo puedo extraer texto de un archivo PDF en C#?

Puede extraer texto de archivos PDF utilizando IronOCR con sólo una línea de código. Basta con crear una instancia IronTesseract y utilizar el método Read con OcrPdfInput: `usando var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrPdfInput("document.pdf", PdfContents.TextAndImages));`. IronOCR maneja tanto PDFs escaneados (basados en imágenes) como PDFs con capacidad de búsqueda (basados en texto).

¿Qué versiones de PDF son compatibles con la extracción de texto?

IronOCR es compatible con todas las versiones de PDF, desde las especificaciones PDF 1.0 más antiguas hasta los estándares PDF 2.0 más recientes. El motor de OCR se basa en la tecnología Tesseract, lo que garantiza una extracción de texto precisa independientemente de la versión de PDF con la que se trabaje.

¿Puedo leer sólo determinadas páginas de un PDF en lugar de todo el documento?

Sí, IronOCR permite leer páginas específicas de un PDF proporcionando índices de páginas. En lugar de procesar todo el documento, puede especificar de qué páginas extraer texto utilizando el objeto OcrPdfInput, lo que hace que el proceso de OCR sea más eficiente para documentos de gran tamaño.

¿Cuál es el flujo de trabajo mínimo para el reconocimiento óptico de caracteres en un archivo PDF?

El flujo de trabajo mínimo con IronOCR consta de 5 pasos: 1) Descargar la librería C#, 2) Preparar el documento PDF, 3) Crear un objeto OcrPdfInput con la ruta del archivo PDF, 4) Usar el método Read para realizar el OCR, y 5) Opcionalmente especificar índices de páginas para una lectura selectiva.

¿Cuándo debo ajustar la configuración de PPP para el OCR de PDF?

Aunque la configuración de PPP predeterminada de IronOcr funciona bien para la mayoría de los PDF estándar, debería considerar ajustar los PPP cuando trabaje con documentos escaneados de baja resolución (por debajo de 200 PPP) o PDF que contengan texto pequeño. Una configuración de DPI más alta en la construcción OcrPdfInput puede mejorar significativamente la precisión de lectura para documentos especializados.

¿Funciona el motor de reconocimiento óptico de caracteres con PDF escaneados y con capacidad de búsqueda?

Sí, IronOCR procesa eficazmente tanto los PDF escaneados (basados en imágenes) como los PDF en los que se pueden realizar búsquedas (basados en texto). El motor basado en Tesseract maneja automáticamente diferentes tipos de PDF, lo que lo hace versátil para extraer texto de varios formatos de PDF sin necesidad de enfoques diferentes.

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
Revisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente Principal de Programas - Equipo de la Comunidad .NET
Jeff también es Gerente Principal de Programas para los equipos de .NET y Visual Studio. Es el productor ejecutivo de la serie de conferencias virtuales .NET Conf y anfitrión de 'Fritz and Friends', una transmisión en vivo para desarrolladores que se emite dos veces a la semana donde habla sobre tecnología y escribe código junto con la audiencia. Jeff escribe talleres, presentaciones, y planifica contenido para los eventos de desarrolladores más importantes de Microsoft, incluyendo Microsoft Build, Microsoft Ignite, .NET Conf y la Cumbre de Microsoft MVP.
¿Listo para empezar?
Nuget Descargas 5,246,844 | Versión: 2025.12 recién lanzado