Ceci est une tâche difficile et pas facile à résoudre. Si vous voulez vraiment un résultat exact, copiez paragraphe par paragraphe dans votre visualiseur de PDF dans un fichier texte et vérifiez-le avec l'outil wc -w
. La raison pour ne pas utiliser pdftotext
dans ce cas est que les formules mathématiques peuvent également figurer dans la sortie et être considérées comme des "mots". (Alternativement, vous pourriez modifier la sortie que vous obtenez de pdftotext
). Une autre raison pour laquelle cela pourrait échouer sont les titres : "4.3.2 Foo Bar" est compté comme trois mots.
Une solution consiste à ne compter que les mots commençant par un caractère de [A-Za-z]. Donc ce que je fais habituellement est une approche en deux étapes :
-
obtenez la liste des mots uniques et vérifiez s'il y a trop de faux positifs à l'intérieur :
pdftotext foo.pdf - | tr " " "\n" | sort | uniq | grep "^[A-Za-z]" > words
Je n'utilise pas de dictionnaire ici, car certaines fautes d'orthographe ne compteraient pas comme des mots.
-
Obtenez cette liste de mots et recherchez-la dans la sortie de pdftotext :
pdftotext foo.pdf - | tr " " "\n" | grep -Ff words | wc -l
Je sais que cela pourrait être fait en une seule ligne, mais alors je ne pourrais pas voir facilement le résultat du filtre de la première étape. Le -F
peut vous aider comme indiqué dans le commentaire de moi ci-dessous (merci).