AI 없이 웨이랜드에서 로컬 화면 캡처 검색하기
Bash 스크립트를 활용해 자동으로 OCR 텍스트 추출과 콘텐츠 기반 검색을 수행할 수 있습니다. 신경망이나 클라우드 서비스 없이도 가능하며, grim, slurp, tesseract, tofi를 사용한 웨이랜드 환경에 최적화되어 있습니다. 각 화면 캡처는 추출된 텍스트가 포함된 .txt 보조 파일과 함께 저장되어 인덱싱 및 빠른 검색이 가능합니다.
필요한 도구:
- grim: 화면 캡처
- slurp: 영역 선택
- tesseract: OCR 엔진
- tofi: 검색 인터페이스
- wl-clipboard 및 cliphist: 클립보드 관리
- notify-send: 데스크탑 알림
screen.sh: 캡처 및 OCR 스크립트
선택한 화면 영역을 캡처하고 PNG 형식으로 저장한 후, 백그라운드에서 tesseract를 실행하여 텍스트 사이드카 파일을 생성합니다. 러시아어와 영어 모두 지원됩니다.
#!/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; }
OCR 결과 정제 함수:
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
}
OCR는 백그라운드에서 실행됩니다: command -v tesseract &>/dev/null && { save_sidecar "$FILEPATH" & disown; }. 알림은 상호작용식이며, 폴더 열기, swappy로 편집, 클립보드에 복사 등의 옵션 제공합니다.
--ocr 모드는 파일 저장 없이 직접 추출된 텍스트를 복사합니다.
ssearch.sh: 인덱싱 및 검색 스크립트
세 가지 모드를 지원합니다:
--index: .txt 사이드카가 없는 기존 PNG 파일 처리--list: 경로, 타임스탬프, 텍스트 스니펫을 TSV 형식으로 출력- 메인 모드: tofi를 통한 유사 검색
인덱싱 로직:
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
목록 생성:
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
검색은 tofi에 파이프로 전달되며, 유사 매칭과 1100px 너비를 지원합니다. 선택된 결과는 텍스트를 wl-clipboard에 복사하고, xdg-open으로 이미지를 열 수 있습니다.
설치 및 통합
Arch에 설치:
sudo pacman -S grim slurp tesseract tesseract-data-rus wl-clipboard libnotify swappy
스크립트 실행 권한 부여 및 하이프랜드에서 단축키 설정:
bind = , Print, exec, ~/wayland/scripts/screen.sh
bind = SHIFT, Print, exec, ~/wayland/scripts/screen.sh --ocr
bind = SUPER, F, exec, ~/wayland/scripts/ssearch.sh
오래된 캡처 파일 처리: ./ssearch.sh --index
핵심 포인트
- OCR는 비동기적으로 실행되어 UI 차단 없음; 혼합 콘텐츠 화면에 적합한 PSM 3 사용
- tofi의 유사 매칭은 OCR 오류를 자연스럽게 처리
- 항상 사이드카 파일이 생성됨(비어 있어도) — 신뢰할 수 있는 인덱싱 보장
- AI나 클라우드 의존성 제로; 순수 유닉스 도구만 사용
- 웨이랜드 + tofi에 특화; GNOME/KDE로 전환 시 런처 교체 필요
제한 사항 및 개선 방안
Tesseract는 어두운 테마에서 작은 글꼴 처리에 어려움 — PSM/OEM 설정 조정 실험 필요. 검색은 문자열 기반뿐이며 의미 이해 없음. 회전된 캡처는 cron 또는 systemd-timer로 N일 이상 된 파일 정리 설정 권장.
— Editorial Team
아직 댓글이 없습니다.