Qual é a maneira mais fácil de extrair dados de um PDF?

9

Eu preciso extrair dados de alguns documentos PDF (usando Java). Eu preciso saber qual seria a maneira mais fácil de fazer isso.

Eu tentei o iText. É bastante complicado para minhas necessidades. Além disso, eu acho que não está disponível gratuitamente para projetos comerciais. Então não é uma opção. Também experimentei o PDFBox e corri para vários erros NoClassDefFoundError .

Eu pesquisei e encontrei várias outras opções, como o PDF Clown, jPod, mas não tenho tempo para experimentar todas essas bibliotecas. Eu estou contando com a experiência da comunidade com leitura de PDF através de Java.

Observe que não preciso criar ou manipular documentos PDF. Eu só preciso extrair dados textuais de documentos PDF com complexidade de layout de nível moderado.

Por favor, sugira a maneira mais rápida e fácil de extrair texto de documentos PDF. Obrigado.

    
por Sebastian Fork 26.07.2011 в 16:37
fonte

4 respostas

3

Eu recomendo testar o Apache Tika . O Apache Tika é basicamente um kit de ferramentas que extrai dados de muitos tipos de documentos, incluindo PDFs.

Os benefícios do Tika (além de serem livres), é que é usado para ser um subprojeto do Apache Lucene, que é um mecanismo de busca de código aberto muito robusto. O Tika inclui um analisador PDF integrado que usa um manipulador de conteúdo SAX para passar dados PDF para seu aplicativo. Ele também pode extrair dados de PDFs criptografados e permite criar ou criar subclasses de um analisador existente para personalizar o comportamento.

O código é simples. Para extrair os dados de um PDF, tudo o que você precisa fazer é criar uma classe Parser que implemente a interface Parser e defina um 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();
}

Então, para executar o analisador, você pode fazer algo assim:

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());
    
por Kyle 26.07.2011 / 17:51
fonte
2

Estou usando o JPedal e estou muito feliz com os resultados. Não é gratuito, mas é de alta qualidade e a saída para a geração de imagens a partir de PDFs ou extração de texto é muito boa.

E como uma biblioteca paga, o suporte está sempre disponível para responder.

    
por Maurício Linhares 26.07.2011 / 16:40
fonte
2

Eu usei o PDFBox para extrair texto para indexação do Lucene sem muitos problemas. Seu erro / aviso de log é bastante detalhado se eu me lembro direito - qual foi a causa dos erros que você recebeu?

    
por Petteri Hietavirta 26.07.2011 / 16:44
fonte
0

Eu entendo que este post é bem antigo, mas eu recomendaria usar o seguinte aqui: link Se você estiver usando maven, você pode puxar os potes do maven central: link

Não consigo entender como é difícil usá-lo:

    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");
    
por testing123 15.10.2014 / 22:04
fonte