OCRs de PDFs no GNU/Linux: Estudando com textos e não prints

Quem nunca foi estudar para a faculdade com um PDF e descobriu que não conseguiria marcar o texto ou copiar e colar seu conteúdo?
Que aquele lindo PDF em vez de ser um agradável texto a ser anotado e copiado mais parecia um print em que somente poderíamos fazer riscos ao redor dignos de uma criança de 7 anos no Paint?

A solução para isso é gerar um novo PDF utilizando alguma tecnologia de reconhecimento óptico de caracteres (OCR: Optical Character Recognition).

A ferramenta atualmente mais fácil no GNU/Linux é o pdfsandwich (e é software livre!).
O mesmo é uma ferramenta voltada apenas para gerar PDFs com OCR a partir de outros PDFs.
Tecnicamente, o pdfsandwich na verdade é um script que depende de outras ferramentas que realmente interagem com o PDF.

Instalação

O Fedora atualmente não disponibiliza o pdfsandwich nos repositórios oficiais (mas o Debian sim!). A solução é ulilizarmos um repositório pessoal do COPR:

1
2
$ sudo dnf copr enable merlinm/pdfsandwich
$ sudo dnf install pdfsandwich

O tesseract é a ferramenta que o pdfsandwich utiliza para aplicar o OCR. O mesmo deve ser instalado automaticamente como dependência do pdfsandwich. Entretanto, devemos instalar dicionários adicionais para aumentar a eficiência do OCR. Instalemos pois, os dicionários para espanhol e português (inglês vem por padrão):

1
dnf install tesseract tesseract-langpack-por tesseract-langpack-spa

Ps: Embora o tesseract seja uma dependência do pdfsandwich, resolvi colocar seu pacote de forma redundante.

Utilizando a ferramenta

Simplesmente informe o document.pdf desejado e será gerado um document_ocr.pdf novo com OCR:

1
$ pdfsandwich document.pdf

Para aumentar a eficiência do OCR, convém informar a língua. Assim o tesseract utilizará o dicionário da língua em vez de tentar adivinhar apenas letras. O comando informando a língua portuguesa para o arquivo seria:

1
$ pdfsandwich -lang por document.pdf

Podemos inclusive informar múltiplas línguas para um mesmo documento. Vejamos o caso de um documento contendo inglês, português e espanhol:

1
$ pdfsandwich -lang eng+por+spa multilingual_document.pdf

Para listar os dicionários do tesseract que o pdfsandwich enxerga:

1
$ pdfsandwich -list_langs

Observações

  • As imagens das páginas do PDF são alteradas para aumentar a eficiência do OCR. Em geral, reparo que o contraste é bastante aumentado.
  • Os metadados do PDF são perdidos, mas podemos facilmente adicionar (veja em “Definindo metadados” aqui).
  • Como consta no site da ferramenta, caso o PDF gerado (document_ocr.pdf) fique muito maior que o original (document.pdf), execute novamente o pdfsandwich (sobre o document_ocr.pdf).

Mais informações