WorkFusion RPA ExpressでOCRを自動化してみた

# はじめに
エンジニア？アナリスト？サイエンティスト？歴5ヶ月めの新卒社員が最近学んだことをちょっとずつまとめてみたもの。11回目！！前回、前々回と統計学関係だったりデータを取り扱う関係の記事を連続させて書いてきたので、ちょっと今日は趣向を凝らしてRPAを実際に触ってみた体験記にしてみようと思います^^

これまでに書いた記事の最新3回分はこちら↓
[第8弾](https://qiita.com/icchy_sh33p/items/82f2bc7d789b74110f7b)
[第9弾](https://qiita.com/icchy_sh33p/items/2103ee9607244aba73c7)
[第10弾](https://qiita.com/icchy_sh33p/items/5cae50134d0e3e3e455a)

# やってみようと思った理由
- オートメーション化が進んだことで、自動化できるタスクが増えて工数を削減→その分の浮いた工数をほかの業務に回したいというニーズが社会的に高まってきたから
- 純粋に今流行りのRPAの利便性を体感してみたかったから、どんなことができるのか触って確認してみたかった

# OCRとは？
- OCR・・・Optical Character Recognition(Reader)／光学的文字認識のことをさす。簡単にいうと活字のイメージデータを文字認識して、テキストデータに変換する機能。

## OCRを使用することによるメリット
- 紙媒体で保管していたもののデータ移行が効率的→人の手で行うよりも、文字認識で行うことにより一度に取り扱う情報量が多くなるため時間が短縮可能
- 保管スペースを少なくすることができる→もともと紙で保管していたものが電子媒体上での保管となるため、物理的な場所の確保の必要性を少ない範囲にすることが可能に
- 必要な情報の洗い出し、編集、利用ができる→電子媒体での保管により、いちいち手作業でひとつひとつ行わなければならなかったものがPC内ですぐ抽出できるように

## OCR実行時の注意点
- OCRで処理した結果がそのときの設定によって影響を受けやすい（読み取りの解像度、画像として認識するもとの原稿の状態など）ため、それに合わせた調整をする必要がある
- 領域分割を自動でするものを使用する場合、縦書きと横書きが混在すると領域の判別ができなくなってしまう可能性がある
- 使用するものの認識可能な言語の設定によって読み取り可能な言語が異なるため、事前に使用前に確認が必要

Work Fusion RPA ExpressにおけるOCRの位置づけとしては、PDFや画像、htmlなどの電子ファイルからデータを入手することが可能な機能とのこと。

# 実際にRobotを作成してみた
## 参考にしたチュートリアル動画
- YouTubeにWorkFusionが[公式としてあげている動画](https://www.youtube.com/watch?v=ennVBM0AJqA)をもとに作成。
- 今回は、WorkFusionが出しているMouse Clickの説明書PDFからActionの種類の名前を文字認識、テキストデータに変換するRobotを作成する。

## 作成手順
![](https://i.imgur.com/3wrU4pd.png)
　
- 上の画面が完成したRobotのStudio画面（簡単にいうと編集画面）。この番号が振られたActionでどのようなことがされているかというのは、以下の通り。
    - 1. 『Mouse Click』でデスクトップ上の編集するデータを選択するよう、指示
    - 2. 『OCR』でデータの読み取る箇所を設定
    - 3. 『Launch Application』で読み取った結果を入れるデータを設定
    - 4. 『Enter keystrokes』でデータに打ち込む内容を決定、打ち込みの指示を出す
    - 5. 『Enter keystrokes』でEnterキーを再度押すように指示

下で詳細について、記載。

### 0. OCRエンジンを起動
 ![](https://i.imgur.com/W2dEW99.jpg)

### 1. 『Mouse Click』でデスクトップ上の編集するデータを選択するよう、指示
- クリックの詳細を設定
    - 押すボタンはButton：項目で『Left Button』を選択
    - クリック方法はType:項目で『Double Click』を選択
- クリックする対象の設定
    - 　Targetを『Image』に設定、『Capture New Image』で該当するファイルを画面をキャプチャーして登録
- 読み取ったものを入れる変数の箱を設定
    - 画面上『Recorder Variables』を開く
    - データの名前をNameカラムで、データ型をTypeカラムで設定

### 2. 『OCR』でデータの読み取る箇所を設定
- あらかじめ編集するデータを開いておく
- 『Capture New Image』で読み取りたい範囲を選択、『Anchor Region』と『Capture Region』を調整して完了したらOKを選択
    - Anchor Region・・・ふたつ以上の文書から文字認識、テキストデータへの変換をおこなうにあたって、文書を変えても変わることのない、キャプチャーする範囲を見つけるための目印（参照点）として設定された範囲
    - Capture Region・・・実際にキャプチャーされるデータの範囲
    - 設定画面はこんな感じ↓
    ![](https://i.imgur.com/akB0AhY.png)

- 『Put OCR result into Variable』で読み取ったものをどの変数に入れるのか指定

### 3. 『Launch Application』で読み取った結果を入れるデータを設定
- すでに保存するファイルが存在する場合は『Select』を押して選択
- 新たに作成する場合は、『Exectable File or Command』欄から、使用するファイル、あるいはアプリケーションを拡張子も含めて指定

### 4. 『Enter keystrokes』でデータに打ち込む内容を決定、打ち込みの指示を出す
- 指示の種類→『Text from variable』（変数からテキストを入力）を選択
- input→実際に入力する内容である変数を選択

### 5. 『Enter keystrokes』でEnterキーを再度押すように指示
- 指示の種類→『Key combination』（打ち込みキーの組み合わせ）を選択
- input→『Key to Press』（打つキーの選択）でEnterキーを設定

### 6. 完成
完成したRobotを実行するとこんな感じに。

![](https://i.imgur.com/DI8jXgz.gif)

# 実際に触ってみて
- はじめは設定等に苦戦してしまい作成に時間がかかったが、慣れてしまえば作成そのものにかかる時間はそこまでかからなさそう
- 同じ形式の相当数の文書で必要な項目のみを抽出してまとめたい場合、ひとつこれを作成してしまえば工数削減につながるのでは
- 今回は実行する対象のデータをマウスのクリックを命令することで選択していたが、対象ではないデータも同一画面上にある場合、ほかのデータ指定の方法を使用した方がよさそう→WorkFusionが公式でその方法を紹介している[チュートリアル動画あり](https://www.youtube.com/watch?v=YRWQAnt2Jl8)。
- すでに紙媒体でしか残っていないデータを抽出したい場合は、Microsoft Lensの使用で対応可能。OCRをする目的は果たすことができると判断
- ただ、WorkFusionの場合は**日本語には対応していなさそう**（操作画面が日本語に設定不可だったため、その可能性が高い、**要確認**）だったので、使用するには限界があるのでは

# 感想
RPAを実際に触るっていうのが初めてだったのでなかなかに苦戦したのがちょっと悔しかったなぁ。PowerAppsを触り始めた頃のことを思い出して、改めて新しいことを触って学んでいくって大変だなぁと思いました^^;

それと何より、慣れないことをやると甘いものを身体が求めてしまう！！！今日はちょっと自分にご褒美をあげようかな、とかいつも通り自分を甘やかす方向へと考えがむかっております。明日はまた統計関係のことを書こうかな。

ではでは！！