2010-01-22 100 views
20

Bastante simple, necesito extraer texto de varios archivos PDF (bastante bastante) para analizar los contenidos antes de pegarlo en una base de datos SQL.Extraer texto de archivos PDF en C#

He encontrado algunas librerías de C# bastante escasas que funcionan (la mejor usa iTextSharp), pero hay muchos errores de formateo y algunos caracteres están codificados y muchas veces hay espacios ('') EN TODAS PARTES - Dentro de las palabras, entre cada letra, enormes bloques de ellos que ocupan varias líneas, todo parece un poco aleatorio.

¿Hay alguna manera fácil de hacer esto que estoy pasando por alto (bastante probable!) O es una tarea un poco ardua que implica la conversión de los valores de bytes extraídos en letras de manera confiable?

Saludos,

Duncan

+0

Véase también http://stackoverflow.com/q/10982156/292060 – goodeye

Respuesta

9

Usted puede echar un vistazo a this article. Se basa en la excelente biblioteca iTextSharp.

+0

Sí este es el uno que estaba usando, era bastante bueno aunque no increíblemente confiable. Sin embargo, al mirar la respuesta de Tarydon a continuación, se explica por qué, y en realidad ¡es probablemente lo mejor que voy a encontrar! Cheers –

+1

Aunque la biblioteca iTextSharp es una gran biblioteca, no es gratuita para fines comerciales. No olvide leer la letra pequeña https://sourceforge.net/p/itextsharp/itextsharp/ci/ed0d02ecca2a17b028b1f40b885efac41886b7ed/tree/src/notice.txt –

17

Puede haber alguna dificultad para hacer esto de manera confiable. El problema es que PDF es un formato de presentación que otorga importancia a la buena tipografía. Supongamos que solo desea generar una sola palabra: Toque.

Una representación en PDF fuerza del motor de salida de esto como 2 llamadas separadas, como se muestra en este pseudo-código:

moveto (x1, y); output ("T") 
moveto (x2, y); output ("ap") 

Esto se hace porque el defecto interletraje (inter-espacio entre letras) entre las letras T y a podrían no ser aceptables para el motor de renderizado, o podría estar agregando o eliminando un microespacio entre caracteres para obtener una línea completamente justificada. Lo que finalmente resulta es que los fragmentos de texto reales que se encuentran en PDF a menudo no son palabras completas, sino partes de ellos.

+1

Excelente descripción de las posibles dificultades para extraer texto de PDF. – Lunatik

1

Puede intentar Docotic.Pdf library (descargo de responsabilidad: yo trabajo para Bit Miracle) para extraer texto de archivos PDF. La biblioteca utiliza algunas heurísticas para extraer texto atractivo sin espacios indeseados entre letras y palabras.

Mire una muestra que muestra how to extract text from PDF.

2

Puede probar Toxy, un marco de extracción de texto/datos en .NET. En Toxy 1.0, se admitirá PDF. Para más detalles, visite http://toxy.codeplex.com

+0

-1 Esto no tiene nada que ver con los PDF (aún). También podría decirnos que visite http://www.websitethatplansonhavingcodetoextracttextfpdfsoneday.com –

+1

Dije que lo hará. De todos modos, lo verás pronto. Lo pondré disponible antes de junio. –

+1

Toxy 1.0 está aquí. Es compatible con PDF ahora –

0

Si está buscando una alternativa "gratuita", consulte PDF Clown. Personalmente, he usado el enfoque basado en iFilter, y parece funcionar bien en caso de que necesite soportar otros tipos de archivos fácilmente. Código de muestra here.

9

Tome un vistazo a Tika en DotNet, disponible a través de Nuget: https://www.nuget.org/packages/TikaOnDotnet.TextExtractor/

Esta es una envoltura alrededor de la muy buena biblioteca java Tika, utilizando IKVM. Muy fácil de usar y maneja una amplia variedad de tipos de archivos distintos de PDF, incluidos los formatos de oficina antiguos y nuevos.Será seleccionar automáticamente el programa de análisis basado en la extensión del archivo, por lo que es tan fácil como:

var text = new TextExtractor().Extract(file.FullName).Text; 
0

En caso de que se va a procesar archivos PDF con el propósito de importar datos en una base de datos, entonces le sugiero que considerar ByteScout PDF Extractor SDK. Algunas funciones útiles incluidas son

  • detección de tabla;
  • extracción de texto como CSV, XML o texto formateado (con la restauración de diseño opcional);
  • búsqueda de texto con soporte para expresiones regulares;
  • API de bajo nivel para acceder a objetos de texto

RENUNCIA: Yo estoy afiliado a ByteScout

Cuestiones relacionadas