0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AutomatorとTesseractを使ってテキスト検索可能な画像ファイルを作る

Last updated at Posted at 2022-02-11

この記事はmacOS Monterey 12.2時点で書かれています。

Spotlightは便利だけど書類をスキャンした画像のテキストまで検索してくれないかなあ…でもGoogle documentとかEvernoteのクラウドなOCRは使いたくないなあ…という動機がありました。
じゃあTesseractを使ってローカルでOCRして、結果を画像ファイルのコメントに書き込めばいいのでは?やってみました。
#Homebrewをインストールする
していなかったらします。
https://brew.sh
指示通りにターミナルに打ち込むだけ。パスを通せと言われるので通します。
#Tesseractをインストールする
していなかったらします。(追記:言語もインストールします)

brew install tesseract
brew install tesseract-lang

#Automatorを使う
なんでAutomatorを使うの?ええと…ファイルにSpotlightコメントを設定するコマンドやAPIが無いっぽいんですよね…Automatorなら出来るはず。

#Automatorからシェルスクリプトを実行する
出来上がりを貼りますね。
スクリーンショット 2022-02-11 13.38.24.png
フォルダアクションにしていますが、アプリケーションでもサービスでもいいはずです。
まずファイルを受け取って、画像かどうかチェックして、変数に入れつつ次のアクションに渡します。
「シェルスクリプトを実行」アクションでTesseractを実行します。

export PATH=$PATH:/opt/homebrew/bin:/opt/homebrew/sbin
for f in "$@"
do
	tesseract "$f" stdout -l jpn+eng
done

Automatorで実行するシェルスクリプトは、ターミナルとは違うその場限りの環境らしいので、最初にパスを通しています。
標準出力に渡すとそれがAutomatorの次のアクションの入力になります。日本語と英語を認識させています。
次のアクションでは読み取り結果を一旦変数に入れて、もう一度さっきのファイルを思い出し、Spotlightコメントを設定するアクションで読み取り結果を設定します。
#実行と注意
image.png
できた。
できたんですが、非常に残念なことにAutomatorは複数ファイルを1つずつ処理する機能がないので…せっかくフォルダアクションにしたのに1つずつファイルを入れないとうまく動きません。このワークフローで複数ファイルを指定すると、全ての読み取り結果テキストを連結して全てのファイルのコメントに設定してしまいます。なんとかならんか

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?