Digitalizar em batch e remover páginas em branco

Publicado por Raimundo Alves Portela (última atualização em 26/09/2011)

[ Hits: 8.493 ]

Homepage: http://portelanet.com

Download digitalizador.sh




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.

  



Esconder código-fonte

#!/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

Scripts recomendados

Simple AdAway para Android

Substituir strings em arquivos ascII

Limpar o lixo das caixas de e-mail dos usuários que usam Maildir...

geotables

Script em Bash para gerenciar as novas versões do Java e permitir escolher a versão pa


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts