मैं कमांड लाइन से एक पीडीएफ फाइल कैसे खोजूं?


26

मैं एक कागज के संदर्भों की जांच कर रहा हूं और शरीर में उन पदों को खोजना चाहता हूं जहां कुछ कागज (संदर्भ सूची में) संदर्भित हैं। क्या एक पीडीएफ संपादक है जो बैश के माध्यम से खोज का समर्थन करता है और किसी स्थिति का संदर्भ निकालता है? मैंने पीडीएफ को पाठ में बदलने की कोशिश की है, लेकिन इसका अच्छा परिणाम नहीं निकला।

जवाबों:


22

बस उपरोक्त उत्तर को जोड़ने के लिए, विशेष रूप से आप pdftotext नामक xpdf-utils से कमांड लाइन टूल का उपयोग कर सकते हैं और फिर इस टूल द्वारा बनाए गए टेक्स्ट डॉक्यूमेंट को grep के साथ खोज सकते हैं।

यह कुछ इस तरह लग सकता है:

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

मैनुअल में अधिक जानकारी है। Pdftotext का एकमात्र दोष यह है कि आप एक ही समय में कई फ़ाइलों को बदलने के लिए हमें ग्लोबिंग नहीं कर सकते। इस समस्या को एक छोटे बैश स्क्रिप्ट के साथ दूर किया जा सकता है:

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

यदि आपको उदाहरण के लिए, एक असंगत पीडीएफ फाइल के कारण पीडीएफ से टेक्स्ट डॉक्यूमेंट बनाने में समस्या हो रही है, तो यह एक और समस्या है।

मुझे लगता है कि सामान्य रूप से, पीडीएफ संपादकों में कमांड लाइन शामिल नहीं है क्योंकि वे चित्रमय हैं। यदि आप बैश का उपयोग करना चाहते हैं, (या शायद zsh!) तो आपको टर्मिनल शेल का उपयोग करना पड़ सकता है।

सौभाग्य!


20

poppler-utils

नोट: xpdf-utils poppler-utils के लिए एक संक्रमणकालीन पैकेज है

आप पॉपलर-बर्तनों का उपयोग कर सकते हैं। poppler-utils पोर्टेबल डॉक्यूमेंट फॉर्मेट (PDF) फ़ाइलों के लिए उपकरणों का एक सूट है।

इसे स्थापित करने के लिए आप उबंटू सॉफ्टवेयर सेंटर का उपयोग कर सकते हैं, या नीचे क्लिक करके:

पॉपलर-बर्तन स्थापित करें

pdfgrep

pdfgrepपीडीएफ फाइलों में एक स्ट्रिंग या एक पैटर्न खोज कर सकते हैं, प्रत्येक मैच के लिए कुछ संदर्भों को गिनते हुए या प्रिंट करते हुए डायरेक्टरी ट्री में। उदाहरण के लिए, असंवेदनशील, केस असंवेदनशील keywordमें खोज करने के लिए /some directory:

pdfgrep -Ri keyword /some/directory

Pdfgrep पीडीएफ फाइलों में पाठ को खोजने के लिए एक उपकरण है। यह `grep 'के समान काम करता है।

विशेषताएं:

  • नियमित अभिव्यक्ति के लिए खोज।
  • कुछ महत्वपूर्ण grep विकल्पों के लिए समर्थन, जिसमें शामिल हैं: + फ़ाइल नाम आउटपुट। + पृष्ठ संख्या आउटपुट। + वैकल्पिक मामला असंवेदनशीलता। + गिनती
    घटित होती है।
  • और सबसे महत्वपूर्ण विशेषता: रंग उत्पादन!

Pdfgrep स्थापित करें

1 स्रोत: उबंटू ऐप्स निर्देशिका


6

Pdfgrep का उपयोग करके कई पीडीएफ फाइलों में एक नियमित अभिव्यक्ति की खोज करने के लिए:

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

जहां पथ आपके पीडीएफ फाइलों के लिए स्थान है।


0

बिना किसी कारण के pdftotext सफलता के कारण हो सकता है कि PDF स्कैन की गई छवियां हैं और आपको उन्हें OCR करने की आवश्यकता है, मैंने उन सभी pdfs को खोजने के लिए एक त्वरित तरीका लिखा है जो greped और OCR नहीं हो सकते ।

मैंने देखा कि अगर किसी pdfफाइल में कोई फॉन्ट नहीं है तो यह आमतौर पर खोजे जाने योग्य नहीं है। यह जानकर हम उपयोग कर सकते हैं pdffonts

pdffontsतालिका शीर्ष लेख की पहली 2 पंक्तियाँ होती हैं, इसलिए जब किसी फ़ाइल का पता लगाना संभव हो तो दो से अधिक पंक्ति आउटपुट होता है, यह जानकर हम बना सकते हैं:

gedit check_pdf_searchable.sh

इसे पेस्ट करें

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

फिर इसे निष्पादन योग्य बनाएं

chmod +x check_pdf_searchable.sh

फिर निर्देशिका में सभी गैर-खोज योग्य पीडीएफ़ सूची दें:

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

या निर्देशिका और उसके उपनिर्देशिका में:

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

आपको भी जमाना चाहिए:

sudo apt install ocrmypdf
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.