ฉันกำลังตรวจสอบการอ้างอิงของกระดาษและต้องการค้นหาตำแหน่งในร่างกายที่มีการอ้างอิงบางกระดาษ (ในรายการอ้างอิง) มีโปรแกรมแก้ไข PDF ที่รองรับการค้นหาผ่าน bash และแยกบริบทของตำแหน่งหรือไม่ ฉันพยายามแปลง PDF เป็นข้อความ แต่ไม่ได้ผลลัพธ์ที่ดี
ฉันกำลังตรวจสอบการอ้างอิงของกระดาษและต้องการค้นหาตำแหน่งในร่างกายที่มีการอ้างอิงบางกระดาษ (ในรายการอ้างอิง) มีโปรแกรมแก้ไข PDF ที่รองรับการค้นหาผ่าน bash และแยกบริบทของตำแหน่งหรือไม่ ฉันพยายามแปลง PDF เป็นข้อความ แต่ไม่ได้ผลลัพธ์ที่ดี
คำตอบ:
เพียงเพิ่มคำตอบข้างต้นโดยเฉพาะคุณสามารถใช้เครื่องมือบรรทัดคำสั่งจาก xpdf-utils ชื่อ pdftotext แล้วค้นหาเอกสารข้อความที่สร้างโดยเครื่องมือนี้ด้วย 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
หากคุณมีปัญหาในการสร้างเอกสารข้อความจาก pdf เนื่องจากเช่นไฟล์ pdf ที่เข้ากันไม่ได้แสดงว่าเป็นปัญหาอื่น
ฉันคิดว่าโดยทั่วไปแล้วโปรแกรมแก้ไข pdf จะไม่รวมบรรทัดคำสั่งเพราะเป็นกราฟิก ถ้าคุณต้องการใช้ bash (หรืออาจ zsh!) คุณอาจต้องใช้เทอร์มินัลเชลล์
โชคดี!
หมายเหตุ: xpdf-utils เป็นแพ็คเกจการเปลี่ยนผ่านสำหรับ poppler-utils
คุณสามารถใช้ poppler-utils poppler-utils เป็นชุดเครื่องมือสำหรับไฟล์ Portable Document Format (PDF)
ในการติดตั้งคุณสามารถใช้ Ubuntu Software Center หรือคลิกด้านล่าง:
pdfgrep
สามารถค้นหาสตริงหรือรูปแบบในไฟล์ PDF วนซ้ำในไดเรกทอรีต้นไม้นับการจับคู่หรือพิมพ์บริบทสำหรับแต่ละการแข่งขัน ตัวอย่างเช่นในการค้นหาซ้ำkeyword
ใน/some directory
กรณีตาย:
pdfgrep -Ri keyword /some/directory
Pdfgrep เป็นเครื่องมือในการค้นหาข้อความในไฟล์ PDF มันทำงานคล้ายกับ `grep '
คุณสมบัติ:
- ค้นหานิพจน์ทั่วไป
- รองรับตัวเลือก grep ที่สำคัญ ได้แก่ : + ชื่อไฟล์ที่ส่งออก + เอาท์พุทหมายเลขหน้า + ไม่คำนึงถึงขนาดตัวพิมพ์ + จำนวน
ครั้งที่เกิดขึ้น- และคุณสมบัติที่สำคัญที่สุด: เอาต์พุตสี!
1ที่มา:ไดเรกทอรีแอพ Ubuntu
วิธีค้นหานิพจน์ทั่วไปในไฟล์ PDF หลายไฟล์โดยใช้ pdfgrep:
find /path -iname '*.pdf' -exec pdfgrep -H 'pattern' {} \;
โดยที่ path เป็นตำแหน่งสำหรับไฟล์ pdf ของคุณ
เหตุผลที่ pdftotext ไม่ประสบความสำเร็จอาจเป็นเพราะ PDF สแกนภาพและคุณต้อง OCR พวกเขาฉันเขียนวิธีที่รวดเร็วในการค้นหาทั้งหมดpdf
ที่ไม่สามารถgrep
ed และ OCR ได้
ฉันสังเกตว่าpdf
ไฟล์ไม่มีตัวอักษรใด ๆ มันมักจะไม่สามารถค้นหาได้ pdffonts
รู้อย่างนี้เราสามารถใช้
2 บรรทัดแรกของpdffonts
ส่วนหัวเป็นส่วนหัวของตารางดังนั้นเมื่อไฟล์ที่ค้นหาได้มีเอาต์พุตมากกว่าสองบรรทัดรู้ว่าเราสามารถสร้าง:
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
จากนั้นแสดงรายการไฟล์ PDF ที่ไม่สามารถค้นหาได้ทั้งหมดในไดเรกทอรี:
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