【解決】画面にOCRをかけて文字を抽出したい!(3)

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る
【解決】画面にOCRをかけて文字を抽出したい!(3) アイキャッチ図版

前回の記事【解決】画面にOCRをかけて文字を抽出したい!(2)では,スクリーンショットにGoogle Cloud Vision APIのOCRをかけてテキストを取り出しました。もうこの時点で大した手直しが必要ないほど認識精度が高く,日常的なテキスト入力を高速化してくれます。それに最近は,Google レンズのアプリやmacOS自体が画像からテキストを取り出す機能を備えていますね。

しかし,最近はMicrosoft Azureの画像認識(Computer Vision API)がすごいと噂です。特に日本語の手書き文字認識に強いとか。

せっかくなのでそのすごいAPIを呼び出すものを紹介します。ただし,今回もAPI Key(利用者パスワードみたいなもの)を自力で取れるかたが対象です。我こそはという方は続きをどうぞ。

Microsoft AzureのComputer Vision APIとは

Microsoftが提供している画像分析サービスです。画像の内容を認識して「これは花だ」と分類したり,「ここが顔だ」という情報を取得したりできます。今回はテキスト検出機能を利用して文字データを取り出します。

Azureのテキスト検出は似たような項目やバージョンがたくさんあって迷います。2023年3月2日時点で最新の,Image Analysis のバージョン 4.0 プレビューを利用することにしましょう。[画像分析]カテゴリの[テキストの読み取り(プレビュー)]です。[光学的文字認識(OCR)]でなく。

このAPIは,月5,000回まで無料のFreeプランと,月あたり1,000回ごとに課金されるStandardプランに別れています。Freeプランと課金プランは最初から別々に存在していて自動移行しないようです。課金プランは使う機能の種類ごとに価格が異なり,テキスト検出がどれにあてはまるかちょっとよくわかりません。まあ高くても1,000回ごとに1.5USDですし,自己責任で使いましょう。月5,000回の無料枠は嬉しいですね!

いずれにせよ,サービスはあっという間に仕様が変わります。利用する場合は自身で常に最新の情報をご確認ください(料金表料金計算ツール)。

AzureのComputer Vision APIを使えるようにする

APIを使うためには,Microsoft Azureのアカウント(Azure サブスクリプション)を作成し,クレジットカードやデビットカードを登録する必要があります。

アカウントを作成したら,管理画面でComputer Visionリソースを作り,キー 1エンドポイントを取ってきます。Googleのときはキー1つだけで済みましたが,Azureでは呼び出しに2つの情報を使うわけです。

この記事で細かい申し込み手順は解説しません。次の記事がわかりやすかったので,参考にしながら手続きをしてください。申し込むサービス名はComputer Visionです。

スクリーンショット撮影&API呼び出しスクリプト「shotOCR」を使えるようにする

まずはこちらのファイルをダウンロードしてください。スクリプトが入っています。

ここからKeyboard Maestroを利用中のかたと,素のmacを使うかたで手順が分かれます。Keyboard Maestroがなければ素のmacを使う場合へ移動してください。

Keyboard Maestroを利用している場合

あなたはちょっと楽ができます。shotOCR.zipがダウンロードしたファイル(sttk3-shotOCR3.zip)に入っているので,Keyboard Maestroで開いてください。専用のThird Party Plug In「shotOCR」がインストールされます。

インストールされたかどうかは,次のメニューの存在で確かめてください。

Edit > Insert Action > Third Party Plug In > shotOCR

インストールしたら,それを実行するマクロを作ってください。入力欄はそれぞれ次の値を指定します。

項目指定値
API typeazure
API keyAzureで取得したキー 1
EndpointAzureで取得したエンドポイント
Timeout seconds20などの数値(API呼び出しを諦めるまでの秒数。省略可能。初期設定20)

指定すると次のような見た目になります。これで使用可能になりました。

shotOCRのKeyboard Maestroマクロの見た目 画像

素のmacを使う場合

shotOCRをAutomatorのクイックアクションとして使えるようにします。筆者は少し古いmacOS 11を使っているので,現在と見た目や方式が異なるかもしれません。より新しいバージョンを使用中のかたは適宜アレンジしながら進めてください。

sttk3-shotOCR3.zipの中に,do_OCR.scptshotOCR.workflowが入っています。そのshotOCR.workflow内のソースコードを編集する必要があります。FinderでshotOCR.workflowを選択し,右クリックなどからAutomator.appで開いてください(ダブルクリックはしない)。

shotOCR.workflowは,中でdo_OCR.scptを呼び出す仕組みです。なので,変数script_pathにdo_OCR.scptファイルのパス(所在地)を入力します。api_keyendpointも書いて指定します。

下の表に従って入力してください。

変数名指定値
script_pathdo_OCR.scptのパス
api_typeazure
api_keyAzureで取得したキー 1
endpointAzureで取得したエンドポイント

指定すると次のような見た目になります。

shotOCR.workflowのAppleScriptソースコードの書き換える部分 画像

shotOCR.workflowを保存し,Automator.appは閉じてください。それからFinderでダブルクリックするなどしてshotOCR.workflowを開き,インストールします。

Automatorクイックアクションをインストールするダイアログ 画像

これで使用可能になりました。アプリケーションメニューのサービスの中にshotOCRが現れます。

使いかた

shotOCRを実行するとスクリーンショットが起動します。撮る領域を指定してください。数秒待つと文字認識が終わり,クリップボードに文字が入ります。

なんて優秀なんでしょうか!

Microsoft AzureとGoogle Cloud Platform(GCP)のOCRを比べてどう?

Azureは日本語の手書きが得意と評判ですが,Googleも手書きに対応していて精度も高いです。拮抗しています。

しいて言えば,Azureには次のような利点がありました。

  1. スクリーンショットの寸法が大きくても成功する
  2. 動作が速い
  3. 無料枠が多い

※ 1, 2については筆者のプログラムの書きかたで差がついているかもしれません。GCPでは画像をbase64の文字列にして渡すところにボトルネックがあるように見えます。

結論:どちらもすごいので好きなほうを使ってください!

ちなみにGCPも呼び出せます

Google Cloud Platformを呼び出したい場合,shotOCRに渡す値を変更します。エンドポイントは無視するので,空にするか放っておいてください。

Keyboard Maestroを利用している場合

項目指定値
API typegcp
API keyGoogle Cloud Platformで取得したAPI Key
Endpoint
Timeout seconds20などの数値(API呼び出しを諦めるまでの秒数。省略可能。初期設定20)

素のmacを使う場合

変数名指定値
script_pathdo_OCR.scptのパス
api_typegcp
api_keyGoogle Cloud Platformで取得したAPI Key
endpoint

作者に感謝を伝えたい!

Buy me a coffeeは、クレジットカード払いなどでクリエイターにコーヒーをおごれるサービスです。ツール・情報が役に立った! 感謝の気持ちを表現したい! というかた、おごっていただけましたら嬉しいです☕️

これでまた少し仕事が速くなりました。今日もさっさと仕事を切り上げて好きなことをしましょう!

シリーズ記事:

コードはこちら。

このサイトで配布しているスクリプトやその他のファイルを,無断で転載・配布・販売することを禁じます。
それらの使用により生じたあらゆる損害について,私どもは責任を負いません。
スクリプトやファイルのダウンロードを行った時点で,上記の規定に同意したとみなします。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

広告

コメントを残す