Digitalizar em batch e remover páginas em branco

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

[ Hits: 8.468 ]

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

Sysinfo versão 0.7

Script FIREWALL IPTABLES com 3 (três) interfaces (Int, Ext e DMZ)

Executando comandos remotos usando sshpass

Rotina para backup diário, semanal e mensal (exemplo para Firebird)

Liberação do servidor DNS no firewall


  

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