Extraer texto de PDF mediante OCR en C#

Descripción general

La extracción de texto habitual lee la capa de texto de un documento PDF. Cuando una página es una imagen escaneada o no tiene texto seleccionable, clases como TextFragmentAbsorber no devuelven nada, porque no hay texto que leer.

Para estos casos, Aspose.PDF for .NET proporciona la clase OcrTextAbsorber (espacio de nombres Aspose.Pdf.Ocr). Reconoce texto sin formato en las páginas de cualquier documento PDF mediante OCR (reconocimiento óptico de caracteres) y lo devuelve como una cadena. Sigue el patrón estándar de Aspose.PDF absorber/visitor, por lo que se conecta a los mismos puntos de entrada Accept que los demás absorbers.

Reconocer texto en una sola página de PDF

Cree un OcrTextAbsorber, llame al método Accept de la página y lea el resultado de la propiedad Text. La llamada absorber.Visit(page) es un equivalente directo de page.Accept(absorber).

Reconocer texto en todo el documento PDF

Llame al método Accept de la colección Pages para reconocer todas las páginas. El texto reconocido de cada página se une mediante el separador de páginas de las opciones.

Configurar las opciones de reconocimiento

El reconocimiento se configura con un objeto OcrTextRecognitionOptions que se pasa al constructor. Las mismas opciones también están disponibles después de la creación a través de la propiedad Options del absorber, y cambiarlas afecta a la siguiente llamada de reconocimiento.

Miembro Predeterminado Significado Validación
Language OcrLanguage.English Idioma de reconocimiento.
Resolution 300 Resolución de reconocimiento, en DPI. Rango práctico ~200–600. Los valores más altos consumen más memoria/CPU con poca mejora de precisión. Lanza ArgumentOutOfRangeException si <= 0.
PageSeparator "\n\n" Se inserta entre el texto reconocido de páginas consecutivas (no antes de la primera página). string.Empty concatena las páginas sin separación. Lanza ArgumentNullException si se establece en null.

Detección automática del idioma

Cuando se desconoce el idioma del documento, asigne a Language el valor OcrLanguage.Auto para detectarlo automáticamente. El idioma de reconocimiento se selecciona con la enumeración OcrLanguage, que admite inglés (predeterminado), árabe, chino, francés, alemán, indonesio, italiano, japonés, kazajo, coreano, polaco, portugués, ruso, español, ucraniano y Auto.

Cómo se devuelven los resultados del reconocimiento

  • Text se reemplaza, no se acumula. Cada llamada Accept/Visit sobrescribe Text con el resultado de esa llamada; léalo después de cada llamada para conservar varios resultados. Es string.Empty antes de la primera llamada y para un documento sin páginas.
  • Unión de varias páginas. El texto de cada página se concatena con Options.PageSeparator (predeterminado "\n\n"); no se añade separador antes de la primera página. string.Empty une las páginas sin separación.
  • Resolución. 300 DPI es el valor predeterminado y el punto óptimo práctico; ~200–600 es el rango útil.