Làm cách nào để tìm kiếm tệp PDF từ dòng lệnh?


26

Tôi đang kiểm tra các tài liệu tham khảo của một bài báo và muốn tìm các vị trí trong phần thân trong đó một số bài viết (trong danh sách tài liệu tham khảo) được tham chiếu. Có trình soạn thảo PDF nào hỗ trợ tìm kiếm thông qua bash và trích xuất ngữ cảnh của một vị trí không? Tôi đã cố gắng chuyển đổi PDF thành văn bản, nhưng không có kết quả tốt.

Câu trả lời:


22

Chỉ cần thêm vào câu trả lời ở trên, cụ thể bạn có thể sử dụng một công cụ dòng lệnh từ xpdf-utils được gọi là pdftotext và sau đó tìm kiếm tài liệu văn bản được tạo bởi công cụ này bằng grep.

Cái này có thể trông giống như thế này:

pdftotext document.pdf - | grep -C5 -n -i "search term"

Có nhiều thông tin hơn trong hướng dẫn. Hạn chế duy nhất đối với pdftotext là bạn không thể chúng tôi toàn cầu hóa để chuyển đổi nhiều tệp cùng một lúc. Vấn đề này có thể được khắc phục với một tập lệnh bash nhỏ:

for f in pdf_directory; do echo $f; pdftotext $f - | grep -i "search_term"; done

Nếu bạn gặp vấn đề khi tạo tài liệu văn bản từ pdf, ví dụ, do tệp pdf không tương thích, thì đó là một vấn đề khác.

Tôi nghĩ nói chung, các trình soạn thảo pdf không bao gồm các dòng lệnh vì chúng là đồ họa. Nếu bạn muốn sử dụng bash, (hoặc có thể zsh!) Thì bạn có thể phải sử dụng shell terminal.

Chúc may mắn!


20

dụng cụ poppler

Lưu ý: xpdf-utils là gói chuyển tiếp cho poppler-utils.

Bạn có thể sử dụng dụng cụ poppler-utils. poppler-utils là một bộ công cụ cho các tệp Định dạng Tài liệu Di động (PDF).

Để cài đặt, bạn có thể sử dụng Trung tâm phần mềm Ubuntu hoặc nhấp vào bên dưới:

Cài đặt dụng cụ poppler

pdfgrep

pdfgrepcó thể tìm kiếm một chuỗi hoặc một mẫu trong các tệp PDF theo cách đệ quy trong các cây thư mục, đếm các trận đấu hoặc in một số ngữ cảnh cho mỗi trận đấu. Ví dụ: để tìm kiếm đệ quy keywordtrong /some directorytrường hợp không nhạy cảm:

pdfgrep -Ri keyword /some/directory

Pdfgrep là một công cụ để tìm kiếm văn bản trong các tệp PDF. Nó hoạt động tương tự như 'grep'.

Tính năng, đặc điểm:

  • tìm kiếm các biểu thức chính quy
  • hỗ trợ cho một số tùy chọn grep quan trọng, bao gồm: + đầu ra tên tệp. + đầu ra số trang. + trường hợp không nhạy cảm tùy chọn. + số
    lần xuất hiện.
  • và tính năng quan trọng nhất: đầu ra màu!

Cài đặt pdfgrep

1 Nguồn: Thư mục ứng dụng Ubuntu


6

Để tìm kiếm một biểu thức chính quy trong nhiều tệp pdf bằng pdfgrep:

find /path -iname '*.pdf' -exec pdfgrep -H 'pattern' {} \;

đường dẫn là vị trí cho các tập tin pdf của bạn.


0

Lý do pdftotext không thành công có thể là do PDF là hình ảnh được quét và bạn cần OCR chúng, tôi đã viết một cách nhanh chóng để tìm kiếm tất cả pdfnhững thứ không thể chỉnh sửa grepvà OCR chúng.

Tôi nhận thấy nếu một pdftập tin không có bất kỳ phông chữ nào thì nó thường không thể tìm kiếm được. Biết điều này chúng ta có thể sử dụng pdffonts.

2 dòng đầu tiên pdffontslà tiêu đề bảng, vì vậy khi một tệp có thể tìm kiếm được có nhiều hơn hai dòng đầu ra, biết điều này chúng ta có thể tạo:

gedit check_pdf_searchable.sh

dán cái này

#!/bin/bash 
#set -vx
if ((`pdffonts "$1" | wc -l` < 3 )); then
echo $1
ocrmypdf "$1" "$1"_ocr.pdf
fi

sau đó làm cho nó thực thi

chmod +x check_pdf_searchable.sh

sau đó liệt kê tất cả các pdf không thể tìm kiếm trong thư mục:

ls -1 ./*.pdf | xargs -L1 -I {} ./check_pdf_searchable.sh {}

hoặc trong thư mục và các thư mục con của nó:

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} ./check_pdf_searchable.sh {}

Bạn cũng cần phải cài đặt:

sudo apt install ocrmypdf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.