Это сложная задача, которую нелегко решить. Если вы действительно хотите получить точный результат, скопируйте абзац для вашего средства просмотра PDF в текстовый файл и проверьте его с помощью инструмента wc -w
. Причина, по которой не следует использовать pdftotext
в этом случае, заключается в следующем: математические формулы могут также попадать в вывод и рассматриваться как "слова". (Или вы можете отредактировать вывод, полученный из pdftotext
). Другой причиной, по которой это может не сработать, являются заголовки: «4.3.2 Foo Bar» считается тремя словами.
Обходной путь - только считать слова, начинающиеся с символа из [A-Za-z]. Итак, что я обычно делаю, это двухэтапный подход:
получить список уникальных слов и проверить, не слишком ли много ложных срабатываний внутри:
pdftotext foo.pdf - | tr " " "\n" | sort | uniq | grep "^[A-Za-z]" > words
Я не использую здесь словарь, так как некоторые орфографические ошибки не считаются словами.
Получить этот список слов и grep его в выводе pdftotext:
pdftotext foo.pdf - | tr " " "\n" | grep -Ff words | wc -l
Я знаю, что это может быть сделано в пределах одной строки, но тогда я не мог легко увидеть результат фильтрации с первого шага. -F
может помочь вам, как указано в комментарии моего ниже (спасибо).