Como converter PDF em texto no Linux (GUI e linha de comando)

22 de maio de 2019

Este artigo apresenta 2 ferramentas para converter documentos PDF em texto editável no Linux, usando uma ferramenta gráfica (Calibre) e uma ferramenta de linha de comando (pdftotext).

É importante notar que as duas ferramentas usadas para extrair texto de arquivos PDF mencionados neste artigo não podem extrair o texto se o PDF for feito de imagens (por exemplo, páginas/imagens de livros digitalizados).

Converta PDF em texto usando Calibre (GUI)

Calibre é um pacote de software de e-book gratuito e de código aberto. Ele oferece suporte à organização, exibição, edição e conversão de e-books, suportando uma ampla variedade de formatos. O aplicativo é executado em Linux, macOS e Microsoft Windows.

O Calibre deve estar disponível nos repositórios de sua distribuição Linux e você deve ser capaz de instalá-lo usando qualquer loja de software que tenha em seu sistema. Por exemplo, para instalá-lo no Debian, Ubuntu, Linux Mint, Fedora, openSUSE ou Arch Linux, use:

Debian, Ubuntu ou Linux Mint

{{ terminalcard('sudo apt install calibre') }}

Fedora

{{ terminalcard('sudo dnf install calibre') }}

openSUSE

{{ terminalcard('sudo zypper install calibre') }}

Arch Linux

{{ terminalcard('sudo pacman -S calibre') }}

O Calibre também pode ser instalado no Linux usando o pacote Flathub (requer configuração do Flathub/Flatpak em algumas distribuições do Linux).

Existe ainda outra maneira de instalar o Calibre no Linux explicada na [página de downloads] do aplicativo (https://calibre-ebook.com/download), onde você também encontrará binários do macOS e do Windows.

Agora que o Calibre está instalado em seu sistema, inicie-o e clique em Add books para adicionar o PDF (ou vários PDFs - o Caliber suporta a conversão em lote de vários arquivos PDF em texto) que deseja converter em texto.

Na lista de livros, selecione o PDF (ou vários PDFs para conversão em lote para .txt) que deseja converter em texto e clique no botão Convert books. No lado superior direito da janela de conversão, escolha TXT como o Output format:

Calibre converter PDF em texto

Existem muitas opções que você pode ajustar nesta caixa de diálogo de conversão. Por exemplo, você pode escolher remover automaticamente o espaçamento entre parágrafos ou inserir uma linha em branco entre os parágrafos (Look & Feel -> Layout). Você também pode definir a codificação de caracteres e o estilo de finalização de linha (sistema, unix, windows, old_mac) e até mesmo formatá-lo para markdown.

Depois de concluir a configuração, clique no botão OK para iniciar a conversão do PDF em texto. O arquivo .txt convertido pode ser encontrado no diretório onde você definiu a localização da biblioteca do Caliber (e, em seguida, nas subpastas AuthorName/BookName; se o autor ou nome do livro não puder ser determinado, a subpasta é chamada de "Desconhecido").

O que falta ao Calibre neste caso é uma maneira de converter apenas uma página ou intervalo de páginas - atualmente, ele só pode converter arquivos PDF inteiros em texto.

Converta PDF em texto com pdftotext (linha de comando)

pdftotext é um utilitário de linha de comando que converte arquivos PDF em texto simples. Ele tem muitas opções, incluindo a capacidade de especificar o intervalo de páginas a ser convertido, manter o layout físico original do texto da melhor maneira possível, definir terminações de linha (unix, dos ou mac) e até mesmo trabalhar com arquivos PDF protegidos por senha.

pdftotextis parte do pacote poppler/poppler-utils/poppler-tools (dependendo da distribuição Linux que você está usando). Instale este pacote da seguinte maneira:

Debian, Ubuntu, Linux Mint e outras distribuições Linux baseadas em Debian/Ubuntu

{{ terminalcard('sudo apt install poppler-utils') }}

Fedora

{{ terminalcard('sudo dnf install poppler-utils') }}

openSUSE

{{ terminalcard('sudo zypper install poppler-tools') }}

Arch Linux

{{ terminalcard('sudo pacman -S poppler') }}

Em outras distribuições do Linux, use o gerenciador de pacotes para instalar o pacote poppler/poppler-utils.

Agora que o pacote está instalado, você pode converter um arquivo PDF em texto simples e preservar seu layout (eu recomendo usar esta opção -layout para manter o layout físico original, mas você também pode tentar sem ela) com:

{{ terminalcard('pdftotext -layout input.pdf output.txt') }}

Você precisará substituir input.pdf pelo nome do arquivo PDF e output.txt pelo nome que deseja que o arquivo TXT gerado seja chamado. Adicione também os caminhos antes dos nomes dos arquivos, se necessário (por exemplo, ~/Documents/mypdf.pdf). Se nenhum arquivo de texto de saída for especificado, pdftotext nomeará o arquivo com o mesmo nome do arquivo PDF original.

A opção de layout preserva o layout do PDF ao convertê-lo em texto, mesmo em casos de PDF com várias colunas.

E se você quiser converter apenas um intervalo de páginas do PDF em texto, em vez de todo o arquivo PDF? Use -f (primeira página a ser convertida) e -l (última página a ser convertida) seguido pelo número da página, como esta:

{{ terminalcard('pdftotext -layout -f M -l N input.pdf') }}

Substitua M e N pelo número da primeira e última página a extrair e input.pdf pelo nome do arquivo PDF.

Deseja usar caracteres de fim de linha mac, dos ou unix? Você também pode especificar isso usando -eol seguido por mac, dos ou unix. Por exemplo, para terminações de linha unix:

{{ terminalcard('pdftotext -layout -eol unix input.pdf') }}

Se você não deseja inserir quebras de página entre as páginas, anexe -nopgbrk:

{{ terminalcard('pdftotext -layout nopgbrk input.pdf') }}

Deseja converter em lote todos os arquivos PDF de uma pasta para arquivos de texto? O pdftotext não oferece suporte à conversão em lote de PDF em texto (e pdftotext *.pdf não funciona), mas você pode converter todos os arquivos PDF em uma pasta em texto arquivos usando um loop Bash FOR:

{{ terminalcard('for file in *.pdf; do pdftotext -layout "$file"; done') }}

Para mais opções, execute man pdftotext e pdftotext --help.

Esse post foi traduzido do site LinuxUprising.com pela rtland.team.

Linux Uprising Blog

Confira a versão original desse post em inglês:

How To Convert PDF To Text On Linux (GUI And Command Line)
Propaganda
Propaganda