「文字をきれいに読み取る」だけじゃないOCR――freeeに学ぶAI開発で本質的価値を提供する方法

このエントリーをはてなブックマークに追加
会計サービスをはじめ、バックオフィス向けクラウドソフトを提供するfreee。単純作業を効率化し、ユーザーが本質的な仕事に集中できる環境を提供するために、AI技術を駆使したさまざまな取り組みがなされている。

「ユーザーにとって本質的に価値があること(同社では「マジ価値」と呼ばれる)を届けきる」をコミットメントとして掲げる同社の、AI技術を使ったアプローチ方法を連載形式でお届けする。

第2回のテーマはOCR。紙の領収書や、請求書とにらめっこし、その扱いにうんざりしている経営者は少なくないだろう。

これら紙の文書をよりスムースに扱うため、freeeのサービスに実装されている独自のOCR機能を、同社機械学習エンジニアの田中浩之氏に紹介していただく。

はじめに

freeeでは「スモールビジネスを、世界の主役に。」をミッションに掲げ、「アイデアやパッションやスキルがあればだれでも、ビジネスを強くスマートに育てられるプラットフォーム」の実現を目指してサービスの開発および提供をしています。

freeeが提供するサービスの1つである「クラウド会計ソフトfreee(以下、会計freee)」では、日々の経理をラクにしたり、効率的な経理業務を実現していくべく日々改善を重ねています。そのため、会計freeeにはネットバンキングやクレジットカードから自動で明細を同期して記帳を自動化する仕組みや、領収書や請求書といった紙の証憑を画像としてアップロードし、仕訳と紐付けて管理する仕組みが備わっています。

今回は、紙の領収書や請求書といった文書の画像から、記帳する金額や記帳時の勘定科目といった情報を自動で読み取って推測するOCR機能について紹介します。

証憑:しょうひょう。企業内で生起する取引を裏付ける証拠書類のこと(精選版 日本国語大辞典より)

OCRの活用の仕方

freeeでOCR技術が活用されている箇所は大きく分けて2つあります。

1つは、「ファイルボックス」と呼ばれるファイル管理機能です。帳票や領収書を取り込む際に、自動で文書の内容を読み取ります。

スキャナーから連続して領収書を取り込んだりiOS/Androidアプリでカメラ撮影からそのまま画像をアップロードすることで、一旦ファイルボックスに文書を取り込んだ後、それを起点にして取引を登録(記帳)したり、経費精算申請をしたりできます。

スマートフォンアプリでは、文書の自動認識機能もついており、きれいに、かつ効率的に証憑を取り込むことが可能です。

スマホアプリを使って経費精算するときの例。交通費やちょっとした消耗品を買った時などにすぐに使える


連続取引登録画面の例。ファイルボックスに一旦取り込んだ後、まとめて取引を登録することができる

このファイルボックスOCR機能は2014年11月に最初のリリースが行われました。実は、割と歴史のある機能なのです。

2つ目は、通帳データ化及び領収書データ化サービスです。受け取った画像データをもとに人力で明細を入力する代行サービスとなっています。このサービスでは人間が最終的に内容の確認を行ってデータを登録しますが、その作業効率化にOCRや画像処理が活用されています。

本記事では1つ目のファイルボックス機能で使用されているOCRの技術的な部分に関して、簡単な紹介をさせていただきます。

ファイルボックスOCRの技術

freeeのOCRは、意外かもしれませんが(?)社内で開発されたオリジナルのエンジンを搭載しています。初期の頃は既製のOCRエンジンを採用していたのですが、ユーザー価値や届けられるユーザー体験のアイデアを社内で検討した結果、よりシームレスにfreeeのサービスと統合していけるように独自の学習モデルを開発していくことになりました。

以下に処理の流れを記します。

画像の取り込みと前処理

まずはじめに、ユーザーがファイルボックスに画像をアップロードすると、非同期に画像のOCRリクエストが行われ、画像がOCR処理を行っているサーバーに送られます。

OCRサーバー内では、オプションや画像タイプに応じてアップロード画像の前処理が行われます。ファイルボックスは複数の文書を自動で分割するオプションを備えており、文書の認識と画像の正規化はこの前処理部分で行われます。

出典:複数のレシート類を取り込む際のポイント – freee ヘルプセンター

文書の分割はスキャナで取り込むユースケースがほとんどのため、黒背景での分割に特化させてあります(一応、それ以外でもできる場合があるが、高精度は保証していない)。リンク先にあるような取り込み条件であれば、ほぼ100%の精度で文書を分割することができます。

文字認識

次に、文字認識部で文字認識が行われます。この部分が皆さんが通常想像するOCR部分で、画像中の文字の内容と位置の検出が行われます。例えば、数字の1が画像のこの座標にあって、高さと幅はこれくらいだ、といったような情報です。この情報を画像データと同時に利用して後段の項目検出の精度を高めています。

各種項目の検出

文字認識の結果と画像を使って、各種項目の検出を行っていきます。

ここには項目領域推測器、項目のパーサー(機械が認識できる形式に変換するもの、例えば金額なら数値、日時なら年、月、日の情報に変換するものです)、文字認識誤りに対して頑健な項目検出をするための誤り修正機構などが含まれています。

中身を詳細にお話することはできないのですが、Deep Neural Networkベースの学習器を使用しており、画像系を中心にさまざまな分野の論文を参考としたオリジナルのネットワークを使用した分類器になっています。

また、項目によってネットワークを切り替えて複数のモデルを並列に動かしたりといった工夫も行っています。

推測候補の信頼度判定とユーザーへの結果表示

次に、推測候補の信頼度判定を行い、信頼度が高い場合だけ推測結果として保存します。

信頼度が低い場合は誤認を防ぐためにあえて推測結果を捨てます。こうすることで、システムが苦手なパターンだったり、画像が乱れていて読み取りにくかった場合に失敗してしまうケースにおいて、間違った内容で登録されてしまうようなケースを低減させる効果が期待できます。

最後に、OCRサーバーが結果をアプリケーション側に返し、読み取り結果をユーザーに提示します。OCRエンジンと一言にいっても中では結構複雑な処理を行っており、目的に応じてモデルや前処理を組み合わせてユーザーに最適な結果を返せるような工夫をしています。

今後の進化

ファイルボックスOCRエンジンは初期のリリースから6年が経ち、複数のバージョンアップを実施して、スーパーやコンビニ、タクシーといった典型的なレシートで、ある程度整った撮影条件の下での平均認識精度が95%にまで向上しています(※)。

今後は、高精度な項目読み取りを実現することもさることながら、領収書・請求書以外の多様なビジネス文書に広く対応していくことや、スピード感を向上させたり、不便だなと思うところをなくしたりといった、より最適なユーザー体験を感じてもらえるような取り組みも行っていく予定です。

freeeが独自の画像認識エンジンを作っているからこそ届けることができる価値をユーザーの皆様に届けきるべく、通常のOCRの枠にとらわれない機能や仕組みを実現していきたいと思っていますので、この記事を読んで少しでも興味を持ってもらえた方はぜひ無料お試しで一回使ってみてください。

※弊社が収集した評価用データセットによる各項目の平均認識精度

関連記事