前記事
「 人工知能による画像認識で業務効率化にトライ① 」
「 人工知能による画像認識で業務効率化にトライ② 」
の続きになります。
前記事でご紹介した実装の手順は以下の通りです。
①過去の書類を使い人工知能で学習モデルを作成する
②認識させたい画像ファイルを学習済の人工知能に読ませて、格納先を確定する
③画像ファイルを確定したフォルダに自動で移動する
④移動させる際に、台帳(Excel)に取引先名や書類名を自動で転記する
⑤画像ファイルから 契約名・契約番号等を取得し、台帳(Excel)に追記する
前回は①~②までをクリアしましたが少量データでのトライアルでしたので、
今回はボリュームを増やして70社ほどの書類の分類にトライしつつ、
③~⑤までチャレンジしていきたいと思います。
大量の書類を仕分けてみる
まずは大量の書類を対象としてどこまで画像認識の精度が出そうかトライしてみました。
70社分、合計2500枚程度の書類が以下のように格納されています。
(前回までのフォルダ構成と多少変わっております)
※PDF以外にも、PNG、JPG等でも処理可能です
書類の仕分け(分類)を自動で行いたいため、
現時点のフォルダ構成のままAIに学習をさせました。
なお学習時には以下のような点に気を付けています。
- 各社の書類数を合わせる
会社間で枚数がバラバラだと、分類精度が落ちることが考えられます。特に枚数が少ない仕分け先に対する分類精度が落ちやすいようです。
このような場合は枚数が少ない方に合わせるか、枚数が多い方に合わせるためにデータを増幅させる等の処理を行わなければなりません。
書類が2,3枚程度しかない会社も複数あり、その程度の枚数だとうまく学習できない可能性が高いので、今回は枚数が多い方に合わせる方法を採用しました。
- 多少の加工を実施(傾き等)
PDF取得時に、スキャニングの仕方によっては多少の傾きや文字の滲み等が発生することが考えられるので、それを想定して加工しています。
2時間ほどの学習を終え、正答率は85%程度とでました。
色々と画像サイズを変えたり、枚数を変えたりしつつ何度も試しましたが、85%あたりで収束してしまいます。
もう少し精度が出ても良いような気がしたのでその内容を調査してみました。
15%の誤りのパターンを実際に確認してみると、その大多数がグループ会社を持つ企業との取引だということがわかりました。
このような企業の場合、グループ会社間の書類が似通っているケースが多く(例えば社名の一部が違うだけ等)、
この分類がうまくいっていないようです。
ここの精度向上は難しそうなので、いったん保留にします。
上記の誤りパターンを除けば正答率95%程度に収束し、改めてAI(ディープラーニング)の精度の高さを感じることが出来ました。
ただし、やはり正答率は100%ではないので、実際に使う際には目検することが必要になるだろうと感じました。
仕分けの自動化処理を実現してみる
目検が必要となれば、書類を実際に見ながら処理をしなければなりません。
そこで、実業務で利用することを想定し、以下のような利用方法を考えてみました。
a.まずは事前準備(学習)を実施しておきます。
b.自動で仕分けを行う対象書類(新たに顧客から届いた書類)を所定のフォルダに格納します。
c.学習済み仕分け情報を引込み、項番bで準備した書類とマッチングし、どの顧客の書類かを自動取得します。
なお、自動取得した情報は目検できるような仕組みにします。
d.書類に記載されている必要な項目(業務名や金額、日付項目等)をOCRで引き込みます。
e.最後に、OCRで取得した項目をExcelに自動転記し、書類を特定のフォルダに自動格納させます。
処理の流れを絵にすると以下のようなイメージになります。
これらを実現するには、上記の絵にも登場する「仕分けツール」のようなGUIツールが一つあると便利そうだったので作成しました。
「仕分けツール」自体の機能は以下の通りです。
※画面実装は、Python標準のGUIパッケージ’Tkinter’を使っています。
それでは実際動かしてみます。
事前準備(学習)済み情報を読み込んだ書類とマッチングさせた結果、以下のように「顧客名」と「格納先フォルダ」が確定します。
「顧客名」が’ABC株式会社’、「格納フォルダ」もABC株式会社用のものとなっております。これはAIによる自動仕分け結果です。
画面左半分に実際の書類が表示されていますので、自動仕分け結果が正しいか否かを目検することが出来ます。
誤っている場合は手打ちで訂正することも可能です。
次にOCR機能を試してみます。
OCRにはGoogleのサービス「Google Cloud Vision API」を利用しています。
取得したい箇所をマウス操作で範囲選択して「OCR」ボタンを押下。
上手く文字変換できました。
その他の項目も同様に取得していきます。
時には書類に手書きで補記することもあるでしょう。
そんな手書き文字もよほど崩れていない限り取得可能です。
次に「Save」ボタンを押下しOCRで取得した情報をExcelに自動転記します。
ボタン一つで転記されました。
あとは「Transfer」ボタンを押下して書類を「格納フォルダ」に移動させて終了です。
学習時には多少の時間はかかりますが、それ以降の書類の仕分けやOCRは一瞬で処理が終わります。
これもAIの特徴の一つですね。
まとめ
当初実現したかったことは一通り実現できたと感じます。
しかしながら、AIによる書類仕分け精度はもう少し向上させる余地があるかと感じています。
特にうまくいかなかったグループ会社間の仕分けについては、
もう少し局所的に判断をさせる等(書類の中の社名が記載されているあたりを切り取って分類をさせる等)により、精度の向上は見込めると感じます。
この課題は次の機会にトライしてみたいと思います。
ただし、上記課題をクリアしたとしても、精度が100%になることは恐らくなく、
どうしても目検する必要が出てくるかと思います。
今回作った「仕分けツール」のようなGUIツールで目検しつつ、自動化できるところは自動化していくことが、
誤りなく効率的に作業を進める為の最適解なのかなと感じます。