Essencialmente funciona olhando para o hardware conectado ao seu computador (não funciona para dispositivos remotos). Em particular, analisa os dispositivos SCSI e USB, percorrendo uma lista de backend módulos (que são objetos compartilhados, um por dispositivo), para ver quais deles dão uma boa correspondência.
scanimage chama sane_get_devices, que é conectado sequencialmente a cada um dos módulos de backend. Por sua vez, aqueles (dependendo do backend) olham para o próprio dispositivo, assim como o arquivo de configuração (para obter dicas).
Leitura adicional: