If you need to regularly scan and archive documents and prefer CLI based workflows, then Arkivisto may be for you: https://github.com/dbrgn/arkivisto/
If you need to regularly scan and archive documents and prefer CLI based workflows, then Arkivisto may be for you: https://github.com/dbrgn/arkivisto/
Criei um Script para usar o Scanner
O Epson Scan deu pau. O Simple Scan? Também deu pau. O xSANE? Só existe no AUR (e pode dar problemas no sistema).
A solução? Usar o SANE por linha de comando. O comando é bem simples, e aqui um exemplo desse comando.
scanimage --device "pixma:04A91749_247936" --format=tiff --output-file test.tiff --progressE esse comando tem quatro argumentos básicos:
-- device: Aqui é o dispositivo que será usado para fazer o escaneamento-- format: Aqui é o formato do arquivo do escaneamento-- output-file: Aqui vai o nome do arquivo de saída-- progress: Imprime uma mensagem de progresso.E como sou um preguiçoso, decidir pegar isso e criar um Script. E por enquanto, esse é o Script:
#! /bin/bashPasta=~/Imagens/ScanData=`date +"%Y-%m-%d_%H-%M-%S"`Resolucao=600Fabricante=EpsonselecionarScanner () {scanimage -L | grep $Fabricante | gawk -F '`' -P '{ print $2 }' | cut -d"'" -f1}echo "Detectando Scanner..."Scanner=`selecionarScanner`echo "Foi Detectado o Scanner" $Scanner"."echo "Escaneando Imagem..."scanimage --device "$Scanner" --format=jpeg --output-file $Pasta/Scan_$Data.jpg --progress --resolution $Resolucaoecho "Imagem escaneada com sucesso em" $Pasta "em" $Resolucao "DPI"Como esse Script funciona?
A primeira parte do Script é basicamente uma “Configuração”. Como eu precisava de um Script rápido e bem específico, então acabei colocando o que queria de configuração no Código do próprio Script.
Pasta=~/Imagens/ScanData=`date +"%Y-%m-%d_%H-%M-%S"`Resolucao=600Fabricante=EpsonA primeira linha, se refere a pasta onde os Scans serão salvos. Escolhi a pasta ~/Imagens/Scan pois essa já era a pasta que eu usava.
A segunda linha se refere a data e hora em que o escaneamento está sendo feito. Eu usava isso muito no Windows, pois era o meio pelo qual o XnView MP escaneava os arquivos: Com Scan_YYYY-MM-DD_HH-MM-SS. E isso me facilitava muito em não ter que pensar em que nome eu daria para aquele arquivo.
Já a Resolução é a configuração da resolução do escaneamento em DPI. Isso irá definir o tamanho de imagem. E por fim, a última linha da Fabricante é justamente para poder procurar o Scanner em que será feito o escaneamento.
Pegando o ID do Scanner
Depois vem uma das funções mais interessantes desse Script que é a que seleciona o Scanner.
selecionarScanner () {scanimage -L | grep $Fabricante | gawk -F '`' -P '{ print $2 }' | cut -d"'" -f1}E que tem cinco comandos para poder definir qual será o Scanner, e são eles:
Essa parte foi necessária por causa de como o comando para escanear funciona. E vamos novamente para a estrutura do comando.
scanimage --device "pixma:04A91749_247936" --format=tiff --output-file test.tiff --progressE essa função foi necessária por causa do --device. Mas antes, vamos ao o que cada comando faz.
O primeiro comando que é o scanimage -L é o comando para poder ver a lista de Scanners disponíveis. E essa é a saída do comando:
$ > scanimage -Ldevice `v4l:/dev/video0' is a Noname Integrated Camera: Integrated C virtual devicedevice `epsonds:libusb:001:074' is a Epson L3150 Series ESC/I-2Como podemos ver, a saída é inadequada ao que o --device pede. Só queremos o ID do dispositivo, no caso ali o epsonds:libusb:001:074.
Com isso, é preciso isolar a linha do scanner da Epson. E é nisso que vem o segundo comando, o grep $Fabricante. Como estou demonstrando como esses cinco comandos funcionam, então coloquei um grep Epson. E com esse comando, a saída fica assim:
$ > scanimage -L | grep Epsondevice `epsonds:libusb:001:074' is a Epson L3150 Series ESC/I-2Retiramos o primeiro dispositivo para trabalharmos apenas na linha da Epson. E ainda há trabalho a ser feito aqui. Com isso, vem outro comando que é o gawk -F '`' -P '{ print $2 }'. Esse comando vai retirar a primeira parte da saída, usando o ` como um separador. E com isso, essa se torna a saída do comando:
$ > scanimage -L | grep Epson | gawk -F '`' -P '{ print $2 }'epsonds:libusb:001:074' is a Epson L3150 Series ESC/I-2Retiramos a primeira parte. Ainda falta a segunda parte para ser retirada. Com isso, vem o cut -d"'" -f1 que retira essa parte restante da saída, assim ficando:
epsonds:libusb:001:074O que é o necessário para se utilizar no comando que será usado para escanear o arquivo.
Finalmente, escaneando a imagem
E com isso, vem a última parte importante desse script. A parte onde o escaneamento finalmente será feito.
echo "Detectando Scanner..."Scanner=`selecionarScanner`echo "Foi Detectado o Scanner" $Scanner"."echo "Escaneando Imagem..."scanimage --device "$Scanner" --format=jpeg --output-file $Pasta/Scan_$Data.jpg --progress --resolution $Resolucaoecho "Imagem escaneada com sucesso em" $Pasta "em" $Resolucao "DPI"E temos apenas duas linhas relevantes nessa parte, e elas são:
Scanner=`selecionarScanner`scanimage --device "$Scanner" --format=jpeg --output-file $Pasta/Scan_$Data.jpg --progress --resolution $ResolucaoA primeira linha, é onde será guardada a variável do Scanner, que é repassada pela função que detecta o Scanner que será usado. E a segunda linha, é finalmente o comando para escaneamento. Ele pega todas as variáveis que foram configuradas e finalmente escaneia o arquivo.