Як шукати файл PDF у командному рядку?


26

Я перевіряю посилання на папір і хочу знайти позиції в тілі, де посилається деякий папір (у списку посилань). Чи є редактор PDF, який підтримує пошук через bash і витягує контекст позиції? Я намагався перетворити PDF в текст, але не мав хорошого результату.

Відповіді:


22

Для того, щоб додати до вищезгаданої відповіді, зокрема, ви можете скористатися інструментом командного рядка з xpdf-utils під назвою pdftotext, а потім виконати пошук із текстовим документом, створеним цим інструментом, із греппом.

Це може виглядати приблизно так:

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

Більше інформації в посібнику. Єдиним недоліком pdftotext є те, що ви не можете нас глобалізувати, щоб перетворити кілька файлів одночасно. Цю проблему можна подолати за допомогою невеликого сценарію bash:

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

Якщо у вас виникли проблеми зі створенням текстового документа з pdf через, наприклад, несумісного pdf-файлу, то це ще одна проблема.

Я думаю, що в цілому редактори PDF не включають командні рядки, оскільки вони графічні. Якщо ви хочете використовувати bash, (а може, і zsh!), Можливо, вам доведеться використовувати термінальну оболонку.

Удачі!


20

poppler-утиліти

Примітка: xpdf-utils - це перехідний пакет для poppler-utils.

Можна використовувати poppler-утиліти. poppler-utils - це набір інструментів для файлів Portable Document Format (PDF).

Щоб встановити його, ви можете скористатись програмним центром Ubuntu або натиснувши нижче:

Встановіть утиліти poppler

pdfgrep

pdfgrepможна шукати рядок або візерунок у файлах PDF рекурсивно у деревах каталогів, підраховуючи відповідність або друкуючи певний контекст для кожного відповідності. Наприклад, для рекурсивного пошуку keywordв /some directoryзалежності від регістру:

pdfgrep -Ri keyword /some/directory

Pdfgrep - це інструмент для пошуку тексту у файлах PDF. Він працює аналогічно `grep '.

Особливості:

  • пошук регулярних виразів.
  • підтримка деяких важливих варіантів grep, включаючи: + вихід файлу. + вихід сторінки сторінки + необов'язкова нечутливість випадку. + підрахунок
    подій.
  • і найважливіша особливість: кольоровий вихід!

Встановіть pdfgrep

1 Джерело: Довідник Ubuntu Apps


6

Для пошуку регулярного вираження у кількох файлах PDF за допомогою pdfgrep:

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

де шлях для ваших файлів PDF.


0

Причиною, що pdftotext виявився без успіху, може бути те, що PDF-файли - це скановані зображення, і вам потрібно їх OCR, я написав швидкий спосіб пошуку всіх pdfs, які неможливо grepредагувати, та 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

потім перелічіть усі файли pdfs, які не можна шукати, у каталозі:

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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.