cat > ~/leer_qr.py << 'EOF'
import sys, os
from PIL import Image
import numpy as np
import cv2
from pdf2image import convert_from_path
detector = cv2.QRCodeDetector()
def leer_qr_en_imagen(ruta):
img = Image.open(ruta).convert("RGB")
arr = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)
textos = []
try:
ok, decoded, pts, _ = detector.detectAndDecodeMulti(arr)
if ok:
textos += [t for t in decoded if t]
except:
t, _, _ = detector.detectAndDecode(arr)
if t:
textos.append(t)
return textos
def leer_qr_en_pdf(ruta):
paginas = convert_from_path(ruta, dpi=300)
resultados = []
for i, p in enumerate(paginas):
t = f"/tmp/qrscan_{i}.png"
p.save(t, "PNG")
resultados += leer_qr_en_imagen(t)
os.remove(t)
return resultados
if len(sys.argv) < 2:
print("Uso: python3 leer_qr.py archivo.pdf|jpg|png")
sys.exit()
archivo = sys.argv[1]
if not os.path.exists(archivo):
print("Archivo no encontrado:", archivo)
sys.exit()
if archivo.lower().endswith(".pdf"):
r = leer_qr_en_pdf(archivo)
else:
r = leer_qr_en_imagen(archivo)
if not r:
print("No se encontró ningún QR")
else:
print("=== QR DETECTADOS ===")
for x in r:
print(x)
EOF
4. Crear el comando rápido qrscan
Con esto podrás leer QR desde cualquier sitio simplemente escribiendo qrscan archivo.pdf.
Una vez instalado, puedes leer códigos QR de cualquier archivo PDF, JPG o PNG simplemente usando el comando qrscan.
Ejemplo con PDF:
TERMINAL
qrscan "/ruta/a/diseño.pdf"
Ejemplo con imagen:
TERMINAL
qrscan "/ruta/a/imagen.png"
Ten en cuenta que el proceso puede tardar unos segundos, especialmente en PDFs con varias páginas.
Una vez analizado el archivo, el comando mostrará en Terminal todos los enlaces detectados dentro de los códigos QR.
6. Acción rápida en Finder: clic derecho → “Leer QR”
Vamos a crear una Acción rápida (Quick Action) que te permitirá leer códigos QR directamente desde
el menú contextual del Finder: seleccionas cualquier PDF, JPG o PNG → botón derecho →
Acciones rápidas → Leer QR.
Es la forma más cómoda de usar QRScan en tu día a día.
6.1 Configurar la Acción rápida en Automator
Abre Automator.
Pulsa Nuevo documento.
Selecciona Acción rápida.
Configura la parte superior así:
El flujo de trabajo recibe:archivos o carpetas
En:Finder.app
Imagen: Acción
Color: Negro
En la barra lateral izquierda, busca “Ejecutar script de shell” y arrástralo al flujo.
Configura:
Shell:/bin/zsh
Pasar datos de entrada:como argumentos
Pega este script final, 100% funcional para PDF multipágina, JPG y PNG:
TERMINAL MAC
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
PY="$HOME/qrscan-env/bin/python3"
for f in "$@"
do
RESULT=$("$PY" "$HOME/leer_qr.py" "$f" \
| grep -v '^=== QR DETECTADOS ===' \
| sed '/^[[:space:]]*$/d' \
| head -n 1)
if [ -z "$RESULT" ]; then
osascript -e 'display dialog "No se detectó ningún QR en el archivo seleccionado." with title "QRScan" buttons {"OK"} default button 1'
else
printf "%s" "$RESULT" | pbcopy
osascript -e '
display dialog "El contenido del QR se ha copiado al portapapeles:" & return & return & (the clipboard as text) ¬
with title "QRScan - enlace copiado" buttons {"OK"} default button 1
'
fi
done
Guarda la acción con el nombre Leer QR.
Ahora aparecerá automáticamente en: clic derecho → Acciones rápidas → Leer QR.
Esta acción puede tardar unos segundos en mostrar el resultado, especialmente si el archivo es un
PDF multipágina o contiene varios códigos QR.
Haz clic para ampliar la imagen — configuración correcta de la Acción rápida “Leer QR”.
7. Crear una app (.app) arrastrar-y-soltar
Si quieres tener un acceso rápido en tu Dock o Escritorio, puedes crear una aplicación llamada
Leer QR.app para arrastrar archivos PDF/JPG/PNG encima y obtener el enlace del QR al instante.
7.1. Crear la aplicación en Automator
Abre Automator y selecciona Aplicación como tipo de documento:
Abre Automator en tu Mac.
Selecciona Nuevo documento.
Elige la opción Aplicación (muy importante).
En la biblioteca de acciones, busca “Ejecutar un script de shell” y arrástralo al flujo.
Configura así:
Shell: /bin/zsh
Pasar datos de entrada: como argumentos
Pega el siguiente script dentro del campo de Automator:
AUTOMATOR (zsh)
for f in "$@"
do
"$HOME/qrscan-env/bin/python" "$HOME/leer_qr.py" "$f"
done
Guarda la aplicación con el nombre Leer QR.app y colócala en Aplicaciones o en el Escritorio.
Si quieres un acceso aún más rápido, arrástrala al Dock.
Ahora podrás arrastrar cualquier archivo PDF, JPG o PNG encima del icono de Leer QR.app.
La app ejecutará el script y mostrará en Terminal el enlace del QR detectado.
8. Crear un Atajo de macOS (Shortcuts)
También puedes crear un atajo para leer códigos QR desde Spotlight,
desde la barra de menús o incluso asignarle un atajo de teclado.
Este método también usa el entorno virtual qrscan-env.
8.1. Crear un atajo que pide un archivo y lee el QR
Abre la app Atajos en tu Mac.
Crea un nuevo atajo llamado Leer QR (archivo).
Añade la acción “Seleccionar archivo”.
Esta acción permite elegir un PDF, JPG o PNG.
Añade la acción “Ejecutar script de shell”.
Configúrala así:
Puedes añadir una acción final de Notificación para mostrar
los enlaces QR o una acción para copiarlos al portapapeles.
El proceso puede tardar unos segundos si el PDF es grande.
9. Resumen
Ya tienes un ecosistema completo para leer códigos QR en tu Mac: