Esta é uma tarefa difícil, não fácil de resolver. Se você realmente deseja um resultado exato, copie parágrafo por parágrafo do visualizador de PDF em um arquivo de texto e verifique-o com a wc -w
ferramenta. A razão pela qual não usar pdftotext
nesse caso é: fórmulas matemáticas também podem aparecer na saída e consideradas como "palavras". (Como alternativa, você pode editar a saída obtida pdftotext
). Outra razão pela qual isso pode falhar são os títulos: "4.3.2 Foo Bar" é contado como três palavras.
Uma maneira de contornar é apenas contar palavras que começam com um caractere de [A-Za-z]. Então, o que eu costumo fazer é uma abordagem em duas etapas:
obtenha a lista de palavras uniq e verifique se há muitos falsos positivos dentro:
pdftotext foo.pdf - | tr " " "\n" | sort | uniq | grep "^[A-Za-z]" > words
Não uso um dicionário aqui, pois alguns erros de ortografia não contam como palavras.
Obtenha esta lista de palavras e grep-a na saída de pdftotext:
pdftotext foo.pdf - | tr " " "\n" | grep -Ff words | wc -l
Sei que isso poderia ser feito em um único liner, mas não pude ver facilmente o resultado do filtro desde o primeiro passo. O -F
pode ajudá-lo como indicado pelo comentário de moi abaixo (obrigado).
pdftotext
: não esqueça o e. E você pode usar um único comando:pdftotext myfile.pdf - | wc -w
.