Como digitalizar documentos no Linux com os comandos mais úteis do SANE
Scanner Access Now Easy (SANE) é uma interface de programação de aplicativo (API) usada para controlar scanners e câmeras. Em uso, o aplicativo de linha de comando, scanimage, pode ser usado para enviar comandos de scanner de forma rápida e confiável para executar uma série de funções úteis.
Veja como aproveitar ao máximo o SANE para digitalizar documentos e fotos.
Get Yourself SANE Now
A API pode ser instalada usando seu gerenciador de pacotes. Por exemplo, em um sistema Debian:
sudo apt install sane
… instala a API SANE e fornece o aplicativo de linha de comando scanimage. (Ele também instala as ferramentas de front-end xscanimage, scanadf e xcam). Executar o seguinte comando mostra todas as opções disponíveis:
scanimage -h
Agora, é importante observar que você pode enviar comandos API junto com comandos específicos do scanner, todos na mesma linha de comando. Além disso, a saída de -h pode ser um pouco confusa devido ao fato de que as opções de API e de scanner são impressas no terminal em um estilo concatenado.

Se nenhum scanner for detectado, você obterá apenas as opções de API. Se um scanner for detectado, pode ocorrer um atraso perceptível enquanto as informações do dispositivo do scanner são recuperadas, enviadas para a API e formatadas. O comando parece travar, mas espere e ele terminará.
Tendo mencionado isso, se você deseja apenas as opções do dispositivo (opções de "backend" para o próprio scanner), você pode usar a opção -A :
scanimage -A
Observe que, para este artigo, o SANE versão 1.0.14-15 é usado como exemplo. Sua versão específica pode variar e ter opções um pouco diferentes. Se você tiver dúvidas, apenas execute scanimage com a opção -h .
Obviamente, cada scanner terá seu próprio conjunto específico de opções possíveis, portanto, experimente essas opções para refinar os comandos que você envia para obter os melhores resultados.
Comandos SANE fáceis e simples
Sim, fácil e simples é o que todos nós queremos. Você tem que começar de algum lugar, e o comando mais simples que você pode usar para digitalizar algo é:
scanimage > scan_out
Isso funcionará se o seu scanner for detectado pela API. A saída é enviada diretamente para a saída padrão neste caso e então redirecionada para o arquivo, scan_out. O formato padrão da imagem é PNM, e o padrão do modo (por exemplo, arte de linha, monocromático ou colorido) é determinado pelo scanner. Se o scanner não for detectado, você receberá esta saída (ou semelhante):
scanimage: no SANE devices found
Você também receberá uma mensagem informativa sobre o formato de saída não definido. Isso ocorre porque o formato de imagem padrão é pnm. Isso pode ser alterado para TIFF, PNG ou JPEG.
Output format is not set, using pnm as a default.
Especificando o arquivo de saída
A saída padrão pode ser redirecionada para um arquivo usando > ou você pode emitir uma opção explícita para especificar o nome e o caminho completo do arquivo de saída, por exemplo:
scanimage -o scan_out.png
Nesse caso, a API produzirá uma imagem no formato PNG.
Listando e usando dispositivos
Quer ter certeza de que seu scanner foi detectado pelo SANE? Execute este comando:
scanimage -L
Ele irá listar todos os dispositivos detectados. Se um único dispositivo tiver uma LAN conectada e uma conexão USB, ele os listará em linhas separadas.
Por exemplo, uma Epson WorkForce WF-3640 pode ser listada assim:
device `epson2:net:192.168.1.26' is a Epson PID 08B8 flatbed scanner
device `epson2:libusb:001:005' is a Epson PID 08B8 flatbed scanner
Nesse caso, você pode usar como endereço para enviar e receber dados:
scanimage -d epson2:net:192.168.1.26 -o scan_out.png
ou
scanimage -d epson2:libusb:001:005 -o scan_out.png
Observe que se você desconectar e reconectar o USB em uma porta diferente, o endereço USB mudará. Nesse caso, você precisa se certificar de que o endereço do seu dispositivo é o mesmo que o novo impresso quando ele é listado novamente.
Defina um formato de imagem diferente
Se você quiser um formato de imagem diferente, pode emitir o mesmo comando como este:
scanimage -o scan_out.tiff
O SANE tentará adivinhar o formato com base na extensão do arquivo. O formato também pode ser definido explicitamente com:
scanimage --format=tiff -o scan_out.tiff
ou mesmo isto:
scanimage --format=tiff > scan_out
Comandos em lote
Bem, o que mais você pode obter com a API? Aqui está o que você pode obter: comandos em lote para controlar um Alimentador automático de documentos (ADF) para digitalizar páginas em sequência.
Embora o scanner possa produzir apenas formatos de imagem, eles também podem ser convertidos em texto por meio de um aplicativo de reconhecimento óptico de caracteres (OCR), como o gocr .
Observe que, para produzir um documento razoavelmente detalhado para preservação de documento ou conversão de OCR, pode ser necessário enviar comandos específicos do scanner. Isso será anotado a seguir.
Um exemplo de processamento em lote
Você vai querer usar formatos diferentes, dependendo da finalidade do resultado final. Por exemplo, se o aplicativo OCR que você pretende usar só aceita imagens PNM, o formato do arquivo de imagem deve ser PNM.
Aqui está um exemplo de envio de um comando para digitalizar uma página de texto impresso para ser convertido por um aplicativo OCR que aceita imagens pnm. Neste comando, os comandos específicos do scanner são –mode, –resolution e –source:
scanimage --batch=document-A-%d.pnm --format=pnm --batch-count=1 --mode Lineart --resolution 1200 --source Automatic
Como esses são comandos do scanner e não a API do SANE, eles serão diferentes dependendo da marca e do modelo e podem exigir alguma experimentação. Por exemplo, o seguinte snippet pode não ser óbvio na saída de ajuda do back-end:
--source Automatic
Digitalize com SANE
Quer você seja uma pessoa de alguma forma com uma pilha de documentos antigos da família ou um preservacionista profissional, digitalizar com o SANE API é uma escolha óbvia para mídia que pode resistir aos rigores mecânicos de scanners e ADFs.
Combine a capacidade da SANE API com o pós-processamento de imagem ou um aplicativo OCR e você poderá digitalizar quase qualquer mídia plana que valha a pena preservar.