Tentando converter pdf em texto de graça

16

Estou usando o OSX e gostaria de poder converter arquivos PDF em texto.

Eu gostaria de um aplicativo gratuito para fazer isso, pois tenho certeza de que deve haver alguns.

Conceder
fonte
2
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?
Alan Shutko
Faz free-ocr.com ajuda?
Tim

Respostas:

13

Aqui estão as etapas que eu usei para instalar e usar o xpdf via Homebrew.

  1. Instale as dependências do Homebrew:

    xcode-select --install
    
  2. Instale o Homebrew no site:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  3. Faça o que for solicitado para concluir a instalação do Homebrew.

  4. Verifique se o Homebrew está feliz e funcionando conforme as especificações.

    brew doctor
    
  5. Em seguida, instale o xpdf e suas dependências:

    brew install Caskroom/cask/xquartz
    
    brew install xpdf
    
  6. 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.

Flash Sheridan
fonte
2
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/...
Jeroen Wiert Pluimers
6

Múltiplos métodos.

  1. Use documentos do Google (você precisará de uma conta do Google)

  2. Use o Automator (algum trabalho é necessário)

Você pode usar o Automator para criar um fluxo de trabalho que possa extrair texto de PDFs e salvá-lo como um documento de texto ou RTF.

extrair texto de pdf

ou um aplicativo da App Store, por exemplo, PDF para texto

Ruskes
fonte
4

xpdf que eu instalei com portas:

port install xpdf

contém:

xpdf-pdftotext

Ele faz o que você deseja para qualquer arquivo PDF proveniente de um arquivo de texto (e não de uma imagem):

xpdf-pdftotext PDF_file text_file
dan
fonte
1
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.

Wayfaring Stranger
fonte
1

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!

PS: Se você possui o Microsoft Word, poderá abrir seu PDF no Word

Brad Parks
fonte
1
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()
benwiggy
fonte
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!!
Jérémie