前回の記事【解決】画面に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回の無料枠は嬉しいですね!
- 料金システム参考:OCR を軽く触ってみた – Qiita
いずれにせよ,サービスはあっという間に仕様が変わります。利用する場合は自身で常に最新の情報をご確認ください(料金表・料金計算ツール)。
AzureのComputer Vision APIを使えるようにする
APIを使うためには,Microsoft Azureのアカウント(Azure サブスクリプション)を作成し,クレジットカードやデビットカードを登録する必要があります。
アカウントを作成したら,管理画面でComputer Visionリソースを作り,キー 1とエンドポイントを取ってきます。Googleのときはキー1つだけで済みましたが,Azureでは呼び出しに2つの情報を使うわけです。
この記事で細かい申し込み手順は解説しません。次の記事がわかりやすかったので,参考にしながら手続きをしてください。申し込むサービス名はComputer Visionです。
スクリーンショット撮影&API呼び出しスクリプト「shotOCR」を使えるようにする
まずはこちらのファイルをダウンロードしてください。スクリプトが入っています。
sttk3-shotOCR3.zip
ここから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 type | azure |
API key | Azureで取得したキー 1 |
Endpoint | Azureで取得したエンドポイント |
Timeout seconds | 20などの数値(API呼び出しを諦めるまでの秒数。省略可能。初期設定20) |
指定すると次のような見た目になります。これで使用可能になりました。
素のmacを使う場合
shotOCRをAutomatorのクイックアクションとして使えるようにします。筆者は少し古いmacOS 11を使っているので,現在と見た目や方式が異なるかもしれません。より新しいバージョンを使用中のかたは適宜アレンジしながら進めてください。
sttk3-shotOCR3.zipの中に,do_OCR.scptとshotOCR.workflowが入っています。そのshotOCR.workflow内のソースコードを編集する必要があります。FinderでshotOCR.workflowを選択し,右クリックなどからAutomator.appで開いてください(ダブルクリックはしない)。
shotOCR.workflowは,中でdo_OCR.scptを呼び出す仕組みです。なので,変数script_pathにdo_OCR.scptファイルのパス(所在地)を入力します。api_keyとendpointも書いて指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
script namespace -- (例)property script_path : "/Users/sttk3/Desktop/do_OCR.scpt" as text property script_path : "文字を消して,ここにscptファイルをドロップ" as text -- Azureの場合は"azure"を,Googleの場合は"gcp"を指定する -- (例)property api_type : "azure" as text property api_type : "azure" as text -- APIキー。Azureの場合は「キー 1」,Googleの場合は「自分の API キー」または「API Key」などと表示されている部分をコピーして下の""の間に入れる -- (例)property api_key : "my-api-key" as text property api_key : "" as text -- Azureの場合は自分のエンドポイントを,Googleの場合は""を指定する -- (例)property endpoint : "https://<リソース名>.cognitiveservices.azure.com/" as text property endpoint : "" as text |
下の表に従って入力してください。
変数名 | 指定値 |
---|---|
script_path | do_OCR.scptのパス |
api_type | azure |
api_key | Azureで取得したキー 1 |
endpoint | Azureで取得したエンドポイント |
指定すると次のような見た目になります。
shotOCR.workflowを保存し,Automator.appは閉じてください。それからFinderでダブルクリックするなどしてshotOCR.workflowを開き,インストールします。
これで使用可能になりました。アプリケーションメニューのサービスの中にshotOCRが現れます。
使いかた
shotOCRを実行するとスクリーンショットが起動します。撮る領域を指定してください。数秒待つと文字認識が終わり,クリップボードに文字が入ります。
なんて優秀なんでしょうか!
Microsoft AzureとGoogle Cloud Platform(GCP)のOCRを比べてどう?
Azureは日本語の手書きが得意と評判ですが,Googleも手書きに対応していて精度も高いです。拮抗しています。
しいて言えば,Azureには次のような利点がありました。
- スクリーンショットの寸法が大きくても成功する
- 動作が速い
- 無料枠が多い
※ 1, 2については筆者のプログラムの書きかたで差がついているかもしれません。GCPでは画像をbase64の文字列にして渡すところにボトルネックがあるように見えます。
結論:どちらもすごいので好きなほうを使ってください!
ちなみにGCPも呼び出せます
Google Cloud Platformを呼び出したい場合,shotOCRに渡す値を変更します。エンドポイントは無視するので,空にするか放っておいてください。
Keyboard Maestroを利用している場合
項目 | 指定値 |
---|---|
API type | gcp |
API key | Google Cloud Platformで取得したAPI Key |
Endpoint | |
Timeout seconds | 20などの数値(API呼び出しを諦めるまでの秒数。省略可能。初期設定20) |
素のmacを使う場合
変数名 | 指定値 |
---|---|
script_path | do_OCR.scptのパス |
api_type | gcp |
api_key | Google Cloud Platformで取得したAPI Key |
endpoint |
作者に感謝を伝えたい!
Buy me a coffeeは、クレジットカード払いなどでクリエイターにコーヒーをおごれるサービスです。ツール・情報が役に立った! 感謝の気持ちを表現したい! というかた、おごっていただけましたら嬉しいです☕️
これでまた少し仕事が速くなりました。今日もさっさと仕事を切り上げて好きなことをしましょう!
シリーズ記事:
- 【解決】画面にOCRをかけて文字を抽出したい!(1)
- 【解決】画面にOCRをかけて文字を抽出したい!(2)
- 【解決】画面にOCRをかけて文字を抽出したい!(3)
コードはこちら。
このサイトで配布しているスクリプトやその他のファイルを,無断で転載・配布・販売することを禁じます。
それらの使用により生じたあらゆる損害について,私どもは責任を負いません。
スクリプトやファイルのダウンロードを行った時点で,上記の規定に同意したとみなします。