はじめに
macOSではスクリーンショット後に直接文字認識できるのが便利だったので、Ubuntuでも同じ機能が欲しくなりました。
実現方法の大まかな流れは:スクリーンショット → 保存 → 認識 → クリップボードにコピー
いろいろ調べた結果、オープンソースのOCRエンジン teseract を見つけました。多言語対応で、様々な形式の画像を扱えるので、今回の要件にぴったりです。
システム情報
- Ubuntu 22.10 kinetic
インストール手順
# tesseract-ocr 認識エンジンのインストール
sudo apt install tesseract-ocr -y
# tesseract-ocr 簡体字中国語のインストール
sudo apt install tesseract-ocr-chi-sim -y
# xclip クリップボードツールのインストール
sudo apt install xclip -y
# gnome-screenshot スクリーンショットツールのインストール
sudo apt install gnome-screenshot -y
# imagemagick 画像処理ツールのインストール
sudo apt install imagemagick -y
スクリプトの作成
~/Documents/OCR ディレクトリに ocr.sh ファイルを作成し、以下の内容を記述します:
#!/bin/env bash
# {Username} をあなたのユーザー名に変更してください
SCR="/home/{Username}/Documents/OCR/temp"
# スクリーンショット
gnome-screenshot -a -f $SCR.png
# 画像処理で認識率を向上
mogrify -modulate 100,0 -resize 400% $SCR.png
# tesseract で英語と簡体字中国語を認識(eng+chi_sim)
tesseract $SCR.png $SCR &> /dev/null -l eng+chi_sim
# 認識結果をクリップボードにコピー
cat $SCR.txt | xclip -selection clipboard
# 一時ファイルを削除
rm $SCR.png $SCR.txt
exit
ショートカットキーの追加
設定 → キーボード → ショートカット でショートカットを追加します
名前は OCR
コマンドは bash /home/{Username}/Documents/OCR/ocr.sh
ショートカットキーは Ctrl + Print Screen
テスト
Ctrl + Print Screen でスクリーンショットを撮り、Ctrl + V で貼り付けると、認識された文字が表示されます。
