Esta es una tarea difícil, no fácil de resolver. Si realmente desea un resultado exacto, copie párrafo por párrafo para su visor de PDF en un archivo de texto y verifíquelo con la wc -w
herramienta. La razón por la que no se usa pdftotext
en ese caso es: las fórmulas matemáticas también pueden entrar en la salida y considerarse como "palabras". (Alternativamente, puede editar el resultado que obtiene pdftotext
). Otra razón por la que esto puede fallar son los encabezados: "4.3.2 Foo Bar" se cuenta como tres palabras.
Una forma de evitarlo es contar las palabras que comienzan con un carácter de [A-Za-z]. Entonces, lo que hago habitualmente es un enfoque de dos pasos:
obtenga la lista de palabras uniq y compruebe si hay demasiados falsos positivos en su interior:
pdftotext foo.pdf - | tr " " "\n" | sort | uniq | grep "^[A-Za-z]" > words
No uso un diccionario aquí, ya que algunos errores ortográficos no contarían como palabras.
Obtenga esta lista de palabras y grep dentro de la salida de pdftotext:
pdftotext foo.pdf - | tr " " "\n" | grep -Ff words | wc -l
Sé que esto podría hacerse dentro de una línea, pero no pude ver fácilmente el resultado del filtro desde el primer paso. El -F
puede ayudarle a como se indica por el comentario de moi a continuación (gracias).
pdftotext
: no olvides la e. Y se puede utilizar un solo comando:pdftotext myfile.pdf - | wc -w
.