Đây là một nhiệm vụ khó khăn không dễ giải quyết. Nếu bạn thực sự muốn có một kết quả chính xác, hãy sao chép từng đoạn cho trình xem PDF của bạn vào một tệp văn bản và kiểm tra nó bằng wc -w
công cụ. Lý do tại sao không sử dụng pdftotext
trong trường hợp đó là: các công thức toán học cũng có thể được đưa vào đầu ra và được coi là "từ". (Ngoài ra, bạn có thể chỉnh sửa đầu ra bạn nhận được từ pdftotext
). Một lý do khác khiến điều này có thể thất bại là các tiêu đề: "4.3.2 Foo Bar" được tính là ba từ.
Một cách xung quanh chỉ là đếm các từ bắt đầu bằng một char trong [A-Za-z]. Vì vậy, những gì tôi thường làm là một cách tiếp cận hai bước:
lấy danh sách các từ uniq và kiểm tra xem có quá nhiều dương tính giả bên trong không:
pdftotext foo.pdf - | tr " " "\n" | sort | uniq | grep "^[A-Za-z]" > words
Tôi không sử dụng từ điển ở đây, vì một số lỗi chính tả sẽ không được tính là từ.
Lấy danh sách từ này và grep nó trong đầu ra của pdftotext:
pdftotext foo.pdf - | tr " " "\n" | grep -Ff words | wc -l
Tôi biết điều này có thể được thực hiện trong một lớp lót, nhưng sau đó tôi không thể dễ dàng thấy kết quả bộ lọc từ bước đầu tiên. Có -F
thể giúp bạn như đã nêu trong nhận xét của moi dưới đây (cảm ơn).
pdftotext
: đừng quên e. Và bạn có thể sử dụng một lệnh duy nhất :pdftotext myfile.pdf - | wc -w
.