Escaneando a PDF con Python y SANE

Python

Aquí os dejo un scriptillo muy resultón para escanear documentos de una o varías páginas y guardar el resultado directamente en PDF.

Ingredientes

  • python-imaging-sane
  • pdfjam

pysane

El script toma como único parámetro el nombre del fichero PDF resultante y se pone a escanear la primera página inmediatamente al arrancar. Después pregunta por consola si hay que escanear más páginas. Por último monta un PDF con todas las páginas escaneadas.

[ pysane.py ]

#! /usr/bin/python
# -*- coding:utf-8 -*-
 
import sys, os, time
import sane
 
output = sys.argv[1] if len(sys.argv) > 1 else 'output.pdf'
dirname = '/tmp/%s-%s' % (time.time(), os.getpid())
os.mkdir(dirname)
 
sane.init()
print 'Available devices:', sane.get_devices()
 
s = sane.open(sane.get_devices()[0][0])
s.mode = 'color'
s.resolution = 150
 
print 'Device parameters:', s.get_parameters()
 
files = []
for i, img in enumerate(s.multi_scan()):
    fname = os.path.join(dirname, 'img%s.pdf' % i)
    files.append(fname)
 
    print "Saving on '%s'" % fname
    img.save(fname)
 
    if raw_input('Another page? (Y/n): ').lower().startswith('n'):
        break
 
s.close()
 
print "scanned pages: %s" % (i+1)
 
if len(files)  == 1:
    os.system("mv '%s' '%s'" % (fname, output))
else:
    os.system("pdfjoin --fitpaper true --outfile %s %s" % (output, str.join(' ', files)))

Si alguien le tiene alergia a la consola y quiere hacerle una interfaz gráfica debería ser ultrasencillo.

Saludos.