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 | $ sudo dnf copr enable merlinm/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 odocument_ocr.pdf
).
Mais informações
- pdfsandwich: Site oficial.
- 4 cool new projects to try in COPR for October 2018 - Fedora Magazine: Informação sobre o repositório COPR para o Fedora.