Bash:PDFファイルでキーワードを検索してページを返します。

Bash:PDFファイルでキーワードを検索してページを返します。

誰かがこの問題を解決するのに役立つことを願っています。

PDFファイル(実際にはPDFファイルフォルダ)内でキーワード検索を実行し、キーワードが見つかったファイル名を含むすべてのページを返す必要がある小さなスクリプトを探しています。

次のスクリプトが見つかりました(ここhttps://ubuntuforums.org/showthread.php?t=1368062):

#!/bin/bash

[ "$*" ] || { echo "You forgot a search string!" ; exit 1 ; }

found=1

for file in ./src/*.pdf ; do
   [ "$file" = '*.pdf' ] && echo "No PDF files found!" && exit 1
   pages=$(pdfinfo "$file" | awk '/Pages:/ { print $NF }')
   for ((i=1 ; i<=$pages ; i++)) ; do
      match=$(pdftotext -q -f $i -l $i "$file" - | grep -m 1 "$*")
      [ "$match" ] && echo "Page $i in $file" && found=0
   done
done

[ "$found" -ne 0 ] && echo "No search string matches found"

ほとんどのヒットを返しましたが、Adobe Acrobat Reader と Mac Preview の検索機能では、より多くの一致が返されました。問題が何であるかを知っている人はいますか?

私の考えでは、検索キーワードの前後の文字で失敗しているようですが、それは単なる推測です。

ページあたりのヒット数を含めると本当に完璧になると思います!

ベストアンサー1

私は使用しますpdfgrep:

pdfgrep -p "your search string" src/*.pdf

各ページの数に合わせて一致するページ番号が出力されます。

これは不足している一致を処理できない可能性があります。その理由は、PDFの構成方法(特にテキストの結合方法)によって異なります。

おすすめ記事