Это сложная задача, которую нелегко решить. Если вы действительно хотите получить точный результат, скопируйте абзац для вашего средства просмотра 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
Может помочь вам , как заявлено на комментарий MOI ниже (спасибо).
pdftotext
: не забывайте е. И вы можете использовать одну команду:pdftotext myfile.pdf - | wc -w
.