mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
Add screenshot OCR functionality with Minimal Dependencies (#1918)
* Add script to capture screenshot, perform OCR, and copy text to clipboard * Add binding for screenshot-ocr * Update OCR binding description * Add tesseract OCR and language data installation * Update bindings to current dev * Refactor screenshot capture method to use wayfreeze and slurp for region selection * Refactor OCR text extraction to simplify error handling * Bring up to date --------- Co-authored-by: David Heinemeier Hansson <david@hey.com>
This commit is contained in:
co-authored by
David Heinemeier Hansson
parent
fcf742a3a1
commit
75eec08758
Executable
+26
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Extract text from a screenshot region with OCR
|
||||||
|
# omarchy:group=capture
|
||||||
|
# omarchy:examples=omarchy capture ocr
|
||||||
|
|
||||||
|
# Keep hyprpicker alive until after grim captures so the screenshot sees the
|
||||||
|
# frozen overlay rather than live content shifting during teardown.
|
||||||
|
cleanup_freeze() {
|
||||||
|
[[ -n $PID ]] && kill $PID 2>/dev/null
|
||||||
|
}
|
||||||
|
trap cleanup_freeze EXIT
|
||||||
|
|
||||||
|
hyprpicker -r -z >/dev/null 2>&1 &
|
||||||
|
PID=$!
|
||||||
|
sleep .1
|
||||||
|
SELECTION=$(slurp 2>/dev/null)
|
||||||
|
|
||||||
|
[[ -z $SELECTION ]] && exit 0
|
||||||
|
|
||||||
|
TEXT=$(grim -g "$SELECTION" - | tesseract stdin stdout --oem 1 --psm 6 -l eng --dpi 300 -c preserve_interword_spaces=1 2>/dev/null) || exit 1
|
||||||
|
|
||||||
|
[[ -z $TEXT ]] && exit 1
|
||||||
|
|
||||||
|
printf "%s" "$TEXT" | wl-copy
|
||||||
|
notify-send " Copied text from selection to clipboard"
|
||||||
+2
-1
@@ -103,9 +103,10 @@ show_trigger_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_capture_menu() {
|
show_capture_menu() {
|
||||||
case $(menu "Capture" " Screenshot\n Screenrecord\n Color") in
|
case $(menu "Capture" " Screenshot\n Screenrecord\n Text Extraction\n Color") in
|
||||||
*Screenshot*) omarchy-capture-screenshot ;;
|
*Screenshot*) omarchy-capture-screenshot ;;
|
||||||
*Screenrecord*) show_screenrecord_menu ;;
|
*Screenrecord*) show_screenrecord_menu ;;
|
||||||
|
*Text*) omarchy-capture-text-extraction ;;
|
||||||
*Color*) pkill hyprpicker || hyprpicker -a ;;
|
*Color*) pkill hyprpicker || hyprpicker -a ;;
|
||||||
*) back_to show_trigger_menu ;;
|
*) back_to show_trigger_menu ;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ bindl = , switch:off:Lid Switch, exec, omarchy-hyprland-monitor-internal on
|
|||||||
bindd = , PRINT, Screenshot, exec, omarchy-capture-screenshot
|
bindd = , PRINT, Screenshot, exec, omarchy-capture-screenshot
|
||||||
bindd = ALT, PRINT, Screenrecording, exec, omarchy-menu screenrecord
|
bindd = ALT, PRINT, Screenrecording, exec, omarchy-menu screenrecord
|
||||||
bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
|
bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
|
||||||
|
bindd = SUPER CTRL, PRINT, Extract text (OCR) from screenshot, exec, omarchy-capture-text-extraction
|
||||||
|
|
||||||
# File sharing
|
# File sharing
|
||||||
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
|
bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
|
||||||
|
|||||||
@@ -120,6 +120,8 @@ sushi
|
|||||||
swaybg
|
swaybg
|
||||||
swayosd
|
swayosd
|
||||||
system-config-printer
|
system-config-printer
|
||||||
|
tesseract
|
||||||
|
tesseract-data-eng
|
||||||
tldr
|
tldr
|
||||||
tree-sitter-cli
|
tree-sitter-cli
|
||||||
tmux
|
tmux
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
echo "Install tesseract OCR and language data files"
|
||||||
|
|
||||||
|
omarchy-pkg-add tesseract tesseract-data-eng
|
||||||
Reference in New Issue
Block a user