STDOUTにスクリーンショットを送信する方法

STDOUTにスクリーンショットを送信する方法

現在の画像からテキストを抽出するには、次の方法を使用します。

import png:- | convert png:- -units PixelsPerInch -resample 300 -sharpen 12x6.0 png:- | tesseract -l eng stdin stdout | xsel -ib

しかし、import png:-スクリーンショットコマンドは私にとってはうまくいきません。 Linux Mintにはあまり適していません。

ここに画像の説明を入力してください。

さらなる処理のためにスクリーンショットをSTDOUTに直接送信するために使用できる他のコマンドはありますか?

答え1

同様の問題があったことを覚えていますscrot。こんな時は眠りを追加したのによかったです!私にとってはうまくいきますが、Linux Mintを使用していません。

{ import png:-; sleep 0.1 ;} | convert png:- -units PixelsPerInch -resample 300 -sharpen 12x6.0 png:- | tesseract -l eng stdin stdout | xsel -ib

あるいは、次のscrotを試してみることもできます。

scrot -s aoeu.png -e 'tesseract -l eng $f stdout | xsel -ib; rm -f $f'

コメントの入力と回答のバージョンJ.クレイブンズ

scrot -s -f -q 100 --silent - |
    convert - -units PixelsPerInch -resample 300 -sharpen 12x6.0 - |
    tesseract -l eng stdin stdout |
    xsel -ib

答え2

stdoutの場合、-と一緒にscrotを使用できますが、デフォルトではpngファイルが保存されます。以下を追加してください。

scrot -q 100 --silent - |

まさにそれが探しているものでなければなりません。

更新:1.7未満のバージョンでは標準出力が許可されていないため、これを行うのは少し面倒です。これはシェルスクリプトです:

#!/bin/bash

# Create a temp working directory
temp_file="$HOME/screenshot_$(date +"%Y_%m_%d-%H_%M_%S").png"

# Take a screenshot to the temp file
scrot -zfq 100 --silent "$temp_file"

# Copy the image file to the clipboard using xclip
xclip -selection clipboard -t image/png -i "$temp_file"

echo -e "\nScreenshot saved to:\n"$temp_file"\n"

exit 0

xclip貼り付け/出力に使用します。パイプxselなども同じように機能する必要があります。

保存してscreenshot.sh
最後chmod +x screenshot.sh
に実行します。./screenshot.sh

ヒント:エイリアスを使用して単一のコマンドでスクリプトを実行します。
BASHエイリアスを作成する方法

alias sshot='bash -c "/path/to/script/screenshot.sh"'

これで、次のように入力して単にスクリーンショットを撮ることができます。sshot

答え3

KDEのspectacleスクリーンショットツールを使用すると標準出力に出力できますが、/dev/stdout代わりに次のものを使用する必要があります-

spectacle --background --fullscreen --output /dev/stdout

または短いオプションを使用してください。spectacle -bfo /dev/stdout

関連情報