Linux デスクトップ向け、画像からテキストをコピーする「TextSnatcher」
(github.com/RajSolai)- TextSnatcherは、Linuxで画像内のテキストをすばやくコピーするためのOCRアプリで、画像をドラッグして文字認識を行い、結果を貼り付けられる
- 主な機能は、多言語対応、画像からのテキストコピー、任意の画像上でドラッグしてから貼り付け、すばやく簡単に使える操作性
- 文字認識には Tesseract OCR 4.x を使用し、TesseractドキュメントとTesseractプロジェクトへのリンクも提供
- 配布は Flathub と elementary OS AppCenter を通じて提供され、直接ビルドする場合はMesonとNinjaベースのインストール手順を使う
- 実行にはscrot、tesseract-ocr、Tesseract言語データが必要で、現在プロジェクトは来月、アップデートと修正を伴って戻ってくる予定だと案内している
TextSnatcherができること
- TextSnatcherは、画像からテキストをコピーし、数秒以内にOCR処理を行うLinux向けアプリ
- ユーザーは画像上をドラッグしてテキストをコピーし、貼り付けられる
- 提供機能:
-
多言語対応
- ドラッグで画像からテキストをコピー
- 任意の画像上でドラッグした後に貼り付け
- すばやく簡単に使える操作性
-
OCRエンジンと関連プロジェクト
- TextSnatcherは文字認識に Tesseract OCR 4.x を使用
- 関連資料として Tesseractドキュメント と Tesseract-Project を案内
インストールと配布経路
依存関係とビルド
- 実行時に必要なランタイム依存関係:
- scrot
- tesseract-ocr
- Tesseract言語データ
- ArchリポジトリとDebianリポジトリへのリンクを提供
- ビルド時に必要なビルドタイム依存関係:
- granite
- gtk+-3.0
- gobject-2.0
- gdk-pixbuf-2.0
- libhandy-1
- libportal-0.5
- 直接ビルドして実行する場合は、リポジトリをクローンした後、Mesonのビルドディレクトリを作成し、Ninjaでインストールしてから
com.github.rajsolai.textsnatcherを実行する流れ
開発状況と出典
- プロジェクトにはValaで作られたことを示すバッジが含まれている
- READMEには、現在Linux PC購入資金を集めている最中で、まもなく来月、アップデートと修正を伴ってプロジェクトが戻ってくる予定だと書かれている
- インスピレーションとして挙げられているのは、PlannerのREADME、Developのアプリケーション構造、macOSアプリTextSniper
1件のコメント
Hacker News の意見
Dibby053 と同じようなスクリプトを使っていて、Stack Overflow から持ってきたあと、KDE/GNOME、Wayland/X11 で動くように少し直し、現在の状態を通知で表示するようにした
X11/Wayland の判別はまだ自分ではテストしていないが、試して結果を教えてくれてもよい
spectacleをバックグラウンドモードで実行するようにしたgrim、slurp、mogrify、tesseract、wl-copyをつなげ、fuzzelで OCR 言語を選ぶ方式dmenuで言語を選び、maim -us | tesseract --dpi 145 -l eng+${lang} - - | xsel -biのように処理するhttps://news.ycombinator.com/item?id=33704483#33705272
trap "cleanup '$SCR_IMG'" EXITで ShellCheck が誤検知を出すこともあるが、この場合は完全に的外れというわけではないtrapに渡したコマンドは通常評価されるため変数展開が起き、trap 'cleanup "$SCR_IMG"' EXITのほうがより安全に動作する新しい Bash なら
trap "cleanup ${SCR_IMG@Q}" EXITも選択肢bash -c 'flameshot gui -s -r | tesseract - - | gxmessage -title "Decoded Data" -fn "Consolas 12" -wrap -geometry 640x480 -file -'をバインドして使っているSuper+O を押して OCR したい領域をドラッグすると、キャプチャされたテキストがすぐポップアップダイアログに表示される
以前どこかからコピーしたスクリプトが、この作業をかなりうまくやってくれる
scrotで領域をキャプチャし、mogrifyで白黒化・拡大の前処理をしたあと、tesseractでテキストを抽出してxselでクリップボードに入れ、通知まで出す方式scrotより maim のほうが好み--nodragオプションのおかげで、トラックパッドで領域選択するときに一度クリックしてカーソルを移動し、もう一度クリックすればよいので便利maim -s --nodrag --quality=10 $IMG.pngの10はscrotの100に相当する拡大前処理でも大きな違いは感じられず、どんな前処理なら良くなるのかもよく分からない
TextSnatcher がこれより改善している点があるのか気になるが、GitHub ページは不透明
Unix と Windows の間で暮らす同僚たちには申し訳ない
trap "rm $IMG*" EXITについては https://www.shellcheck.net/wiki/SC2064 を参照するとよいmktemp -dを使い、ディレクトリを再帰削除するほうがよいボタン付きのウィンドウを押さなければならないより、スクリプトをショートカットキーにバインドするほうがずっと良い
Windows を使う同僚の一般庶民向けに言うと、公式の Microsoft PowerToys アドオンにもこの機能がある
標準のスクリーンショットツールにも入ったが、個人的には PowerToys の単一キーボードショートカットのほうが使いやすい
https://github.com/microsoft/PowerToys
WIN+SHIFT+S を押せばよく、“Text actions” アイコンがなければ Windows Store で最新版に更新すればよい
ずっと前から気になっていたが、Tesseract が本当にこの分野の最新・最高水準の解なのか分からない
体感ではかなり物足りなく、2019年ごろには、コンピュータビジョンの進歩を考えればテキスト認識は事実上解決済みの問題であるべきだと感じていた
人間よりうまくできるはずに思えるが、低解像度のレシートスキャンですら、特に英語でない場合は正確に変換できなかった
自分の使い方が悪いだけかもしれない
具体的にどのような使い方をしているのか気になる
Tesseract がますます頻繁に言及されるようになっているのが見える
10〜15年前にスキャンした科学論文で使ってみたときは結果が残念で、手作業の後処理は自分でタイプするより大幅に少ないわけではなかった
そのため自分にとって Tesseract は「試す価値なし」の同義語になったが、時間がたって良くなっている可能性もあるので、また試してみる価値はありそう
変なフォントや悪い画質まで含む汎用認識では、EasyOCR のほうがはるかに良い結果を出した
内部的には Tesseract を使っているが、本当に優秀
15年前は、まだましな結果を得るにはかなり前処理が必要だったが、今は前処理なしでも良い結果が得られている
実際に使ってみたが、かなりうまく動作する
Flatpakアプリなので完全に動作するにはデスクトップポータルが必要だが、既存の
xdg-desktop-portal-wlr構成では追加設定なしでうまく動いたScreenshot APIをサポートする
xdg-desktop-portal設定があるX11またはWayland環境なら、問題なく動作しそう結果にはばらつきがあるが悪くはなく、きれいに読めるテキストなら空白の問題やたまの誤認識程度なので、エラーダイアログのような場所からテキストをコピーするときに役立つかもしれない
ただしLinuxではそもそもエラーダイアログのテキストを選択できる場合のほうが多く、Windowsの標準MessageBoxはCtrl+Cに反応する
似たアプリとしてFrogを使っているが、とても順調に使えている
https://getfrog.app
.debもなく、brewもないmacOSには、Previewで文書を開いてテキスト選択を試す以上のことをしてくれるユーティリティがある
https://github.com/schappim/macOCR
作者が好きだ
その後、右上のゴミ箱で画像を削除すればよく、Cmd-Aも動作する
このコメントで試した例はここにある: https://imgur.com/a/q0NvcS6
iOSでは、アクションボタンに紐づけたショートカットで似た解決策を作って使っている
一部のアプリではテキストのコピーが簡単でなかったり外国語だったりすることがあるので、スクリーンショットを撮ってテキストを抽出し、原文の言語を自動検出して英語に翻訳し、原文と翻訳文をQuick Viewに表示して選択・コピーできるようにしている
実装例はここで試せる: https://www.icloud.com/shortcuts/f420d24e4960415da1a43f230abfce39
ちなみに最新のiOSでは、写真アプリで写真を開き、写真内のテキストを指で選択してコピーすることもできる
画像から共有ボタンを押して共有シートで使ってみたところ動作したが、すでに画像を渡している状況ならスクリーンショットの手順は重複している
「Linux Desktop向け」とは言うが、これはFlatpakであり、すべてのLinuxディストリビューションがFlatpakを標準提供しているわけではない
Fedoraの仮想マシンで一度動かしてみる予定で、こういうツールはよく見てきたが、大半はTesseractを活用している
粗かったりノイズの多い画像、文字が湾曲していたり傾いていたりする場合には大きく失敗し、CAPTCHAを解いてはくれない
https://tesseract-ocr.github.io/tessdoc/Home.html
正確には、作者があなたのディストリビューション向けパッケージを作っておらず、ほかの誰も時間と意欲を出してパッケージングしていない、という意味に近い
探しているメンテナーは、まさにあなたかもしれない
もし
.debしかなかったなら、Ubuntu/Debian以外では使えないと言えるし、そのほうがはるかに大きな欠点だ