Blog Linux Avante

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

Comandos para usar no terminal

sudo apt install calibre

Fedora

Comandos para usar no terminal

sudo dnf install calibre

openSUSE

Comandos para usar no terminal

sudo zypper install calibre

Arch Linux

Comandos para usar no terminal

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

Comandos para usar no terminal

sudo apt install poppler-utils

Fedora

Comandos para usar no terminal

sudo dnf install poppler-utils

openSUSE

Comandos para usar no terminal

sudo zypper install poppler-tools

Arch Linux

Comandos para usar no terminal

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:

Comandos para usar no terminal

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:

Comandos para usar no terminal

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:

Comandos para usar no terminal

pdftotext -layout -eol unix input.pdf

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

Comandos para usar no terminal

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:

Comandos para usar no terminal

for file in *.pdf; do pdftotext -layout "$file"; done

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

Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.