Eu não tenho certeza se esta é uma solução 100%, mas eu criei o seguinte script que deve te dar uma boa parte do caminho, se não todo o caminho (eu não passei pela especificação). ser executado a partir do diretório que tem todos os PDFs (ele irá procurar subdiretórios).
#! /bin/bash
if [[ ! "$#" = "1" ]]
then
echo "Usage: $0 /path/to/PDFDirectory"
exit 1
fi
PDFDIRECTORY="$1"
while IFS= read -r -d $'#! /bin/bash
if [[ ! "$#" = "1" ]]
then
echo "Usage: $0 /path/to/PDFDirectory"
exit 1
fi
PDFDIRECTORY="$1"
while IFS= read -r -d $'%pre%' FILE; do
PDFFONTS_OUT="$(pdffonts "$FILE" 2>/dev/null)"
RET_PDFFONTS="$?"
FONTS="$(( $(echo "$PDFFONTS_OUT" | wc -l) - 2 ))"
if [[ ! "$RET_PDFFONTS" = "0" ]]
then
READ_ERROR=1
echo "Error while reading $FILE. Skipping..."
continue
fi
if [[ "$FONTS" = "0" ]]
then
echo "NOT SEARCHABLE: $FILE"
else
echo "SEARCHABLE: $FILE"
fi
done < <(find "$PDFDIRECTORY" -type f -name '*.pdf' -print0)
echo "Done."
if [[ "$READ_ERROR" = "1" ]]
then
echo "There were some errors."
fi
' FILE; do
PDFFONTS_OUT="$(pdffonts "$FILE" 2>/dev/null)"
RET_PDFFONTS="$?"
FONTS="$(( $(echo "$PDFFONTS_OUT" | wc -l) - 2 ))"
if [[ ! "$RET_PDFFONTS" = "0" ]]
then
READ_ERROR=1
echo "Error while reading $FILE. Skipping..."
continue
fi
if [[ "$FONTS" = "0" ]]
then
echo "NOT SEARCHABLE: $FILE"
else
echo "SEARCHABLE: $FILE"
fi
done < <(find "$PDFDIRECTORY" -type f -name '*.pdf' -print0)
echo "Done."
if [[ "$READ_ERROR" = "1" ]]
then
echo "There were some errors."
fi
Funciona procurando o número de fontes especificado em cada PDF. Se o arquivo não tiver fontes, presume-se que seja composto apenas por uma imagem. (Isso pode atrapalhar arquivos protegidos por senha, não tenho idéia, não tenho nenhum teste contra). Se houver alguma coisa pesquisável e alguma coisa que seja uma imagem, isso não funcionará - mas provavelmente será útil separar os documentos de imagem digitalizados em um contêiner PDF dos PDFs "reais".
Você pode, é claro, comentar a parte do loop if-then-else que não se aplica se você quiser apenas imprimir os arquivos que não são pesquisáveis.