Convierte tu Mac en un lector de códigos QR profesional usando Python, un entorno virtual aislado y un comando rápido llamado qrscan.
1. Requisitos previos
Solo necesitas tres cosas:
- macOS con Terminal (Intel o Apple Silicon).
- Python 3 preinstalado (todos los Mac modernos lo traen).
- Homebrew instalado.
Comprueba todo con:
python3 --version
brew --version
2. Crear el entorno virtual seguro
Vamos a crear un entorno completamente aislado llamado qrscan-env:
python3 -m venv ~/qrscan-env
source ~/qrscan-env/bin/activate
Instala las dependencias dentro del entorno:
pip install opencv-python pillow pdf2image
Instala poppler con Homebrew (para leer PDF):
brew install poppler
3. Crear el script ~/leer_qr.py
Pega este script completo:
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.
Crea ~/bin si no existe:
mkdir -p ~/bin
Crea el script:
cat > ~/bin/qrscan << 'EOF'
#!/bin/zsh
"$HOME/qrscan-env/bin/python" "$HOME/leer_qr.py" "$@"
EOF
chmod +x ~/bin/qrscan
Añádelo al PATH:
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
5. Cómo usar QRSCAN
Una vez instalado, puedes leer códigos QR de cualquier archivo PDF, JPG o PNG simplemente usando el comando qrscan.
Ejemplo con PDF:
qrscan "/ruta/a/diseño.pdf"
Ejemplo con imagen:
qrscan "/ruta/a/imagen.png"
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
- Shell:
Pega este script final, 100% funcional para PDF multipágina, JPG y PNG:
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.
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
- Shell:
Pega el siguiente script dentro del campo de Automator:
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.
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í:
- Shell:
/bin/zsh - Entrada: archivo seleccionado
- Shell:
Pega este script dentro del bloque:
PY="$HOME/qrscan-env/bin/python3"
"$PY" "$HOME/leer_qr.py" "$1"
9. Resumen
Ya tienes un ecosistema completo para leer códigos QR en tu Mac:
- qrscan — comando rápido profesional.
- Acción rápida en Finder.
- App arrastrar-y-soltar.
- Atajo de macOS.
No hay comentarios:
Publicar un comentario