Como extrair texto de um PDF? [fechado]

alguém pode recomendar uma biblioteca / API para extrair o texto e as imagens de um PDF? Precisamos ser capazes de obter o texto que está contido em regiões pré-conhecidas do documento, de modo que a API terá que nos dar informações posicionais de cada elemento na página.

gostaríamos que esses dados fossem dados no formato xml ou json. Estamos atualmente olhando para PdfTextStream que parece muito bom, mas gostaria de ouvir experiências de outras pessoas e sugestao.

Existem alternativas (comerciais ou gratuitas) para extrair texto de um pdf programaticamente?

Author: Jonathan, 2010-09-06

15 answers

Deram - me um ficheiro pdf de 400 páginas com uma tabela de dados que tive de importar-felizmente nenhuma imagem. Ghostscript trabalhou para mim:

gswin64c -sDEVICE=txtwrite -o output.txt input.pdf

O ficheiro de saída foi dividido em páginas com cabeçalhos, etc., mas foi então fácil escrever um aplicativo para remover linhas em branco, etc, e sugar em todos os 30.000 registros. -dSIMPLE e -dCOMPLEX não fizeram diferença neste caso.

 80
Author: user2176753, 2016-09-12 14:58:02

Desde hoje que sei: a melhor coisa para a extracção de texto a partir de PDFs é TET, a caixa de ferramentas de extracção de texto. O TET faz parte da PDFlib.com família de produtos.

PDFlib.com é a empresa do Thomas Merz. No caso de você não reconhecer seu nome: Thomas Merz é o autor da "Bíblia PostScript e PDF".

A primeira encarnação de TET é uma biblioteca. Que se pode provavelmente fazer tudo o que Budda006 queria, incluindo posicional informações sobre cada elemento da página. E também pode extrair imagens. Recombina imagens que são fragmentadas em pedaços.

Pdflib.com também oferece outra encarnação desta tecnologia, o TET plugin do Acrobat. E a terceira encarnação é a PDFlib TET iFilter. Esta é uma ferramenta autônoma para os desktops do Usuário. Ambos são gratuitos (como na cerveja) para uso privado, não-comercial.

E é muito poderoso. Forma melhor do que a extracção de texto do Adobe. Ele extraía texto para mim, onde Outras ferramentas (incluindo a do Adobe) só cuspiam lixo.

Acabei de testar a ferramenta 'desktop standalone', e o que dizem na sua página web é verdade. Tem uma linha de comando muito boa. Alguns dos meus "problemáticos" arquivos de teste PDF a ferramenta manuseada para minha satisfação total.

A partir de agora, esta coisa será a minha recomendação para todos os requisitos sofisticados e desafiadores de extração de texto PDF.

TET is simplesmente incrível. Detecta mesas. Dentro das tabelas, identifica células que abrangem várias colunas. Identifica as linhas da tabela e o conteúdo de cada célula da tabela separadamente. Lida muito bem com hífenações: remove hífens e restaura palavras completas. Ele suporta línguas não-ASCII (incluindo CJK, árabe e hebraico). Ao encontrar ligaduras, restaura os personagens originais...

Experimenta.
 32
Author: Kurt Pfeifle, 2010-09-15 23:25:40

Uma ferramenta eficiente de linha de comandos, open source, livre de qualquer taxa, Disponível em ambos linux & windows : simplesmente chamado pdftotext. Esta ferramenta faz parte da biblioteca xpdf.

Http://en.wikipedia.org/wiki/Pdftotext

 21
Author: 131, 2016-07-29 06:47:13

Para python, existe PDFMiner e pyPDF2. Para mais informações sobre estes, veja o Módulo Python para converter PDF para text .

 21
Author: Jonathan, 2017-05-23 10:31:34
Eis a minha sugestão. Se você quiser extrair texto do PDF, você pode importar o arquivo pdf para o Google Docs, em seguida, exportá-lo para um formato mais amigável, como .galeria, .odf .rtf,.txt, etc. Tudo isto usando a API Drive. É livre e robusto. Dê uma olhada em:

Https://developers.google.com/drive/v2/reference/files/insert https://developers.google.com/drive/v2/reference/files/get

Porque é uma API de descanso, é compatível com toda a programação idioma. Os links que eu postei aboove têm exemplos de trabalho para muitas linguagens, incluindo: Java,. net, Python, PHP, Ruby, e outros.

Espero que ajude.
 8
Author: user2070775, 2013-12-10 17:02:42

PdfTextStream (que você disse que estava olhando) é agora livre para aplicações de simples threaded. Na minha opinião, a sua qualidade é muito melhor do que as outras bibliotecas (esp. para coisas como fontes embutidas funky, etc).

Em alternativa, deve dar uma vista de olhos a Apache PDFBox, open source.

 7
Author: Renaud, 2012-09-16 20:22:47

Docótico.Pdf library may be used to extract text from PDF files as plain text or as a collection of text chunks with coordinates for each chunk.

Docótico.Pdf can be used to extract images from PDFs , too. Disclaimer: eu trabalho para Bit Miracle.
 6
Author: Bobrovsky, 2012-05-17 06:12:49
Um dos comentários aqui usou gs no Windows. Eu também tive algum sucesso com isso no Linux / OSX, com a seguinte sintaxe:
gs \
 -q \
 -dNODISPLAY \
 -dSAFER \
 -dDELAYBIND \
 -dWRITESYSTEMDICT \
 -dSIMPLE \
 -f ps2ascii.ps \
 "${input}" \
 -dQUIET \
 -c quit

Usei dSIMPLE em vez de dCOMPLEX porque este último produz 1 carácter por linha.

 6
Author: kvz, 2015-06-15 10:59:09

Declaração de exoneração de Responsabilidade: trabalho para a ByteScout

Como a questão é especificamente sobre alternativas de ferramentas para obter dados a partir de PDF como XML, então você pode estar interessado em dar uma olhada na ferramenta comercial "ByteScout PDF Extrator SDK" que é capaz de fazer exatamente isto: extrair texto de PDF como XML, juntamente com os dados de posicionamento (x,y) e a fonte de informação:

Texto na fonte PDF:

Products | Units | Price 

Saída XML:

 <row>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="212" y="126" width="47" height="11">Products</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="428" y="126" width="27" height="11">Units</text> 
  </column>
 <column>
  <text fontName="Arial" fontSize="11.0" fontStyle="Bold" x="503" y="126" width="26" height="11">Price</text> 
  </column>
</row>
P. S.: além disso, ele também quebra o texto em uma estrutura baseada em tabela.
 4
Author: Eugene M, 2015-02-11 08:14:47

Para a extracção de imagens, o pdfimages é uma ferramenta de linha de comandos Livre Para Linux ou Windows (win32):

Pdfimages: extrair e gravar imagens de um ficheiro Portable Document Format ( PDF )

 2
Author: Sun, 2013-02-18 22:45:15

O Apache pdfbox tem esta funcionalidade - a parte do texto está descrita em:

Http://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripper.html

Por exemplo, implementação, ver https://github.com/WolfgangFahl/pdfindexer

O testcase TestPdfIndexer.testExtracting mostra como funciona

 2
Author: Wolfgang Fahl, 2014-03-07 15:21:10

A melhor coisa que consigo pensar de momento (dentro da lista de ferramentas "simples") é Ghostscript (a versão actual é v. 8.71) e o programa utilitário PostScript ps2ascii.ps. O Ghostscript envia - o na sua sub-pasta lib. Tente isto (no Windows):

gswin32c.exe ^
   -q ^
   -sFONTPATH=c:/windows/fonts ^
   -dNODISPLAY ^
   -dSAFER ^
   -dDELAYBIND ^
   -dWRITESYSTEMDICT ^
   -dCOMPLEX ^
   -f ps2ascii.ps ^
   -dFirstPage=3 ^
   -dLastPage=7 ^
   input.pdf ^
   -dQUIET ^
   -c quit

Este comando processa páginas 3-7 de input.pdf. Leia os comentários no Arquivo ps2ascii.ps para ver o que significam os números "estranhos" e informações adicionais (Eles indicam strings, posições, larguras, cores, imagens, retângulos, fontes e quebras de página...). Para obter uma saída de texto" simples", substitua a parte -dCOMPLEX por -dSIMPLE.

 1
Author: Kurt Pfeifle, 2010-09-07 00:13:57
A QuickPDF parece ser uma biblioteca razoável que deve fazer o que quiser por um preço razoável.

Http://www.quickpdflibrary.com eles têm um julgamento de 30 dias.

 1
Author: Andrew Cash, 2010-09-07 14:46:53
Eu sei que este tópico é bastante antigo, mas esta necessidade ainda está viva. Eu li muitos documentos, fórum e script e construir um novo avançado que suporta PDF comprimido e descompactado:

Https://gist.github.com/smalot/6183152

Em alguns casos, a linha de comando é proibida por razões de segurança. Assim, uma classe PHP nativa pode atender a muitas necessidades. Espero que ajude o everone.
 1
Author: Sebastien Malot, 2013-08-08 10:04:49
Nos meus sistemas Macintosh, acho que o" leitor de Adobe " faz um trabalho razoavelmente bom. Eu criei um pseudônimo no meu Desktop que aponta para o " leitor de Adobe.app", e tudo que eu faço é deixar um arquivo pdf no alias, o que faz dele o documento ativo no leitor Adobe, e, em seguida, a partir do menu Arquivo, eu escolho "Salvar como texto...", dê-lhe um nome e onde guardá-lo, clique em" Salvar", e estou feito.
 -1
Author: Dick Guertin, 2015-01-12 05:24:29