Questão Como posso recursivamente identificar PDFs não pesquisáveis ​​e copiá-los para uma pasta?


Além de um post anterior que forneceu uma solução de script:

Da minha pergunta, pode ser possível dizer que sou um usuário de computador e não tenho conhecimento de programação.

Eu tenho centenas de pdfs pesquisáveis ​​e inescrutáveis ​​em várias pastas e subpastas em um disco rígido externo.

Eu tenho computadores com o Windows 7 e Ubuntu 14.04

Como eu poderia modificar esse script para especificar a pasta pai e também pesquisar subpastas e gerar um relatório identificando nomes de arquivos e locais?

Se os desejos se realizassem, isso estaria contido em uma GUI e copiaria os arquivos sem texto para uma pasta comum a partir da qual o Abbyy Pro poderia fazer o OCR em lote.


1


origem




Respostas:


Você provavelmente deveria ter postado isso como um comentário sobre a outra questão, mas - então novamente - você precisaria de mais reputação para fazer isso.

@ O script do davidgo já é recursivo (ele passará por pastas e subpastas). Você só teria que modificar echo "$each NOT searchable" para alterar o que acontece ao localizar um arquivo não pesquisável. Isso deve fazer o truque:


Editar: Houve alguns problemas com o modo como o script lidava com espaços em nomes de arquivos e alguns outros problemas aqui e ali. Eu decidi revisar o roteiro original do davidgo para que você veja mais algumas mudanças do que eu disse acima.


#! /bin/bash

if [[ ! "$#" = "2" ]]
  then
      echo "Usage: $0 /path/to/PDFDirectory /path/to/TARGETDirectory"
      exit 1
fi

PDFDIRECTORY="$1"
TARGETDIR="$2"

while IFS= read -r -d $'\0' 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 -- Copying to $TARGETDIR."
          cp -v "$FILE" "$TARGETDIR/${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

Salve este script em um novo arquivo vazio, nomeie-o como algo copy_image_pdf e torná-lo executável através das propriedades do arquivo (estou assumindo que você faria isso no Ubuntu).

Em seguida, execute-o a partir de um terminal, fornecendo o diretório PDF e o diretório de destino em que os arquivos PDF da imagem devem ser copiados, por exemplo:

copy_image_pdf /media/data/pdffiles /media/data/pdffiles-to-be-ocred

0