日本語OCRをつかう

PowerAutomate Desktopには英語、ドイツ語、スペイン語、フランス語、イタリア語のOCRエンジンがはじめから含まれている。日本語は含まれていないので日本語の文章のOCRを実行するためには追加の対応が必要となる。Tesseract OCRを導入することがひとつの方法だ。そのためにはTesseract OCRをPCにインストールする必要がある。無料です。インストール方法等については別のサイトに詳しくあるので省略してPower Automate Desktop上の設定内容のみご紹介。

アクション「OCRを使ってテキストを抽出」にて以下のように設定する。言語データ パスは標準的にインストールするとおそらくこのパスになると思われる。Enjoy!

 

・他の言語を使う:(オンにする)

言語コード:jpn

・言語データ パス:C:\Program Files\Tesseract-OCR\tessdata

f:id:yujihb:20211021011652j:plain

 

フローが重くなる原因

エレベーターに乗ったときは行き先階のボタンを押す前に閉じるボタンを押そう。これにより0.5秒ほど時間を削減できる。10回乗ったらなんと5秒も削減できる。エレベーターに乗るときの時短ハック!

さて、フローを起動したときには毎回ダウンロードをしているのでフローのサイズが大きいと実行まで時間がかかることとなる。50MBくらいを超えてくると開始するまで10秒以上かかったりしてかなり遅く、せっかくの時短ハックで得られた時間を浪費してしまう。

フローが重くなる原因はWebオートメーションやUIオートメーションで使うUI要素がフローにたくさん含まれていることだ。フロー上のアクションの数が多いと重そうにみえるが実はアクションの数自体はあまりサイズに寄与しない。またRun Desktop Flowのアクションにより別のフローを含んでいる場合にはその別のフローもダウンロードしているので、Run Desktop Flowで重いフローを呼び出していればやはり元のフローも重くなる。同じくあくまでサイズが問題なのでRun Desktop Flowのアクションが多いこと自体はあまり寄与しない。

以下のようにアクションをコピーしてメモ帳などに貼り付けてみればサイズに大きく寄与するアクションがどれかがわかる。

アクションがたくさんあるフローの例

アクションがたくさんあってもロジックが複雑であってもそれによってサイズが肥大化することはない。これはこれでメンテナンス性が低いので再構成したほうがよい。

f:id:yujihb:20211023183742j:plain

アクションの中身の比較

以下アクション3つのうちで一つだけ異常にサイズが大きいものがあります。

f:id:yujihb:20211023184002j:plain

1つ目と2つ目のアクションをコピーしてメモ帳に貼り付けると、アクションに設定したとおりの内容がRobin言語で書かれていることがわかる。想定通りの結果だ。

f:id:yujihb:20211023184103j:plain

3つ目のアクションをコピーしてメモ帳に貼り付けると、Webページのボタンを押すだけのつもりが中にはとんでもない量の文字が入っている。メモ帳が落ちそうである。アクション一行だけでこの量は想定外だ。"ScreenShot"という行の下に画像を表すと思われる文字が大量にある。これはUI要素を指定しているためだ。

f:id:yujihb:20211023193409j:plain

Webページのボタンを押すなどのUI要素を利用するアクションを削減することでサイズを削減できるのかもしれない。しかしUI要素はフローに必要不可欠なので使わざるを得ないというジレンマがある。小さなサイズで必要なアクションを含められるような最適な構成方法はあるのだろうか。つづく。