Digitalizar em batch e remover páginas em branco
Publicado por Raimundo Alves Portela (última atualização em 26/09/2011)
[ Hits: 8.814 ]
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
cal2svg gerador de calendários em formato vetorial SVG
Veja os 10 últimos tópicos das comunidades
Free VPN - download de VPNs do vpnbook.com
slackpigs - veja os pacotes que mais ocupam espaço no Slackware
Nenhum comentário foi encontrado.
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Eaí? Já programou no windows? (1)
Instalar Dual Boot, Linux+Windows. (6)
Conky, alerta de temperatura alta (17)
De volta para o futuro - ou melhor, para o presente (parte 2) (3)









