Volver al inicio

Búsqueda de capturas de pantalla en Wayland sin IA: scripts

Scripts de Bash implementan captura de pantalla con OCR en Wayland sin IA. screen.sh guarda PNG y .txt, ssearch.sh proporciona búsqueda difusa vía tofi. Configuración para Hyprland/Sway con atajos de teclado.

Wayland: búsqueda de capturas de pantalla con OCR sin redes neuronales
Advertisement 728x90

Búsqueda de capturas de pantalla locales en Wayland sin IA

Los scripts de Bash permiten capturar pantallas con extracción automática de texto mediante OCR y búsqueda basada en contenido, sin necesidad de redes neuronales ni servicios en la nube. Diseñado para entornos Wayland usando grim, slurp, tesseract y tofi. Cada captura se guarda junto a un archivo .txt complementario con el texto extraído, ideal para indexación y recuperación rápida.

Herramientas requeridas:

  • grim: captura de pantalla
  • slurp: selección de región
  • tesseract: motor OCR
  • tofi: interfaz de búsqueda
  • wl-clipboard y cliphist: gestión del portapapeles
  • notify-send: notificaciones de escritorio

screen.sh: Script de captura y OCR

Este script captura una región seleccionada de la pantalla, la guarda como PNG y ejecuta tesseract en segundo plano para generar un archivo de texto auxiliar. Soporta reconocimiento de idiomas ruso e inglés.

Google AdInline article slot
#!/bin/bash
set -euo pipefail

SCREENSHOT_DIR="${SCREENSHOT_DIR:-$HOME/Pictures/screens}"
OCR_LANG="${OCR_LANG:-rus+eng}"
SLURP_ARGS=(-d -b 1B1F2866 -c 89b4faff -w 1)
GRIM_ARGS=(-t png -l 3)

die()  { notify-send "screen.sh" "$1" -i dialog-error -t 4000; exit 1; }
need() { for cmd in " $@"; do command -v "$cmd" &>/dev/null || die "missing: $cmd"; done; }

Función OCR con limpieza de resultados:

run_ocr() {
    tesseract "$1" - -l "$OCR_LANG" --psm 3 2>/dev/null \
        | grep -v '^[[:space:]]*$' \
        | sed 's/[[:space:]]\+/ /g; s/^ //; s/ $//'
}

save_sidecar() {
    run_ocr "$1" > "${1%.png}.txt" 2>/dev/null || true
}

El OCR se ejecuta en segundo plano: command -v tesseract &>/dev/null && { save_sidecar "$FILEPATH" & disown; }. Las notificaciones son interactivas y ofrecen opciones para abrir la carpeta, editar con swappy o copiar el texto al portapapeles.

El modo --ocr copia directamente el texto extraído sin guardar archivo.

Google AdInline article slot

ssearch.sh: Script de indexación y búsqueda

Soporta tres modos:

  • --index: procesar archivos PNG existentes sin archivos .txt auxiliares
  • --list: generar salida TSV con ruta, marca de tiempo y fragmento de texto
  • Modo principal: búsqueda difusa mediante tofi

Lógica de indexación:

if [[ "${1:-}" == "--index" ]]; then
    while IFS= read -r png; do
        txt="${png%.png}.txt"
        [[ -f "$txt" ]] && continue
        run_ocr "$png" > "$txt" 2>/dev/null || true
    done < <(find "$SCREENSHOT_DIR" -name "screenshot-*.png" -type f | sort)
fi

Generación de lista:

Google AdInline article slot
if [[ "${1:-}" == "--list" ]]; then
    while IFS= read -r txt; do
        png="${txt%.txt}.png"
        [[ -f "$png" ]] || continue
        base=$(basename "$txt" .txt)
        dt="${base#screenshot-}"
        stamp="${dt:0:10} ${dt:11:2}:${dt:13:2}:${dt:15:2}"
        snippet=$(head -3 "$txt" | tr '\n' ' ' | cut -c1-120)
        printf '%s\t%s\t%s\n' "$png" "$stamp" "$snippet"
    done < <(find "$SCREENSHOT_DIR" -name "screenshot-*.txt" -type f | sort -r)
fi

La búsqueda se envía a tofi con coincidencia difusa y ancho de 1100px. Los resultados seleccionados copian el texto al wl-clipboard y abren la imagen con xdg-open.

Instalación e integración

Instalar en Arch:

sudo pacman -S grim slurp tesseract tesseract-data-rus wl-clipboard libnotify swappy

Hacer los scripts ejecutables y asignar atajos en Hyprland:

bind = , Print, exec, ~/wayland/scripts/screen.sh
bind = SHIFT, Print, exec, ~/wayland/scripts/screen.sh --ocr
bind = SUPER, F, exec, ~/wayland/scripts/ssearch.sh

Para capturas antiguas: ./ssearch.sh --index.

Puntos clave

  • El OCR se ejecuta de forma asíncrona, nunca bloquea la interfaz; el PSM 3 es ideal para pantallas con contenido mixto.
  • tofi maneja con elegancia las imprecisiones del OCR gracias a su coincidencia difusa.
  • Siempre se crean archivos auxiliares, incluso vacíos, para garantizar un índice confiable.
  • Sin dependencias de IA ni nube; solo herramientas Unix puras.
  • Adaptado específicamente para Wayland + tofi; adaptar a GNOME/KDE requiere reemplazar el lanzador.

Limitaciones y mejoras

Tesseract tiene dificultades con fuentes pequeñas en temas oscuros—prueba ajustes PSM/OEM. La búsqueda es puramente basada en cadenas, sin comprensión semántica. Para capturas rotadas, configura un cron o systemd-timer para eliminar archivos mayores de N días.

— Editorial Team

Advertisement 728x90

Leer después