Você deseja extrair texto de PDFs que já contêm texto? (ou seja, você pode copiar e colar partes delas). Ou você deseja reconhecer o texto que está no conteúdo da imagem?
Por fim, use pdftotext, um pacote que vem com o pacote xpdf:
pdftotext Some_Document.pdf Some_Document.txt
O primeiro nome do arquivo é um PDF existente; o segundo é o destino. Os resultados foram muito melhores do que com uma versão (reconhecidamente antiga) do Adobe Acrobat. Edit: Novas versões (2019) do Adobe Acrobat mostraram resultados igualmente ruins.
Eu acho que xquartznão é necessário para as ferramentas do console xpdf. Além disso, há a popplerbifurcação do xpdfque parece muito mais ativamente mantido: github.com/scraperwiki/scraperwiki-python/issues/...
O comando, pelo menos como instalado pelo HomeBrew, é apenas "pdftotext".
Flash Sheridan
@FlashSheridan Posso encorajar você a postar uma resposta que cubra "pdftotext" e como instalá-la via homebrew? Os comentários podem ser excluídos a qualquer momento (e também não aparecem nas pesquisas).
nohillside
4
A versão atual do Adobe Reader (11.0.09) possui um item "Salvar como outro" no menu Arquivo.
Uma das opções é texto .
O aplicativo é gratuito e faz um trabalho decente produzindo arquivos de texto. Todas as imagens no novo documento serão perdidas no formato .txt.
Eu acho que você deve ser capaz de copiar e colar o texto em outro documento. Para selecionar todo o texto
Abra o PDF em "Visualizar" e
escolha "Editar | Selecionar tudo"
escolha "Editar | Copiar"
Vá para outro aplicativo, diga "Edição de texto"
escolha "Editar | Colar"
Observe que, se você tentar fazer isso, e não houver texto colado, apenas um monte de linhas em branco, tente imprimir primeiro o PDF em um novo PDF, por exemplo,
Na visualização, escolha "Arquivo | Imprimir"
No canto inferior direito, escolha "PDF | Salvar como PDF"
Isso exporta um novo PDF.
Agora tente o processo acima com este novo PDF. Trabalhou para mim!
Embora isso deva funcionar quando o documento PDF realmente contém conteúdo de texto , ele não mantém a formatação e, em alguns casos, produz texto ilegível junto com o que seria considerado texto desejado. Observe que isso também pode ser o mesmo com outros métodos, mas achei importante ressaltar.
user3439894
sem dúvida - não é perfeito, com certeza, e eu concordo totalmente com tudo o que você disse. Eu só adicioná-lo aqui como uma opção Tenho notado antes, que trabalhou para mim sem instalar nada em tudo ;-)
Brad Parks
Também concordo que ele funcione na maioria dos casos, mas os números de página, os detalhes do rodapé que não estão relacionados ao documento e, pior ainda: ROLAR INFINITO em documentos grandes, fazem desta uma solução insatisfatória. Se fosse menos de 5 páginas, eu consideraria isso, mas, como a maioria das tabelas de que preciso são de PDFs de sites de pesquisa que se recusam a citar o Excel ou o SQL, essa opção nem é funcional.
Tmanok 27/02/19
Acordado! não é uma opção viável para o seu caso de uso
Brad Parks
1
O seguinte script python produzirá o texto de um documento PDF para um arquivo .txt. (Observação: não há garantia de que o texto esteja necessariamente em ordem legível humana 'lógica', devido à maneira como os dados são mantidos no formato PDF.)
O script criará arquivos de texto para qualquer arquivo PDF fornecido como argumento na linha de comando (por exemplo pdf2txt.py myPDF.pdf), ou você pode usar a ação "Executar script de shell" do Automator, configurando o tipo de shell para python e Passar a entrada para "Como argumentos" . Em seguida, você pode usá-lo como uma Ação rápida ou DropApp.
#!/usr/bin/python
# coding: utf-8
import os, sys
from Quartz import PDFDocument
from CoreFoundation import (NSURL, NSString)
NSUTF8StringEncoding = 4
def pdf2txt():
for filename in sys.argv[1:]:
inputfile =filename.decode('utf-8')
shortName = os.path.splitext(filename)[0]
outputfile = shortName+" text.txt"
pdfURL = NSURL.fileURLWithPath_(inputfile)
pdfDoc = PDFDocument.alloc().initWithURL_(pdfURL)
if pdfDoc :
pdfString = NSString.stringWithString_(pdfDoc.string())
pdfString.writeToFile_atomically_encoding_error_(outputfile, True, NSUTF8StringEncoding, None)
if __name__ == "__main__":
pdf2txt()
Isso funciona imediatamente (ou seja, - não é necessário instalar nenhuma biblioteca python ou algo assim!) - É apenas um despejo de texto bruto, mas às vezes é isso que você precisa - observe que o arquivo é salvo no diretório atual (se estiver sendo executado no diretório linha de comando) e não sai para stdout
Brad Parks
@BradParks Ele deve ser salvo na mesma pasta que o arquivo de entrada: ele pega o caminho do arquivo a partir dos argumentos do comando. Como você está fornecendo isso?
benwiggy
ahh ... eu estava na mesma pasta, então nunca notei isso - minha única intenção real era dizer que ele não chega ao stdout e que funciona! obrigado!
Brad Parks
1
Substitua as duas linhas após a if pdfDocdeclaração por print(pdfDoc.string()).
benwiggy
Oh uau, esta é literalmente a primeira vez que a distribuição Apple Python acaba sendo útil para alguma coisa !! Obrigado pela resposta!!
Respostas:
Aqui estão as etapas que eu usei para instalar e usar o xpdf via Homebrew.
Instale as dependências do Homebrew:
Instale o Homebrew no site:
Faça o que for solicitado para concluir a instalação do Homebrew.
Verifique se o Homebrew está feliz e funcionando conforme as especificações.
Em seguida, instale o xpdf e suas dependências:
Por fim, use pdftotext, um pacote que vem com o pacote xpdf:
O primeiro nome do arquivo é um PDF existente; o segundo é o destino. Os resultados foram muito melhores do que com uma versão (reconhecidamente antiga) do Adobe Acrobat. Edit: Novas versões (2019) do Adobe Acrobat mostraram resultados igualmente ruins.
fonte
xquartz
não é necessário para as ferramentas do consolexpdf
. Além disso, há apoppler
bifurcação doxpdf
que parece muito mais ativamente mantido: github.com/scraperwiki/scraperwiki-python/issues/...Múltiplos métodos.
Use documentos do Google (você precisará de uma conta do Google)
Use o Automator (algum trabalho é necessário)
ou um aplicativo da App Store, por exemplo, PDF para texto
fonte
xpdf
que eu instalei com portas:contém:
Ele faz o que você deseja para qualquer arquivo PDF proveniente de um arquivo de texto (e não de uma imagem):
fonte
A versão atual do Adobe Reader (11.0.09) possui um item "Salvar como outro" no menu Arquivo.
Uma das opções é texto .
O aplicativo é gratuito e faz um trabalho decente produzindo arquivos de texto. Todas as imagens no novo documento serão perdidas no formato .txt.
fonte
Eu acho que você deve ser capaz de copiar e colar o texto em outro documento. Para selecionar todo o texto
Abra o PDF em "Visualizar" e
Vá para outro aplicativo, diga "Edição de texto"
Observe que, se você tentar fazer isso, e não houver texto colado, apenas um monte de linhas em branco, tente imprimir primeiro o PDF em um novo PDF, por exemplo,
Agora tente o processo acima com este novo PDF. Trabalhou para mim!
PS: Se você possui o Microsoft Word, poderá abrir seu PDF no Word
fonte
O seguinte script python produzirá o texto de um documento PDF para um arquivo .txt. (Observação: não há garantia de que o texto esteja necessariamente em ordem legível humana 'lógica', devido à maneira como os dados são mantidos no formato PDF.)
O script criará arquivos de texto para qualquer arquivo PDF fornecido como argumento na linha de comando (por exemplo
pdf2txt.py myPDF.pdf
), ou você pode usar a ação "Executar script de shell" do Automator, configurando o tipo de shell para python e Passar a entrada para "Como argumentos" . Em seguida, você pode usá-lo como uma Ação rápida ou DropApp.fonte
if pdfDoc
declaração porprint(pdfDoc.string())
.