【PowerToys】「Text Extractor」OCRで、英語を優先させる方法
この記事では、Windowsで使える便利機能を詰め込んだソフト「Microsoft PowerToys(マイクロソフト・パワートイズ)」の「Text Extractor(テキスト・エクストラクター)」機能で、日本語ではなく、英語を優先させる方法を書きます。
手動で、英語のOCRファイルを入手する必要があります。
「PowerToys」の「Text Extractor」機能は、デフォルトで日本語が優先されるようになっています。これは、日本語テキストを取得する時には便利ですが、英語テキストだと不便です。
試しに、日本語を優先した状態で、「Microsoft PowerToys」というテキストを読み取ってみました。結果は、以下のようになりました。
<!--「Microsoft PowerToys」というテキストを日本語優先で読み取った結果-->
Mic 「 0S0負 PowerToys
「Mic」と「PowerToys」の部分は読み取れましたが、他は正しくありませんでした。テキストコピーできないソフトや、画像上のテキストをクリップボードにコピーできる便利な機能ですが、優先言語以外の取得は精度が悪いです。
僕は、日本語テキストの場合、キー入力したほうが早い時があります。こういったOCRソフトを活用する場面は、大体英語テキストをコピーする時です。僕は、英語が全くできないので、ソフトの英語テキストをコピーして、翻訳したい時に使っています。
そこで、「Text Extractor」の優先言語を「英語」にしてみます。「PowerShell(パワーシェル)」で、インストールするコマンドを実行します。
なお、優先言語を「英語」にすることで、逆に日本語のテキストが認識できなくなります。いちお、切り替えることは可能ですが、本記事は、主に英語テキストを取得するユーザー向けです。英語以外の言語にすることも可能です。
英語のOCR言語パック入手方法
Windowsに標準搭載されている「Windows PowerShell」を管理者として実行します。古いほうではなく、新しい「PowerShell 7」でもOKです。コマンドプロンプトや、通常権限の「PowerShell」だとダメなので注意です。
起動できたら、以下のコマンドをコピペして、Enterで実行します。「en-US」が、英語の言語パックです。
$Capability = Get-WindowsCapability -Online | Where-Object { $_.Name -Like 'Language.OCR*en-US*' }
恐らく、1つ目のコマンドは、特に成功メッセージなどないと思います。勝手に2行目が表示されます。続いて、以下のコマンドを実行します。
$Capability | Add-WindowsCapability -Online
「Operation Running(動作確認中)」という青色背景のメッセージが表示されます。その下に「〇」の進行状況が表示されるので、満タンになるまで待ちます。
下記画像のように、徐々に「〇」の数が増えていきます。僕の環境だと、数分程度かかりました。辛抱強く待ちます。いくら待っても変わらない場合、Enterを押します。場合によっては、画面(進行具合)が更新されるかもしれません。
僕は素人なので分かりませんが、恐らく1つ目のコマンドで英語のOCR言語パックを選択、2つ目のコマンドで、ローカル(PC)内にダウンロードしているんだと思います。
ダウンロードが完了すると、自動的に青色背景のメッセージが消えて、下記画像のように表示されます。
Path :
英語のOCR言語パックを「PowerShell」経由で入手した後のメッセージ
Online : True
RestartNeeded : False
メッセージは理解できませんが、恐らく成功していると思います。
実際にインストールされているか確認する
「Microsoft PowerToys」を起動して、「Text Extractor」ページを開きます。
「優先する言語」のドロップダウンリストを開くと、日本語だけでなく、インストールした「English (United States)」も表示されます。選択することで、優先言語を「英語」に変えられます。
エクスプローラーの以下の場所を開くことで、実際にダウンロードされているか確認できます。
C:\Windows\OCR
インストール前は、「ja-jp」だけでしたが、インストール後は「en-us」フォルダーもあります。
ダウンロードしたけど、「en-us」フォルダーがない場合、別のドライブの「OCR」フォルダーにダウンロードされていないかチェックしましょう。配置する場所は、「C:\Windows\OCR
」です。Dドライブなどではありません。
実際にOCR精度をチェックする
優先言語を「英語」にした上で、冒頭で試した「Microsoft PowerToys」というテキストを再度取得してみます。以下のようになりました。
<!--「Microsoft PowerToys」というテキストを英語優先で読み取った結果-->
Microsoft Power Toys
「PowerToys」の間に、余計な半角空白が入ってしまいましたが、綴り自体は正常に取得できています。やはり、自分が取得したい言語を優先にしたほうが便利です。
逆に、「ナポリタン寿司」という日本語テキストで試してみましたが、そもそも取得できませんでした。いくら範囲選択しても、画面が元に戻らず、クリップボードを見ても、コピーされていませんでした。
日本語を取得したい場合、「Text Extractor」機能を発動した後、文字を選択する前に、画面上の好きな場所を右クリックします。
インストールしている言語パックの切り替え右クリックメニューが表示されるので、「日本語」をチェックします。これで、一時的に優先言語が日本語に切り替わるので、取得したい文章を範囲選択します。
次回は、再び優先言語に設定した言語になります。頻繁に使う言語を優先にして、それ以外は、右クリックから切り替えるようにするといいかなと思います。
英語のOCR言語パックをアンインストールする方法
英語のOCR言語パックが不要になった場合、同じように「Windows PowerShell」を管理者で起動して、削除コマンドを実行します。
インストールする時と同様、2つのコマンドが必要です。まず1つ目は、以下のコマンドです。
$Capability = Get-WindowsCapability -Online | Where-Object { $_.Name -Like 'Language.OCR*en-US*' }
2行目が表示されたら、2つ目のコマンドを実行します。
$Capability | Remove-WindowsCapability -Online
青色背景のメッセージが表示されるので、「〇」がいっぱいになるまで待ちます。すぐに終わります。インストール時と同様、3行くらいのメッセージが表示されればOKです。
「C:\Windows\OCR
」から「en-us」フォルダーが消えます。「Text Extractor(PowerToys)」アプリ画面からも、「English (United States)」がなくなります。
英語以外のOCR言語パックを入手する方法
「PowerShell」で以下のコマンドを実行することで、入手可能なOCR言語パックが一覧表示されます。
Get-WindowsCapability -Online | Where-Object { $_.Name -Like 'Language.OCR*' }
例えば、「Language.OCR~~~ja-JP」は日本語です。「ja-JP」という部分で判別できます。ISO言語コードと国名コードの組み合わせになっています。こちらのサイト様で調べられます。
2023年1月時点で調べた一覧を貼っておきます。今後変わる可能性もあるので、あんまり信用しないでください。
Language.OCR~~~ar-SA~0.0.1.0
Language.OCR~~~bg-BG~0.0.1.0
Language.OCR~~~bs-LATN-BA~0.0.1.0
Language.OCR~~~cs-CZ~0.0.1.0
Language.OCR~~~da-DK~0.0.1.0
Language.OCR~~~de-DE~0.0.1.0
Language.OCR~~~el-GR~0.0.1.0
Language.OCR~~~en-GB~0.0.1.0
Language.OCR~~~en-US~0.0.1.0
Language.OCR~~~es-ES~0.0.1.0
Language.OCR~~~es-MX~0.0.1.0
Language.OCR~~~fi-FI~0.0.1.0
Language.OCR~~~fr-CA~0.0.1.0
Language.OCR~~~fr-FR~0.0.1.0
Language.OCR~~~hr-HR~0.0.1.0
Language.OCR~~~hu-HU~0.0.1.0
Language.OCR~~~it-IT~0.0.1.0
Language.OCR~~~ja-JP~0.0.1.0
Language.OCR~~~ko-KR~0.0.1.0
Language.OCR~~~nb-NO~0.0.1.0
Language.OCR~~~nl-NL~0.0.1.0
Language.OCR~~~pl-PL~0.0.1.0
Language.OCR~~~pt-BR~0.0.1.0
Language.OCR~~~pt-PT~0.0.1.0
Language.OCR~~~ro-RO~0.0.1.0
Language.OCR~~~ru-RU~0.0.1.0
Language.OCR~~~sk-SK~0.0.1.0
Language.OCR~~~sl-SI~0.0.1.0
Language.OCR~~~sr-CYRL-RS~0.0.1.0
Language.OCR~~~sr-LATN-RS~0.0.1.0
Language.OCR~~~sv-SE~0.0.1.0
Language.OCR~~~tr-TR~0.0.1.0
Language.OCR~~~zh-CN~0.0.1.0
Language.OCR~~~zh-HK~0.0.1.0
Language.OCR~~~zh-TW~0.0.1.0
各項目2行目の「State」がインストール状態を表しています。「Installed」がインストールされていて、「NotPresent」が未インストール状態です。デフォルトでは、日本語だけ「Installed」になっています。
上記リストを参考にして、入手したい言語に置き換えたインストールコマンドを実行します。
下記コマンドが、「フランス語のOCR言語パック」の1つ目コマンドですが、この中の「fr-FR」という部分を、ご自身が欲しい言語パックに置き換えます。英語なら、「en-US」にします。
$Capability = Get-WindowsCapability -Online | Where-Object { $_.Name -Like 'Language.OCR*fr-FR*' }
次に2つ目コマンドを実行します。2つ目のコマンドは、どの言語でも共通しています。アンインストールするコマンドと間違えないよう注意です。
$Capability | Add-WindowsCapability -Online
上記画像は、新しい「PowerShell」なので、若干UIが異なります。
フランス語を入手できました。
中国語の場合は、以下になります。2つ目のコマンドは、共通なので省略します。
$Capability = Get-WindowsCapability -Online | Where-Object { $_.Name -Like 'Language.OCR*zh-CN*' }
感想
以上、「Microsoft PowerToys(マイクロソフト・パワートイズ)」の「Text Extractor(テキスト・エクストラクター)」機能に、日本語以外の言語パックを追加する手順でした。
本記事は、以下のMicrosoftの公式ドキュメントを参考にさせていただきました。「PowerToys」、かなり便利です。
参考:PowerToysWindows 用の Text Extractor ユーティリティ | Microsoft Learn