2011-07-26 26 views
9

Necesito extraer datos de algunos documentos PDF (usando Java). Necesito saber cuál sería la forma más fácil de hacerlo.¿Cuál es la forma más fácil de extraer datos de un PDF?

He intentado iText. Es bastante complicado para mis necesidades. Además, supongo que no está disponible de forma gratuita para proyectos comerciales. Entonces no es una opción. También probé con PDFBox y encontré varios errores NoClassDefFoundError.

Busqué en Google y encontré varias otras opciones como PDF Clown, jPod, pero no tengo tiempo para experimentar con todas estas bibliotecas. Confío en la experiencia de la comunidad con la lectura de PDF a través de Java.

Tenga en cuenta que no necesito crear o manipular documentos PDF. Solo necesito extraer datos textuales de documentos PDF con una complejidad de diseño de nivel moderado.

Por favor, sugiera la forma más rápida y sencilla de extraer texto de documentos PDF. Gracias.

Respuesta

2

Estoy usando JPedal y estoy muy contento con los resultados. No es gratis, pero es de alta calidad y la salida para generación de imágenes desde pdfs o extracción de texto es realmente agradable.

Y como una biblioteca paga, el soporte siempre está ahí para responder.

+0

Gracias @Mauricio, pero desafortunadamente la biblioteca tiene que ser libre. :-( –

+0

Créanme, probé muchas de las bibliotecas gratuitas y ni siquiera están cerca del rendimiento y las opciones de JPedal. Creo que la licencia es algo así como U $ 800, por lo que es bastante barato para la funcionalidad que ' Si realmente lo necesita, debe pedirle a su compañía que obtenga algo que funcione lo mejor posible. –

1

He usado PDFBox para extraer texto para la indexación de Lucene sin demasiados problemas. Su registro de error/advertencia es bastante detallado si mal no recuerdo: ¿cuál fue la causa de los errores que recibió?

+0

Para 'Lucene', mi IDE dijo que la clase no está disponible.De hecho, todo el paquete 'searchengine' no estaba disponible. (Descargué la última versión de PDFBox del sitio Apache). –

+0

Luego probé con 'PDFParser'. Y este es el error que obtuve: 'Exception in thread" main "java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory \t en org.apache.pdfbox.pdfparser.BaseParser. (BaseParser.java:58) ' –

+0

http://pdfbox.apache.org/dependencies.html –

2

Recomiendo probar Apache Tika. Apache Tika es básicamente un conjunto de herramientas que extrae datos de muchos tipos de documentos, incluidos archivos PDF.

Las ventajas de Tika (además de ser gratuito), es que se utiliza para ser un subproyecto de Apache Lucene, que es un motor de búsqueda de código abierto muy robusto. Tika incluye un analizador de PDF integrado que utiliza un controlador de contenido SAX para pasar datos PDF a su aplicación. También puede extraer datos de archivos PDF cifrados y le permite crear o crear una subclase de un analizador existente para personalizar el comportamiento.

El código es simple. Para extraer los datos de un archivo PDF, todo lo que tiene que hacer es crear una clase de filtros que implementa la interfaz del Analizador y definir un método parse():

public void parse(
    InputStream stream, ContentHandler handler, 
    Metadata metadata, ParseContext context) 
    throws IOException, SAXException, TikaException { 

    metadata.set(Metadata.CONTENT_TYPE, HELLO_MIME_TYPE); 
    metadata.set("Hello", "World"); 

    XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata); 
    xhtml.startDocument(); 
    xhtml.endDocument(); 
} 

Entonces, para ejecutar el programa de análisis, se podría hacer algo como esto:

InputStream input = new FileInputStream(new File(resourceLocation)); 
ContentHandler textHandler = new BodyContentHandler(); 
Metadata metadata = new Metadata(); 
PDFParser parser = new PDFParser(); 
parser.parse(input, textHandler, metadata); 
input.close(); 
out.println("Title: " + metadata.get("title")); 
out.println("Author: " + metadata.get("Author")); 
out.println("content: " + textHandler.toString()); 
0

entiendo este post es bastante viejo, pero yo recomendaría el uso de itext desde aquí: http://sourceforge.net/projects/itext/ Si está utilizando Maven se puede tirar los frascos en el centro de la experta: http://mvnrepository.com/artifact/com.itextpdf/itextpdf

no puedo entender cómo usarlo puede ser difícil

PdfReader pdf = new PdfReader("path to your pdf file"); 
    PdfTextExtractor parser = new PdfTextExtractor(); 
    String output = parser.getTextFromPage(pdf, pageNumber); 
    assert output.contains("whatever you want to validate on that page"); 
Cuestiones relacionadas