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

1

Além de uma postagem 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.

Tenho centenas de PDFs pesquisáveis e não pesquisáveis em várias pastas e subpastas em um disco rígido externo.

Eu tenho computadores com o Windows 7 e o 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 tornassem realidade, 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.

    
por David Green 16.05.2014 / 14:37

1 resposta

0

Você provavelmente deveria ter postado isso como um comentário sobre a outra pergunta, 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ó precisa modificar echo "$each NOT searchable" para alterar o que faz 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 $'
copy_image_pdf /media/data/pdffiles /media/data/pdffiles-to-be-ocred
' 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 copy_image_pdf e torne-o executável através das propriedades do arquivo (suponho 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:

#! /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 $'
copy_image_pdf /media/data/pdffiles /media/data/pdffiles-to-be-ocred
' 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
    
por 16.05.2014 / 18:09