Digitalizar em batch e remover páginas em branco
Publicado por Raimundo Alves Portela (última atualização em 26/09/2011)
[ Hits: 8.753 ]
Homepage: http://portelanet.com
Script desenvolvido para automatizar a digitalização de documentos em batch (lote).
Permite que o usuário de um scanner com tal funcionalidade coloque os documentos no scanner e faça a digitalização e não precisa se preocupar em ver as páginas que tem conteúdo nas duas faces da página, pois o script já conta com uma rotina que remove os arquivos gerados em branco.
Testado em scanner Fujitsu e HP, coloquei o Kodak na lista, se tiverem problemas com alguns desses basta contactar-me informando o erro que podemos encontrar a solução.
Serve para tal utilidade e para o aprendizado.
#!/bin/bash
# digitalizador.sh
# Desenvolvido por: Raimundo Portela - rai3mb@gmail.com
# Script desenvolvido para digitalizar documentos e fazer a
# exclusão automática de páginas em branco (scanner que fazem várias páginas em batch).
# Para usar:
# ./digitalizador.sh [nome_do_arquivo]
 
[ -z "$1" ] && echo "Sintaxe de uso: ./digitalizador.sh [nome_do_arquivo]" && exit
export ARQUIVO="$1"
 
export MARCA="DESCONHECIDO"
 
func_menuMarca(){
echo "Qual a marca do seu scanner?
1 - hp
2 - fujitsu
3 - kodak
 
Informe o número correspondente: "
 
read OP
case "$OP" in
   1) MARCA="hp";;
   2) MARCA="fuji";;
   3) MARCA="kodak";;
   *) echo "Entrada inválida"; func_menuMarca ;;
esac
}
func_menuMarca
 
# localiza o dispositivo conectado
echo "Configurando o scanner da marca $MARCA"
export DISPOSITIVO=$(scanimage -L | egrep -o "$MARCA.*" | cut -d\' -f 1)
 
func_deletaPagBranca() {
   local TEMPO="1"
   for i in $(ls -1 "$ARQUIVO"*.tif)
   do
      echo "Verificando imagem $i"
      # usa o tesseract para fazer OCR na imagem
      # quando houver conteúdo vai demorar mais de 1 segundo para terminar
      # quando não houver conteúdo o resultado é quase instantâneo
      tesseract "$i" /tmp/img_texto -l por & PID=$!; sleep $TEMPO; kill $PID 2>/dev/null
      if [ $? -eq 1 ]; then
         # significa que o killall deu erro porque o processo tesseract já havia terminado antes do sleep
         rm "$i"
      fi
   done
}
 
# trabalha no diretório temporário
cd /tmp
 
func_scan(){
#faz a digitalização
echo "Iniciando a digitalização de $ARQUIVO"
scanimage --device-name ${DISPOSITIVO:-DESCONHECIDO} --format=tiff --source "ADF Duplex" \
--batch-start="$CONF_BATCHSTART" --batch="$ARQUIVO%02d.tif" --batch-increment=1
       
[ "$?" -ne 0 ] && echo "Erro na digitalização" && exit 1
}
 
export CONF_BATCHSTART="1"
 
while :
do
   func_scan
   echo "1 - Continuar digitalizando o documento $ARQUIVO"
   echo "2 - Finalizar"
   read OP
   case "$OP" in
      1) CONF_BATCHSTART=$(ls -1 *.tif | wc -l)
         continue ;;
      2) func_deletaPagBranca
         echo "agrupa paginas em tif multipagnado"
         tiffcp "$ARQUIVO"*.tif "$ARQUIVO"ok.tif
         [ $? -eq 1 ] echo "Erro de conversão" && rm "$ARQUIVO"ok.tif && exit 1
         mv "$ARQUIVO"ok.tif "$OLDPWD"
         rm *.tif
         break;;
      *) echo "Entrada inválida" && continue ;;
   esac
done
Iniciar nova instância do Firefox quando o mesmo não está respondendo
Checar tamanho do Cache do Squid e limpar
Kernel 4.0 para Ubuntu, Linux Mint, Lubuntu e derivados
mPlayRecTv - assiste e grave a programação da TV com MPlayer
Impedir duas ou mais conexões por usuário
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









