Bagaimana cara mencari file PDF dari baris perintah?

26

Saya sedang memeriksa referensi makalah dan ingin mencari posisi di badan tempat beberapa makalah (dalam daftar referensi) direferensikan. Apakah ada editor PDF yang mendukung pencarian via bash dan mengekstrak konteks suatu posisi? Saya sudah mencoba mengonversi PDF ke teks, tetapi hasilnya tidak bagus.

David
sumber

Jawaban:

22

Hanya untuk menambah jawaban di atas, khususnya Anda dapat menggunakan alat baris perintah dari xpdf-utils yang disebut pdftotext dan kemudian mencari dokumen teks yang dibuat oleh alat ini dengan grep.

Ini mungkin terlihat seperti ini:

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

Ada informasi lebih lanjut di manual. Satu-satunya kekurangan pdftotext adalah Anda tidak dapat melakukan globbing untuk mengubah banyak file secara bersamaan. Masalah ini dapat diatasi dengan skrip bash kecil:

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

Jika Anda mengalami masalah dalam membuat dokumen teks dari pdf karena, misalnya, file pdf yang tidak kompatibel, maka itu adalah masalah lain.

Saya pikir secara umum, editor pdf tidak termasuk baris perintah karena itu grafis. Jika Anda ingin menggunakan bash, (atau mungkin zsh!) Maka Anda mungkin harus menggunakan terminal shell.

Semoga berhasil!

Joe
sumber
20

poppler-utils

Catatan: xpdf-utils adalah paket transisi untuk poppler-utils.

Anda dapat menggunakan poppler-utils. poppler-utils adalah seperangkat alat untuk file Portable Document Format (PDF).

Untuk menginstalnya Anda dapat menggunakan Pusat Perangkat Lunak Ubuntu, atau dengan mengklik di bawah ini:

Instal poppler-utils

pdfgrep

pdfgrepdapat mencari string atau pola dalam file PDF secara rekursif di pohon direktori, menghitung kecocokan atau mencetak beberapa konteks untuk setiap kecocokan. Misalnya, untuk secara rekursif mencari keyworddi /some directory, kasus tidak sensitif:

pdfgrep -Ri keyword /some/directory

Pdfgrep adalah alat untuk mencari teks dalam file PDF. Kerjanya mirip dengan `grep '.

Fitur:

  • mencari ekspresi reguler.
  • dukungan untuk beberapa opsi grep penting, termasuk: + keluaran nama file. + keluaran nomor halaman. + ketidakpekaan case opsional. + hitung
    kejadian.
  • dan fitur yang paling penting: keluaran warna!

Instal pdfgrep

1 Sumber: Direktori Aplikasi Ubuntu

Mitch
sumber
6

Untuk mencari ekspresi reguler di banyak file pdf menggunakan pdfgrep:

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

di mana path adalah lokasi untuk file pdf Anda.

menyalakan
sumber
0

Alasan pdftotext tidak berhasil mungkin karena PDF adalah gambar yang dipindai dan Anda perlu OCR mereka, saya menulis cara cepat untuk mencari semua pdfyang tidak dapat grepdiedit dan OCR mereka.

Saya perhatikan jika pdffile tidak memiliki font apa pun biasanya tidak dapat dicari. Mengetahui hal ini bisa kita gunakan pdffonts.

2 baris pertama pdffontsadalah header tabel, jadi ketika sebuah file dapat dicari memiliki lebih dari dua output baris, dengan mengetahui hal ini kita dapat membuat:

gedit check_pdf_searchable.sh

rekatkan ini

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

kemudian membuatnya bisa dieksekusi

chmod +x check_pdf_searchable.sh

kemudian daftarkan semua pdf yang tidak dapat dicari di direktori:

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

atau dalam direktori dan subdirektori-nya:

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

Anda juga perlu menginstal:

sudo apt install ocrmypdf
Eduard Florinescu
sumber