この記事は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からシェルスクリプトを実行する
出来上がりを貼りますね。
フォルダアクションにしていますが、アプリケーションでもサービスでもいいはずです。
まずファイルを受け取って、画像かどうかチェックして、変数に入れつつ次のアクションに渡します。
「シェルスクリプトを実行」アクションでTesseractを実行します。
export PATH=$PATH:/opt/homebrew/bin:/opt/homebrew/sbin
for f in "$@"
do
tesseract "$f" stdout -l jpn+eng
done
Automatorで実行するシェルスクリプトは、ターミナルとは違うその場限りの環境らしいので、最初にパスを通しています。
標準出力に渡すとそれがAutomatorの次のアクションの入力になります。日本語と英語を認識させています。
次のアクションでは読み取り結果を一旦変数に入れて、もう一度さっきのファイルを思い出し、Spotlightコメントを設定するアクションで読み取り結果を設定します。
#実行と注意
できた。
できたんですが、非常に残念なことにAutomatorは複数ファイルを1つずつ処理する機能がないので…せっかくフォルダアクションにしたのに1つずつファイルを入れないとうまく動きません。このワークフローで複数ファイルを指定すると、全ての読み取り結果テキストを連結して全てのファイルのコメントに設定してしまいます。なんとかならんか