From 2cd47e9f092da7b65b08d39e0ff01a9a7914b5e5 Mon Sep 17 00:00:00 2001 From: forgoty Date: Sat, 3 Aug 2024 13:40:29 +0300 Subject: [PATCH] Make maimpick OCR to work with languages other than English. --- .local/bin/maimpick | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/.local/bin/maimpick b/.local/bin/maimpick index 67b9983c5f..9b015f3895 100755 --- a/.local/bin/maimpick +++ b/.local/bin/maimpick @@ -5,16 +5,28 @@ # highlighting an area to copy. scrotcucks on suicidewatch right now. # variables +opts="a selected area +current window +full screen +a selected area (copy) +current window (copy) +full screen (copy) +copy selected image to text +copy selected image to text (choose language)" output="$(date '+%y%m%d-%H%M-%S').png" -xclip_cmd="xclip -sel clip -t image/png" -ocr_cmd="xclip -sel clip" +xclip_cmd_png="xclip -sel clip -t image/png" +xclip_cmd_text="xclip -sel clip" +tesseract_langs="$(tesseract --list-langs 2>/dev/null | sed '1d;/^List/d;/osd/d')" -case "$(printf "a selected area\\ncurrent window\\nfull screen\\na selected area (copy)\\ncurrent window (copy)\\nfull screen (copy)\\ncopy selected image to text" | dmenu -l 7 -i -p "Screenshot which area?")" in - "a selected area") maim -u -s pic-selected-"${output}" ;; - "current window") maim -B -q -d 0.2 -i "$(xdotool getactivewindow)" pic-window-"${output}" ;; - "full screen") maim -q -d 0.2 pic-full-"${output}" ;; - "a selected area (copy)") maim -u -s | ${xclip_cmd} ;; - "current window (copy)") maim -q -d 0.2 -i "$(xdotool getactivewindow)" | ${xclip_cmd} ;; - "full screen (copy)") maim -q -d 0.2 | ${xclip_cmd} ;; - "copy selected image to text") tmpfile=$(mktemp /tmp/ocr-XXXXXX.png) && maim -u -s > "$tmpfile" && tesseract "$tmpfile" - -l eng | ${ocr_cmd} && rm "$tmpfile" ;; +opt="$(printf "%s\n" "${opts}" | dmenu -l 7 -i -p "Screenshot which area?")" +case "${opt}" in + "a selected area") maim -u -s pic-selected-"${output}" ;; + "current window") maim -B -q -d 0.2 -i "$(xdotool getactivewindow)" pic-window-"${output}" ;; + "full screen") maim -q -d 0.2 pic-full-"${output}" ;; + "a selected area (copy)") maim -u -s | ${xclip_cmd_png} ;; + "current window (copy)") maim -q -d 0.2 -i "$(xdotool getactivewindow)" | ${xclip_cmd_png} ;; + "full screen (copy)") maim -q -d 0.2 | ${xclip_cmd_png} ;; + "copy selected image to text") maim -u -s | tesseract stdin stdout -l eng | ${xclip_cmd_text} ;; + "copy selected image to text (choose language)") lang="$(printf "%s" "$tesseract_langs" | dmenu -i -p "Choose Language")" + maim -u -s | tesseract stdin stdout -l $lang | ${xclip_cmd_text} ;; esac