Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LayerXにおける機械学習を活用した請求書OCR機能に関する取り組み / deim2023-...

LayerXにおける機械学習を活用した請求書OCR機能に関する取り組み / deim2023-layerx-ai-ocr

2023年3月7日 DEIM2023 (https://event.dbsj.org/deim2023/) における技術報告の資料です。

題目:『 LayerXにおける機械学習を活用した請求書OCR機能に関する取り組み』
日程:3/7(火)13:30-15:40(4a-8: 画像認識2)
発表者:松村 優也、吉田 陽祐
プログラムリンク:https://deim-management-system.github.io/deim2023_program/index.html#4a-8

LayerX は「働く」に関わる様々な業務プロセスが紙とハンコを中心としたアナログで非効率なものとなっているという課題を、テクノロジーをもとに解決するために複数のプロダクトを開発・運営している。その中のひとつ「バクラク請求書」では、アップロードされた請求書ファイルから自動で必要な情報を抽出しデータ化するOCR機能を提供している。このOCR機能の実現には、画像処理や自然言語処理などの機械学習技術を活用している。本発表では、OCR機能の開発に際してどのように機械学習技術の活用を行なっているのか、どのような技術的課題が存在するのかを紹介する。

Yuya Matsumura

March 07, 2023
Tweet

More Decks by Yuya Matsumura

Other Decks in Programming

Transcript

  1. Confidential © 2023 LayerX Inc. 2 画像を入れてね 自己紹介 松村 優也(Yuya

    Matsumura) - 2018/3 - 京都大学大学院 情報学研究科 修士課程修了 - 現在 - 株式会社LayerX ML/OCR Team Lead - ウォンテッドリー株式会社 技術顧問 - その他、大学にて非常勤講師やスタートアップの技 術支援等 共著 『推薦システム実践入門』 @yu___ya4 @yu-ya4
  2. © 2023 LayerX Inc. 3 会社概要 すべての経済活動を、デジタル化する。 ※ 一部抜粋 会社名

    代表取締役 創業 従業員数 資本金 事業概要 関連会社 お取引先 (一部) 株式会社LayerX(レイヤーエックス) 代表取締役CEO 福島 良典 代表取締役CTO 松本 勇気 2018年 8月1日 149名(2023年1月現在) 86億円(資本準備金含む) バクラク(SaaS)事業、Fintech事業、Privacy Tech事業 三井物産デジタル・アセットマネジメント (三井物産、LayerX、三井住友信託銀行、SMBC日興証券、JA三井リース、イデラキャピタルマネジメントによる合弁会社)
  3. © 2023 LayerX Inc. 5 3つの事業 バクラク事業 企業活動のインフラとなる法人支出管 理(BSM)SaaSを開発・提供 ソフトウェアを駆使したアセットマネジメ

    ント・証券事業を合弁会社にて展開 パーソナルデータの利活用とプライバシー 保護を両立するソリューションの提供 バクラク事業 Fintech事業 PrivacyTech事業
  4. © 2023 LayerX Inc. 6 3つの事業 バクラク事業 企業活動のインフラとなる法人支出管 理(BSM)SaaSを開発・提供 ソフトウェアを駆使したアセットマネジメ

    ント・証券事業を合弁会社にて展開 パーソナルデータの利活用とプライバシー 保護を両立するソリューションの提供 バクラク事業 Fintech事業 PrivacyTech事業
  5. © 2023 LayerX Inc. 7 法人支出管理(BSM)SaaS「バクラク」を展開 * 経費精算のSlack連携は申請内容の通知のみ 稟議・支払申請・経費精算・ワークフロー ・AIが領収書を5秒でデータ化

    ・承認はチャットアプリから ・シームレスな内部統制構築 仕訳・支払処理効率化 ・AIが請求書を5秒でデータ化 ・仕訳データを自動学習、 手入力ゼロへ ・改正電子帳簿保存法に対応 ・利用料無料 ・即時追加発行 ・最大1億円決済可能 法人向けクレジットカード ・無料で始められる ・手入力ゼロで証憑管理 ・改正電子帳簿保存法に対応 帳票保存・ストレージ バクラクでは AI-OCR 機能をはじめ、機械学習がコア技術として活用されています
  6. © 2023 LayerX Inc. 8 本日のテーマ * 経費精算のSlack連携は申請内容の通知のみ 稟議・支払申請・経費精算・ワークフロー ・AIが領収書を5秒でデータ化

    ・承認はチャットアプリから ・シームレスな内部統制構築 仕訳・支払処理効率化 ・AIが請求書を5秒でデータ化 ・仕訳データを自動学習、 手入力ゼロへ ・改正電子帳簿保存法に対応 ・利用料無料 ・即時追加発行 ・最大1億円決済可能 法人向けクレジットカード ・無料で始められる ・手入力ゼロで証憑管理 ・改正電子帳簿保存法に対応 帳票保存・ストレージ 「バクラク請求書」の請求書を自動でデータ化する機能における機械学習活用の取り組み紹介
  7. © 2023 LayerX Inc. 10 解決したい課題 • 請求書に記入されている項目(支払期日や支払金 額、取引先名など)を目視で確認して、ミスなく入 力・管理することはとても負荷の高い仕事

    ◦ 対応する枚数が数十、数百枚と増えるにつ れてミスが起こりやすい ◦ 帳票のフォーマットが多種に渡り読み取る ことが単純に大変 ◦ ミスは許されないためダブルチェック等確 認作業にもコストがかかってしまう 受けとった請求書を手入力でデータ化するという負荷の大きい作業をバクラクにする
  8. © 2023 LayerX Inc. 12 AI-OCR機能の入力と出力 請求書ファイル (画像・PDF) 請求書に記載の 項目ごとの値

    500,000 2021/02/28 株式会社テンプレ 支払期日 支払金額 取引先名 請求書ファイルを入力し、請求書に記載の必要項目ごとの値を出力してユーザーに提示
  9. © 2023 LayerX Inc. 13 AI-OCR機能で解いているタスク 請求書ファイル (画像・PDF) 請求書に記載の 項目ごとの値

    { “bbox”: [{"x": 0.3421, "y": 0.567},...], "word": “2021/2/28” },... 請求書内の 文字と座標 項目推定 文字検出 文字認識 500,000 2021/02/28 株式会社テンプレ 支払期日 支払金額 取引先名 「文字検出・文字認識」と「項目推定」のタスクに分解
  10. © 2023 LayerX Inc. 14 これまでのAI-OCR機能の実現方法 請求書ファイル (画像・PDF) 請求書に記載の 項目ごとの値

    { “bbox”: [{"x": 0.3421, "y": 0.567},...], "word": “2021/2/28” },... 請求書内の 文字と座標 項目推定 文字検出 文字認識 500,000 2021/02/28 株式会社テンプレ 支払期日 支払金額 取引先名 外部のAPIを利用 テキストや位置情報 に基づいてルール ベースで判定 外部APIの利用とルールベースによって実現
  11. © 2023 LayerX Inc. 15 AI-OCR機能における機械学習の活用 請求書ファイル (画像・PDF) 請求書に記載の 項目ごとの値

    { “bbox”: [{"x": 0.3421, "y": 0.567},...], "word": “2021/2/28” },... 請求書内の 文字と座標 項目推定 文字検出 文字認識 500,000 2021/02/28 株式会社テンプレ 支払期日 支払金額 取引先名 外部のAPIを利用 テキストや位置情報 に基づいてルール ベースで判定 これまで「ルールベース」で実現していた「項目推定」のタスクを「機械学習」で実現する 機械学習で実現
  12. © 2023 LayerX Inc. 16 なぜ機械学習で実現したいのか • 精度のさらなる改善がそのまま収益改善につながるビジネス構造が作れている • (短期的に)ROIのよいルールベースでの精度改善による運用が限界を迎えつつある

    • これまでの運用によりデータや知見が溜まってきており、今後も溜まり続ける仕組みができている 機械学習によるさらなる精度の改善とその仕組み作りがビジネス的にもエンジニアリング的にも妥 当であるから(詳細は下記noteなど参照) https://note.com/fukkyy/n/nf00ddb836a03
  13. © 2023 LayerX Inc. 18 AI-OCR機能における具体的な機械学習活用の取り組み紹介 • 機械学習で解く問題の定義 • データセットの作成

    • 機械学習モデルの作成 • 予測性能の評価 「項目推定」のタスクを「機械学習」で実現するにあたり取り組んだ内容の一部を紹介
  14. © 2023 LayerX Inc. 19 AI-OCR機能における具体的な機械学習活用の取り組み紹介 • 機械学習で解く問題の定義 • データセットの作成

    • 機械学習モデルの作成 • 予測性能の評価 「項目推定」のタスクを「機械学習」で実現するにあたり取り組んだ内容の一部を紹介
  15. © 2023 LayerX Inc. 21 顧客(ユーザー)が本当に求めている出力 ケース1 支払期日として2021年2月28日(日)を検出 顧客「実際に支払うのは平日の26日(金)だから変更しないと!」 ケース2

    支払金額として500,000円を検出 顧客「実際に支払うのは源泉税10.21%を差し引いた448,950円だから変更しないと!」 ユーザーが本当に欲しいのは「請求書に記載の値」ではなく「実際の運用に即した値」
  16. © 2023 LayerX Inc. 22 AI-OCR機能の“より正しい”入力と出力 顧客(ユーザー)が本当に求めていたAI-OCR機能の入力と出力 請求書ファイル (画像・PDF) 支払期日

    支払金額 2021/02/28 取引先名 500,000 株式会社テンプレ 請求書に記載の 項目ごとの値 支払期日 支払金額 2021/02/26 取引先名 448,950 株式会社テンプレ 請求書に記載の 項目ごとの値に基づいた 実際の運用に即した値 • 「請求書に記載の値」を正確に読み取れるだけでもユーザーは十分嬉しいが、それだけでは真の課題解決にならない。 • 「実際の運用に即した値」を出力できて初めて真の課題解決、大きな価値を提供できたこととなる。
  17. © 2023 LayerX Inc. 23 機械学習で解く問題の定義 請求書ファイル (画像・PDF) 支払期日 支払金額

    500,000 請求書に記載の 項目ごとの値 実際の運用に即した値 { “bbox”: [{"x": 0.3421, "y": 0.567},...], "word": “2021/2/28” },... 2021/02/28 株式会社テンプレ 取引先名 支払期日 支払金額 448,950 2021/02/26 株式会社テンプレ 取引先名 請求書内の 文字と座標 文字検出 文字認識 項目推定 なんらかの 変換処理 外部のAPIを利用 ルールベースや別の 仕組み(UX)で実現 AI-OCR機能は「請求書の値の読み取り」と「運用に即した値への変換」の大きく2つのタスクに分 かれる 請求書の値の 読み取り 運用に即した 値への変換 機械学習で実現
  18. © 2023 LayerX Inc. 24 機械学習で解く問題の定義 請求書ファイル (画像・PDF) 支払期日 支払金額

    実際の運用に即した値 取引先名 支払期日 支払金額 448,950 2021/02/26 株式会社テンプレ 取引先名 請求書内の 文字と座標 文字検出 文字認識 項目推定 なんらかの 変換処理 外部のAPIを利用 ルールベースや別 の仕組み(UX)で実 現 機械学習で解きたいタスクは「請求書の値の読み取り」の中の「項目推定」 → 請求書内の文字と座標がどの項目に対応するかという分類問題を解くことに 請求書の値の 読み取り 運用に即した 値への変換 500,000 2021/02/28 株式会社テンプレ 請求書に記載の 項目ごとの値 { “bbox”: [{"x": 0.3421, "y": 0.567},...], "word": “2021/2/28” },... 機械学習で実現
  19. © 2023 LayerX Inc. 25 AI-OCR機能における具体的な機械学習活用の取り組み紹介 • 機械学習で解く問題の定義 • データセットの作成

    • 機械学習モデルの作成 • 予測性能の評価 「項目推定」のタスクを「機械学習」で実現するにあたり取り組んだ内容の一部を紹介
  20. © 2023 LayerX Inc. 26  サービスに蓄積されたデータをもとにデータセットを作成 「請求書の値の読み取り」の中の「項目推定」の分類問題を解くにあたり正解データつきのデータ セットを作成したい 請求書ファイル (画像・PDF)

    「請求書に記載の 項目ごとの値」 の推定値 「実際の運用に即した値」 の推定値 • これまでもルールベースによるAI-OCR機能は提供されており、読み取り結果として表示された値を必要に応じて ユーザーが手で修正してくれるため、最終的に採用した値(=正解)がサービスに蓄積されているのを利用する ユーザーが 最終的に採用した値 必要に応じて ユーザーが修正 ユーザー に表示
  21. © 2023 LayerX Inc. 27  サービスに蓄積された正解データ 必要なのは「請求書に記載の値」の正解であるが、蓄積されている「ユーザーが最終的に採用した値」は 「実際の運用に即した値」の正解 請求書ファイル (画像・PDF)

    「請求書に記載の 項目ごとの値」 の推定値 「実際の運用に即した値」 の推定値 ユーザーが 最終的に採用した値 「実際の運用に即した値」の正解 ユーザー に表示 必要に応じて ユーザーが修正 • そのままでは利用できなさそう。 • 人手のアノテーションも進めるがデータが溜まるまでに時間もかかるため、まずはこちらのデータの利用を検討
  22. © 2023 LayerX Inc. 28  「請求書に記載の値」の正解データの獲得:案① 「ユーザーが最終的に採用した値」と「実際の運用に即した値」の推定値を比較する 請求書ファイル (画像・PDF) 「請求書に記載の

    項目ごとの値」 の推定値 「実際の運用に即した値」 の推定値 • ユーザーが最終的に採用した値と「実際の運用に即した値」の推定値が一致する(=正解であった)場合、「請求書に記 載の値」の推定値が正解となる? → No: 「請求書に記載の値」の推定値が間違っていても「実際の運用に即した値」が正解するケースは多々ある ユーザーが 最終的に採用した値 「実際の運用に即した値」の正解 ユーザー に表示 必要に応じて ユーザーが修正
  23. © 2023 LayerX Inc. 29  「請求書に記載の値」の正解データの獲得:案② 「ユーザーが最終的に採用した値」と「請求書に記載の値」の推定値を比較する 請求書ファイル (画像・PDF) 「請求書に記載の

    項目ごとの値」 の推定値 「実際の運用に即した値」 の推定値 • 「ユーザーが最終的に採用した値」と「請求書に記載の値」の推定値が一致する場合、「請求書に記載の値」の推定値が 正解となる? → (概ね)Yes: 「請求書に記載の値」がそのまま実際の運用に利用されるケースは多々ある →こちらを採用して正解データつきのデータセットを作成 ユーザーが 最終的に採用した値 「実際の運用に即した値」の正解 ユーザー に表示 必要に応じて ユーザーが修正
  24. © 2023 LayerX Inc. 30  「請求書に記載の値」の正解データの獲得:採用した案②の課題 「ユーザーが最終的に採用した値」と「請求書に記載の値」の推定値が一致する場合に正解とみなす データに偏りが生じてしまう。 • 一致していなくとも「請求書に記載の値」の推定値が正解である場合のデータを捨ててしまうことになる。

    • 「請求書に記載の値」の推定値が正解している(ルールベースが正解している)場合しか正解データが得られない。 ひとまずこのデータで機械学習モデルの作成を行う。 • 理想のデータでないとしても早く検証のサイクルを回して後続タスクの不確実性を潰しておきたい • まずはルールベースが正解しているもの(の一部)を機械学習でも正解できるようにするという方針はある程度妥当 • 随時アノテーションデータを増やしていく形で偏りを解消 ◦ 「ユーザーが最終的に採用した値」と「請求書に記載の値」の推定値が一致していないものを優先
  25. © 2023 LayerX Inc. 31 AI-OCR機能における具体的な機械学習活用の取り組み紹介 • 機械学習で解く問題の定義 • データセットの作成

    • 機械学習モデルの作成 • 予測性能の評価 「項目推定」のタスクを「機械学習」で実現するにあたり取り組んだ内容の一部を紹介
  26. © 2023 LayerX Inc. 32 機械学習で解く問題の定義(再掲) 請求書ファイル (画像・PDF) 支払期日 支払金額

    実際の運用に即した値 取引先名 支払期日 支払金額 448,950 2021/02/26 株式会社テンプレ 取引先名 請求書内の 文字と座標 文字検出 文字認識 項目推定 なんらかの 変換処理 外部のAPIを利用 ルールベースや別 の仕組み(UX)で実 現 機械学習で解きたいタスクは「請求書の値の読み取り」の中の「項目推定」 → 請求書内の文字と座標がどの項目に対応するかという分類問題を解くことに 請求書の値の 読み取り 運用に即した 値への変換 500,000 2021/02/28 株式会社テンプレ 請求書に記載の 項目ごとの値 { “bbox”: [{"x": 0.3421, "y": 0.567},...], "word": “2021/2/28” },... 機械学習で実現
  27. © 2023 LayerX Inc. 33 複数のモデルの検証 異なる複数のモデルの検証を並列に実施 • ひとつのモデルに集中してうまくいかずにリリースが遅れることへのリスク分散 •

    まずはルールベースの精度を超えられればリリースできるので、リソースを集中してまで精度を突き詰 める必要が初期の段階ではなかった。 • 単純に様々なパターンを検証して社内に知見を蓄積したかった。
  28. © 2023 LayerX Inc. 34  検証したモデル • BERT系 ◦ テキスト情報のみを利用してトークン単位でラベ

    ルを推論 • GNN系 ◦ テキストとその位置情報を利用してグラフを作成 し、node単位でラベルを推論 • LayoutLM系 ◦ テキストとその位置情報、画像などマルチモーダ ルな情報を利用してレイアウトを考慮した推論 → 精度やコスト、推論速度などを鑑みて採用するモデルを決定
  29. © 2023 LayerX Inc. 35 AI-OCR機能における具体的な機械学習活用の取り組み紹介 • 機械学習で解く問題の定義 • データセットの作成

    • 機械学習モデルの作成 • 予測性能の評価 「項目推定」のタスクを「機械学習」で実現するにあたり取り組んだ内容の一部を紹介
  30. © 2023 LayerX Inc. 36 評価指標(正解率) データセット全体の正解率だけではなく、ユーザーごとの正解率も重視 • ユーザーごとのサンプル数(アップロードした請求書数)のバラツキが大きいため、全体の正解率だけだとサンプル数 の小さいユーザーの正解率が過小評価される。

    • ユーザーが1種類の請求書フォーマットしか利用していないなどのケースもあり、ある1種類のパターンが読み取れる かどうかによって正解率が 0 or 1 と極端な振れ方をすることも。
  31. © 2023 LayerX Inc. 37 評価指標(デグレ数/率) ルールベースや更新前のモデルでは読み取れていたサンプルが読み取れなくなっていないか • すでに利用されているサービスであるため「これまで読み取れていたものが読み取れなくなる」=「デグレする」こと はユーザーの体験を大きく損ねてしまう。

    ◦ 「正解率」が良くなっていたとしても、デグレしている件数や割合が大きい場合はリリースが難しい。 ◦ 一般的に人は悪い変化への方が敏感。 • ルールベースでの運用時は、ユーザーに問い合わせをいただいた際に個別の請求書ごとに値が読み取れるような ルールの変更対応などを行うこともあった。 ◦ ユーザーに明示的に個別対応を行ったものが読み取れなくなるのは大きく体験を損ねてしまう。
  32. © 2023 LayerX Inc. 39 リリース後のモニタリング • サービスに蓄積される正解データは「ユーザーが最終的に採用した値」のものであるため、「請求書に記載の値」の予 測性能が正確に分かるわけではない •

    正解率、ルールベースと機械学習ベースの正解率の比較、デグレ件数などを日々モニタリング ◦ 閾値を超えたユーザーのサンプルは目視で確認 → 毎日の朝会で実施 ◦ 予測性能に不安のあるユーザーや新規ユーザーのサンプルを優先的にアノテーションする運用
  33. © 2023 LayerX Inc. 41 AI-OCR機能の今後の課題 • 表形式の明細内容の読み取り精度改善および後続の仕訳処理との連携強化 • 現在は外部のAPIに依存している文字検出・文字認識の部分の内製化による読み取り精度の改善

    • 文字検出・文字認識、項目推定以外の様々なタスク(影の除去, 超解像, etc.)への取り組み • 読み取れる項目の拡張 • 請求書以外の様々な帳票(領収書, 納品書, 支払い通知書, etc.)への対応 ...etc.
  34. © 2023 LayerX Inc. 43 まとめ:LayerXにおける機械学習を活用した請求書OCR機能に関する取り組み • 背景 ◦ 解決したい課題:受け取った請求書を手入力でデータ化するという負荷の大きい作業をバクラ

    クにする ◦ 取り組み内容:請求書AI-OCR機能において「ルールベース」で実現していた「項目推定」のタス クを「機械学習」で実現 • 具体的な取り組みの紹介 ◦ 解く問題の定義: 請求書内の文字と座標がどの項目に対応するかという分類問題(項目推定) ◦ データセットの作成:「ユーザーが最終的に採用した値」と「請求書に記載の値」の推定値が一致する場 合に正解とみなして初期のデータセットを構築 ◦ 機械学習モデルの作成:複数のモデルを並列で検証し、コストパフォーマンスを鑑みて選定 ◦ 予測性能の評価:正解率やデグレ数/率をもとに基準をさだめ、基準を満たしたユーザーさまから順次 機械学習ベースのAI-OCR機能を提供