OCR・スキャン・業務自動化の技術についてのまとめ
目的
これまでは人間が目で見てデータ入力していた作業を、スキャンしてプログラムで入力する業務自動化の技術について実際のところどうなの?っていう疑問を解消するための記事です。エンジニアとビジネスの2つの視点から、自分のビジネスで使えるかどうかの役に立てれば幸いです。
背景
非定型の日本語帳票をスキャンして自動的に処理するプロジェクトをやりました。
スキャンして入力を自動化する技術とは
人間がやっていたデータ入力の作業を細分化すると、目で見たものを脳で判断して手で入力する3つの作業に分かれます。これをテクノロジーに変換すると別に新しい技術でもなんでもなく以下の通りになります。
- 目=スキャナとOCR技術
- 脳=データ抽出技術
- 手=クライアント(ブラウザ)操作自動化技術
プロジェクトにおいて問題になるのは「OCR技術の画像処理」と「キーワード抽出の開発工数」の2つです。他はすでに解決済みの課題なのでなんとかなります。
スキャナとOCR技術
OCR精度99%の嘘
OCRで文字を識別することは約99%の精度で可能です。ここがよく騙されるポイントですが、エンジニアとして言わせてもらうと完璧にキレイな画像データで99%になるということです。決してJPG画像を2〜3回保存しなおしてもやもやしている画像データで99%の精度が出るということではありません。ここがすごく大事で、僕がやっていたプロジェクトもFAXされて劣化したものからOCRしなければならない状況で、実際50%の精度もありませんでした。なぜならFAXの標準のdpi*1は100dpiとか200dpiでかなり劣化してしまいます。
参考:
世界No1のOCR
OCRソフト|FineReader 12|読み取り精度世界No1の OCR ソフトウェア
名刺のスキャンとクラウド管理サービスSansanの資料
FAXのような低解像度画像データは難しい
FAXのような低解像度のデータをいかに高精度にOCRさせるかは画像処理技術にかかっています。具体的にいうと文字とそうでないものをピクセル単位で取り除き、OCRしやすい画像データを作ることに成功するかどうか分かれます。
一般的な画像補正(精度は劇的に改善しないけど・・・)
- 傾き補正
- 用紙方向補正
- ノイズ補正
- 歪み補正
- 手ブレ補正
- 色彩補正
- 背景色補正
でも、本当に必要な画像処理は「人間と同じように必要な情報以外のピクセルデータを無視する技術」でまだまだ解決されていない問題の1つです。あのGoogleでも日本語OCRの精度はまだまだです。
Googleドキュメントに200dpiの帳票データをOCRさせた結果
新しいGoogleドライブで画像やPDFをOCRにかける方法 | 経験知
本は99.9%の精度でOCR出来る
本のようにキレイな紙の上に整ったフォントであればOCR精度は99%近くになります。しかし、実際ビジネスの現場で問題になっている紙は処理している時に汚れるし、手書きだったり、非定型だからこそ人間がやっているということが多々ありますよね。
健康診断データの入力業務なんかは手書きでも自動化できる
ここまで出来ない出来ない言ってきたのですが、ここ数年でディープラーニングが盛り上がって手書き文字の識別精度が解決された影響で手書きでも定形帳票であれば自動化できるようになりました。AI insideなんかを使ってOCRをした結果を元に自動的に入力させる先行事例もあります。
データを抽出する技術
プログラムを書けばOCRした文字データから欲しいデータを抽出することができますが結構難しいです。そこで使えるのがBPM*2製品などに付いているスキャンしたデータをかんたんに抽出できるソフトウェアがあります。Robotic Process Automationとか言われている領域で日本製品ではないためちょっと敷居は高いです。
Forms Processing Solution - OCR, OMR, ICR, Barcode and PDF Capture | Lexmark United States
コファックス (Kofax) | 情報キャプチャ、ビジネスプロセス管理、およびダイナミック案件管理ソフトウェアのパワフルな組み合わせ
Scanning Software Features - Document Capture Solution - OCR Scanner
データ抽出の開発は2種類
定形帳票と非定形帳票の2種類で全然難易度が変わるので、開発コストも大きく変わります。定形帳票であれば場所は特定できているので、あとはOCR結果を取ってきてフォーマットするだけなのでノンコーディングでもできるため安価で平易です。非定形帳票の場合は、キーワードから場所を特定したり、その近くの文字列から結果を取るとか、単位違いや装飾フォントなんかを全部ロジックで組み立てて高い精度が出るようにチューニングしないといけないため難易度が高く高価です。具体的な金額で言うと、定形帳票は1人月=100万程度ですが、非定形帳票はスクラッチ開発とほぼ同じなので10人月=1000万とか軽く10倍以上の金額差になります。
定形帳票に出来れば開発コストは安い
開発コストが違いすぎるので、非定形で行っている業務が定形にできないかはまず考慮すべき最初のステップです。もしくはパターン対応して、ある程度定形に落とし込むアプローチも効果的な場合があります。
データ抽出が出来ても人間がチェックする工数は残る
いくら自動的に入力ができても人間がチェックする工数は残ります。というのもスキャンもデータ抽出ロジックも100%ミスがないことはないので必ず人間がチェックします。実際の業務でもダブルチェックするのは当たり前なので品質を担保したい場合は避けられないコストと言えるので頭の片隅にはおいておく必要があります。このチェック工数を最小限にするにはUIの再定義とか別のコストがかかるので要注意。
クライアント(ブラウザ)操作技術
エンジニアがよく知っているブラウザテスト自動ツールといえば「Selenium」ですが、ブラウザ操作の自動化は歴史が古くだいたいどんなクライアントでも自動化させることが可能です。Windowsアプリケーションであっても、ブラウザであっても自動化ソリューションは豊富にあります。問題は自動化する手順を人間が書くのが楽かどうかだけです。
この記事を見れば非エンジニアでも具体的にどういう技術なのかの理解が深まるとおもいます。
5分でわかるSelenium IDEの使い方 - Qiita
スキャンの方でも出てきたKofaxなんかはノンコーディングでブラウザ操作が自動化できるKapowというソフトも持っています。
http://www.kofax.jp/data-integration/
まとめ
非定形・400〜600dpiのキレイな状態でスキャンできる場合は自動化が実現可能になる。画像データの解像度を担保出来ない場合は事前の画像処理技術なしに自動化は技術的に不可能である。非定形の場合はスクラッチ開発と同様のコストがかかってくるので自動化に数億レベルのメリットが有る場合に自動化の選択肢になる。一方、定形の場合はノンコーディングで小さく始められるため数百万円の規模でも十分にペイできる。