Bir PDF dosyasını komut satırından nasıl arayabilirim?


26

Bir kağıdın referanslarını kontrol ediyorum ve vücuttaki bazı kağıdın (referanslar listesinde) referans aldığı konumları bulmak istiyorum. Bash ile aramayı destekleyen ve bir pozisyonun içeriğini çıkartan bir PDF editörü var mı? PDF'yi metne dönüştürmeye çalıştım, ancak iyi bir sonuç almadım.

Yanıtlar:


22

Sadece yukarıdaki cevaba eklemek için, özellikle pdftotext adlı xpdf-utils komut satırı aracını kullanabilir ve daha sonra bu araç tarafından oluşturulan metin belgesini grep ile arayabilirsiniz.

Bu şuna benzeyebilir:

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

Kılavuzda daha fazla bilgi var. Pdftotext'in tek dezavantajı, aynı anda birden fazla dosyayı dönüştürmemize gerek kalmayacağımızdır. Bu sorunun küçük bir bash betiği ile üstesinden gelinebilir:

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

Uyumsuz bir pdf dosyası nedeniyle pdf'den metin belgesi oluşturmada sorun yaşıyorsanız, bu başka bir sorundur.

Genel olarak pdf editörlerinin komut satırı içermediğini düşünüyorum çünkü grafikseldirler. Eğer bash, (ya da belki zsh!) Kullanmak istiyorsan, terminal kabuğu kullanman gerekebilir.

İyi şanslar!


20

Poppler-utils

Not: xpdf-utils , poppler-utils için bir geçiş paketidir .

Poppler-utils kullanabilirsiniz. poppler-utils, Taşınabilir Belge Formatı (PDF) dosyaları için bir araç takımıdır.

Yüklemek için Ubuntu Yazılım Merkezi'ni kullanabilirsiniz veya aşağıyı tıklatarak:

Poppler-utils uygulamasını yükleyin

pdfgrep

pdfgrepPDF dosyalarındaki bir dizgiyi veya deseni, dizin ağaçlarında yinelemeli olarak arayabilir, eşleşmeleri sayabilir veya her eşleşme için bir içerik yazdırabilir. Örneğin, yinelemeli olarak aramak keywordiçin /some directory, duyarsız durumda:

pdfgrep -Ri keyword /some/directory

Pdfgrep, PDF dosyalarında metin aramak için bir araçtır. Grep'e benzer şekilde çalışır.

Özellikler:

  • düzenli ifadeleri arayın.
  • aşağıdakiler de dahil olmak üzere bazı önemli grep seçenekleri için destek: + dosyaadı çıktısı. + sayfa numarası çıkışı. + isteğe bağlı harf duyarsızlığı. + sayı
    oluşumları.
  • ve en önemli özellik: renkli çıktı!

Pdfgrep yükleyin

1 Kaynak: Ubuntu Uygulamalar Dizini


6

Pdfgrep kullanarak birden fazla pdf dosyasında düzenli bir ifade aramak için:

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

pdf dosyalarının bulunduğu yer neresidir?


0

Pdftotext’in başarılı olmama nedeni, PDF’nin taranan görüntüler olması ve onları OCR’a koymanız gerekebilir pdf, edilemeyecek her şeyi aramak için hızlı bir yol yazdım ve OCR’ı yazdım grep.

Bir pdfdosya herhangi bir yazı tipine sahip değilse, genellikle aranamadığını fark ettim . Bunu bilerek kullanabiliriz pdffonts.

İlk 2 satır pdffontstablo başlığıdır, yani bir dosya aranabilir olduğunda ikiden fazla satır çıktısı varsa, bunu yaratabileceğimizi bilerek:

gedit check_pdf_searchable.sh

bunu yapıştır

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

sonra çalıştırılabilir yap

chmod +x check_pdf_searchable.sh

sonra aranamayan tüm pdfs'leri dizinde listele:

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

veya dizinde ve alt dizinlerinde:

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

Ayrıca yüklemeniz gerekir:

sudo apt install ocrmypdf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.