Bu, çözülmesi kolay olmayan zor bir iştir. Gerçekten kesin bir sonuç almak istiyorsanız, PDF görüntüleyiciniz için paragrafa göre paragrafı bir metin dosyasına kopyalayın ve wc -w
aracıyla kontrol edin . Bu pdftotext
durumda kullanılmamasının nedeni şudur: matematiksel formüller de çıktıya girebilir ve "kelimeler" olarak kabul edilebilir. (Alternatif olarak, elde ettiğiniz çıktıyı düzenleyebilirsiniz pdftotext
). Bunun başarısız olmasının bir diğer nedeni de başlıklardır: "4.3.2 Foo Bar" üç kelime olarak sayılır.
Etrafı dolaşmanın bir yolu, yalnızca [A-Za-z] öğesinden çıkarılmakla başlayan kelimeleri saymaktır. Genelde yaptığım şey iki aşamalı bir yaklaşım:
uniq kelimelerin listesini alın ve içeride çok fazla yanlış pozitif olup olmadığını kontrol edin:
pdftotext foo.pdf - | tr " " "\n" | sort | uniq | grep "^[A-Za-z]" > words
Burada bir sözlük kullanmıyorum, çünkü bazı yazım hataları kelime olarak sayılmaz.
Bu kelime listesini alın ve pdftotext çıktısının içine yerleştirin:
pdftotext foo.pdf - | tr " " "\n" | grep -Ff words | wc -l
Bunun tek bir astar içinde yapılabileceğini biliyorum, ancak daha sonra ilk adımdaki filtre sonucunu kolayca göremedim. Aşağıdaki moi-F
yorumunda belirtildiği gibi size yardımcı olabilir (teşekkürler).
pdftotext
: e'yi unutma. Ve tek bir komutu kullanabilirsiniz:pdftotext myfile.pdf - | wc -w
.