From 71383c5b5bebaa6c5af1d55720690d3d0afe82f0 Mon Sep 17 00:00:00 2001 From: Kat Inskip Date: Thu, 23 Oct 2025 19:26:41 -0700 Subject: [PATCH] feat: OCR??? --- home/profiles/graphical/ocr.nix | 65 +++++++++++++++++++++++++++ home/profiles/neovim/default.nix | 1 + home/profiles/neovim/init.lua | 1 + home/profiles/shell/packages.nix | 1 - nixos/profiles/graphical/packages.nix | 1 + systems/goliath.nix | 2 +- 6 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 home/profiles/graphical/ocr.nix diff --git a/home/profiles/graphical/ocr.nix b/home/profiles/graphical/ocr.nix new file mode 100644 index 00000000..6dc86626 --- /dev/null +++ b/home/profiles/graphical/ocr.nix @@ -0,0 +1,65 @@ +{ + pkgs, + lib, + ... +}: { + home.packages = let + inherit (lib.meta) getExe; + ocr = pkgs.writeShellScriptBin "ocr" '' + set -euo pipefail + pushd () { + command pushd "$@" > /dev/null + } + + popd () { + command popd "$@" > /dev/null + } + args="$(getopt -a -o r: --long rotate: -- "$@")" + + ROTATE="" + FORMAT="jpg" + + usage(){ + cat < + [ -r input | --rotate input ]: Angle to rotate the image by + [ -f input | --format input ]: Intermediary format, defaults to jpg + EOF + exit 1 + } + + if [ $# -eq 0 ]; then + usage + exit 1 + fi + + eval set -- "''${args}" + while : + do + case $1 in + -r | --rotate) ROTATE="$2" ; shift 2 ;; + -f | --format) ROTATE="$2" ; shift 2 ;; + --) shift; break ;; + *) >&2 echo Unsupported option: $1 + usage ;; + esac + done + + INTERMEDIARY="./image.''${FORMAT}" + pushd $(mktemp -d) + if [ -n "''${ROTATE}" ]; then + ${getExe pkgs.imagemagick} $1 -rotate "''${ROTATE}" "''${INTERMEDIARY}" + else + ${getExe pkgs.imagemagick} $1 "''${INTERMEDIARY}" + fi + ${getExe pkgs.ocrmypdf} -q --rotate-pages-threshold 2.0 --clean --output-type=none \ + --sidecar tmp.txt --rotate-pages --image-dpi 300 --deskew --output-type pdfa --jobs 4 \ + "''${INTERMEDIARY}" - > /dev/null + printf "%s" "$(< tmp.txt)" + popd + ''; + in [ + ocr + ]; +} diff --git a/home/profiles/neovim/default.nix b/home/profiles/neovim/default.nix index 12bd993e..9b8f2528 100644 --- a/home/profiles/neovim/default.nix +++ b/home/profiles/neovim/default.nix @@ -23,6 +23,7 @@ in { vimAlias = true; viAlias = true; plugins = with pkgs.vimPlugins; [ + nvim-lspconfig # Libraries plenary-nvim # Disables and re-enables highlighting when searching diff --git a/home/profiles/neovim/init.lua b/home/profiles/neovim/init.lua index a8d62a3a..da213878 100644 --- a/home/profiles/neovim/init.lua +++ b/home/profiles/neovim/init.lua @@ -361,3 +361,4 @@ end, {remap=true}) vim.keymap.set("", "F", function() hop.hint_char1({ direction = directions.BEFORE_CURSOR, current_line_only = true }) end, {remap=true}) + diff --git a/home/profiles/shell/packages.nix b/home/profiles/shell/packages.nix index cd12ed64..23c92505 100644 --- a/home/profiles/shell/packages.nix +++ b/home/profiles/shell/packages.nix @@ -24,7 +24,6 @@ asciinema bandwhich pciutils - bingrep chafa dust eva diff --git a/nixos/profiles/graphical/packages.nix b/nixos/profiles/graphical/packages.nix index 4a2be8ca..38a61f58 100644 --- a/nixos/profiles/graphical/packages.nix +++ b/nixos/profiles/graphical/packages.nix @@ -3,6 +3,7 @@ jmtpfs dnsutils usbutils + imagemagick ]; services.udev.packages = [ pkgs.android-udev-rules diff --git a/systems/goliath.nix b/systems/goliath.nix index c23aa5cf..0a8c0570 100644 --- a/systems/goliath.nix +++ b/systems/goliath.nix @@ -77,7 +77,7 @@ _: let konawall-py.settings = { source = "konachan"; tags = [ - "rating:-e" + "-rating:e" ]; }; # konawall-py.settings = {