Slide 1

Slide 1 text

LayerXにおける機械学習を活用した OCR機能の改善に関する取り組み 2023.06.07 JSAI 2023 [2C4-IND-4-04] インダストリアルセッション 4 Naoto Shimakoshi, Yuya Matsumura (株式会社LayerX)

Slide 2

Slide 2 text

自己紹介

Slide 3

Slide 3 text

自己紹介 島越 直人 よくトリゴエと間違えられますがシマコシです ● 経歴 ○ 京都大学 機械理工学専攻 卒業 ○ 2019/04 ~ 2023/04 DeNA Data Scientist ■ (2020/04 ~ 2022/03) GO株式会社に出向 ○ 2023/04 ~ LayerX 機械学習エンジニア ● Kaggle ○ Kaggle Competitions Grandmaster ○ 色々なドメインのデータに触れるのが好きな ので色々やってます @nt_4o54 @shimacos

Slide 4

Slide 4 text

LayerXについて

Slide 5

Slide 5 text

© 2023 LayerX Inc. 5 どういう会社?

Slide 6

Slide 6 text

© 2023 LayerX Inc. 6 会社名     代表取締役  創業      資本金 事業内容 関連会社 取得認証 | 株式会社LayerX(レイヤーエックス) | 代表取締役CEO 福島 良典    代表取締役CTO 松本 勇気 | 2018年 | 86億円 | バクラク事業、Fintech事業、Privacy Tech事業 | 三井物産デジタル・アセットマネジメント   三井物産、LayerX、三井住友信託銀行、SMBC日興証券、JA三井リースによる合弁会社 | 情報セキュリティマネジメントシステム、      JIIMA認証 IS 747702 / ISO 27001 バクラク事業 企業活動のインフラとなる 法人支出管理(BSM)SaaSの 自社開発・提供 Fintech事業 アセットマネジメント証券事業を 三井物産との 合弁会社にて展開 PrivacyTech事業 プライバシー保護/秘匿化技術 パーソナルデータの 利活用や流通を促進 会社概要

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

© 2023 LayerX Inc. 9 * 2022年11月時点 シリーズ累計の導入社数が 3000社を突破、高い継続率を維持し拡大中 シリーズ累計 導入社数 3000社 サービス継続率 99%以上 「バクラク」の成長

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

AI-OCR改善の歴史

Slide 13

Slide 13 text

© 2023 LayerX Inc. 13 バクラク請求書におけるAI-OCR機能で解決したい課題 受けとった請求書を手入力でデータ化するという負荷の大きい作業をバクラクにする ● 請求書に記入されている項目 (支払期日や支払金額、取引先名など) を目視で確認して、ミスなく入力・管理することはとて も負荷の高い仕事 ○ 対応する枚数が数十、数百枚と増えるにつれ てミスが起こりやすい ○ 帳票のフォーマットが多種に渡り読み取ること が単純に大変 ○ ミスは許されないためダブルチェック等確認作 業にもコストがかかってしまう

Slide 14

Slide 14 text

© 2023 LayerX Inc. 14 バクラク請求書におけるAI-OCR機能のデモ

Slide 15

Slide 15 text

© 2023 LayerX Inc. 15 AI-OCR機能の実現方法 請求書ファイルの アップロード (画像・PDF) 請求書に記載の 項目ごとの値を 推定する { “bbox”: [{"x": 0.3421, "y": 0.567},...], "word": “2021/2/28” },... 外部APIを使用して 請求書内の 文字と座標を取得 500,000 2021/02/28 株式会社テンプレ 支払期日 支払金額 取引先名 文字検出を行ってから項目推定を行う二段階で推定 1 2 3 文字検出 項目推定

Slide 16

Slide 16 text

© 2023 LayerX Inc. 16 リリース初期の項目推定 ● ドメイン知識を駆使してルールベースで愚直に実装していた。 ○ スピード感が求められるスタートアップにおいては正しい。 ● 一箇所変更するとこれまで読み取れていたものが読み取れなくなったりとルールが複雑化。 ● 職人芸のような作業であり、特に新しく入ったエンジニアは改修が難しく属人化してしまう。 「請求日」の右側に 日付があったら請求日 「合計金額」の右側に 金額があったら支払金額 辛い

Slide 17

Slide 17 text

機械学習置き換え プロジェクトスタート!

Slide 18

Slide 18 text

© 2023 LayerX Inc. 18 AI-OCR改善の歴史 開発開始してから半年で一部のテナント様にリリース! 2022.04 2022.05 2022.06 2022.07 2022.08 2022.09 2022.10 ・プロジェクトスタート ! ・データセット作成 ・モデル選定 ・ベースラインモデル作成 ・評価までの  パイプライン作成 ・後処理改善 ・データセット改善 リリース! ・LayoutLM v1-v3の事前学習  + Finetuning ・Robertaの学習 ・モデル改善! ・後処理改善! ・リリーステナント様選定 ・APIのテスト、負荷試験 2022.11 ~ 2023.05 ・リリース範囲拡大 ・BIOラベルの導入 ・後処理改善 ・データ基盤の改善 ・backboneの見直し など継続的に改善

Slide 19

Slide 19 text

© 2023 LayerX Inc. 19 AI-OCR改善の歴史 2022.04 2022.05 2022.06 2022.07 2022.08 2022.09 2022.10 ・プロジェクトスタート ! ・データセット作成 ・モデル選定 ・後処理改善 ・データセット改善 リリース! ・LayoutLM v1-v3の事前学習  + Finetuning ・Robertaの学習 ・モデル改善! ・後処理改善! ・リリーステナント様選定 ・APIのテスト、負荷試験 2022.11 ~ 2023.05 ・リリース範囲拡大 ・BIOラベルの導入 ・後処理改善 ・データ基盤の改善 ・backboneの見直し など継続的に改善 プロジェクト初期 ・ベースラインモデル作成 ・評価までの  パイプライン作成

Slide 20

Slide 20 text

© 2023 LayerX Inc. 20 機械学習プロジェクトをスタート 注意するべき点 ● 十分に高品質なデータがあるか? ○ しばらくルールベースを運用した間に、 ルールベースの検出結果とユーザの入力値が溜まってきていた。 ■ 品質はそこそこだが、データの量はある状態 ○ 長期的にはアノテーションをする体制を整え、 短期的にはルールベースによる検出結果や ユーザの入力値を用いてデータセットを構築する 。 ● 機械学習プロジェクトは不確実性が高いが大丈夫か? ○ なるべく高速に実現可能性を確認したい。 ○ 人間によるルールベースである程度正解しているので、 ルールを適切にモデリングできるのであればある程度の精度は達成できるはず。 ○ とりあえずは項目推定にタスクを絞って、実現可能性を探る。

Slide 21

Slide 21 text

© 2023 LayerX Inc. 21 「請求書に記載の 項目ごとの値」 の推定値 ● これまでもルールベースによる AI-OCR機能は提供されており、読み取り結果として表示された値を必要 に応じてユーザーが手で修正してくれる ● 最終的に採用した値(=正解)がサービスに蓄積されているのを利用する サービスに蓄積されたデータをもとにデータセットを作成 請求書ファイル (画像・PDF) 「実際の運用に即した 値」の推定値 どのようなログが溜まってるか? ユーザーが 最終的に採用した値 ユーザに表示 税抜処理 祝日処理などの後処理 ユーザが修正

Slide 22

Slide 22 text

© 2023 LayerX Inc. 22 「請求書に記載の 項目ごとの値」 の推定値 ● 単純に「ユーザが最終的に採用した値」を用いると請求書に記載のない文字列の可能性がある。 ● 「請求書に記載の項目ごとの値の推定値 (ルールベースの結果 )」と「ユーザが最終的に採用した値」 が一致するもの (=修正されなかったデータ ) をとりあえずの正解データとする。 サービスに蓄積されたデータをもとにデータセットを作成 請求書ファイル (画像・PDF) 「実際の運用に即した 値」の推定値 正解ラベルの作成 ユーザーが 最終的に採用した値 ユーザに表示 税抜処理 祝日処理などの後処理 ユーザが修正

Slide 23

Slide 23 text

© 2023 LayerX Inc. 23 ベースラインモデルの選定 LayoutLM系 (LayoutLMv1 - v3, LayoutXLM) 選定理由 ● 請求書等の大量の文書画像で事前学習した上で同様のタスク にて実績あり ○ 事前学習モデルの商用利用は不可なので、自前で事前 学習を行う必要はあり ● ドメイン知識からレイアウトが重要と分かっていた モデル入力 ● 文書の画像、テキストと座標 モデル出力 ● Tokenに対応するラベル (支払金額等) https://arxiv.org/abs/2012.14740

Slide 24

Slide 24 text

© 2023 LayerX Inc. 24 ベースラインモデルの選定 RoBERTa 選定理由 ● 商用利用可能な日本語事前学習モデルが公開されている ○ ファインチューニングから可能 ● LayoutLMの論文でもRelated Workとして 扱われている ● 画像を使わずに済むので実装が簡単 モデル入力 ● 文書テキスト モデル出力 ● Tokenに対応するラベル (支払金額等) https://arxiv.org/pdf/1810.04805

Slide 25

Slide 25 text

© 2023 LayerX Inc. 25 パイプライン実装 ● まずは評価できるところまで作り切った (重要) ○ 作り切った後はパーツごとに改善することができる ● 推論時に問題ないかをあらかじめチェック ○ Tokenがモデルの期待している長さ以上のものの時どうするか ○ レイテンシは問題ないか Preprocess Train Predict Postprocess Evaluation 最後まで作り切る

Slide 26

Slide 26 text

© 2023 LayerX Inc. 26 データセットや後処理の改善 ● Token分類としては正解してるが、正解値と違う場合 ○ 予測結果:翌月末、正解ラベル: 2022/11/30 など ● 機械的にデータセットを作成したので、ノイズが入り込んでしまってる ○ データセットのクレンジング ● ほぼモデルはチューニングせずに、一部の項目はルールベースの精度を超えた Preprocess Train Predict Postprocess Evaluation モデルのチューニングより短期的に改善が見込めそうな部分に注力

Slide 27

Slide 27 text

© 2023 LayerX Inc. 27 AI-OCR改善の歴史 2022.04 2022.05 2022.06 2022.07 2022.08 2022.09 2022.10 ・プロジェクトスタート ! ・データセット作成 ・モデル選定 ・後処理改善 ・データセット改善 リリース! ・LayoutLM v1-v3の事前学習  + Finetuning ・Robertaの学習 ・モデル改善! ・後処理改善! ・リリーステナント様選定 ・APIのテスト、負荷試験 2022.11 ~ 2023.05 ・後処理改善 ・データ基盤の改善 ・backboneの見直し など継続的に改善 ・リリース範囲拡大 ・BIOラベルの導入 リリースまで ・ベースラインモデル作成 ・評価までの  パイプライン作成

Slide 28

Slide 28 text

© 2023 LayerX Inc. 28 分散して実験 実運用に向けてモデルを再度選定 ● プロダクトでの実運用に向け、チーム内で並列に実験を行う ○ Layout LM系を事前学習から実装 ○ 商用可能な日本語学習モデルのある Robertaをファインチューニングから実装 https://arxiv.org/abs/2012.14740 https://arxiv.org/pdf/1912.13318 https://arxiv.org/pdf/2204.08387 https://arxiv.org/pdf/1810.04805

Slide 29

Slide 29 text

© 2023 LayerX Inc. 29 モデルのチューニング 改善例 ● Label Smoothingによる正則化 ○ 学習データにノイズが含まれていたため、過学習抑制の為に Label Smoothingを入れ精度改善 ● 損失関数でクラスの重みを調整 ○ 読み取りたい項目以外の「その他」に属するクラスに対する重みを調整 ● 追加事前学習 (RoBERTa) ○ 事前学習モデルに対してバクラクのデータセットで追加で事前学習 最終的には、RoBERTaモデルが最も精度良く採用

Slide 30

Slide 30 text

© 2023 LayerX Inc. 30 リリースに向けて MLをリリースするテナント様の選定 ● オフラインの精度で明らかにルールベースより精度が高いテナント様を選定 ● 項目ごとにも読み取り精度に差があるので、どの項目がどれくらい上回っているかを重視 ● 間違えている場合は、実際の間違え方を確認してテナント様の体験を損ねないように注意 APIのテスト・負荷試験 ● Sagemaker Endpointで実装 ● テストデータ1万件でエラーや精度に問題ないかの検証を行った ○ 文字検出の結果が思わぬ形式になっていたりと、エラーハンドリングの漏れに気づけた ○ 負荷テストも行い、プロダクトにリリースしても問題がないことを確認 無事にリリース!

Slide 31

Slide 31 text

© 2023 LayerX Inc. 31 AI-OCR改善の歴史 2022.04 2022.05 2022.06 2022.07 2022.08 2022.09 2022.10 ・プロジェクトスタート ! ・データセット作成 ・モデル選定 ・後処理改善 ・データセット改善 リリース! ・LayoutLM v1-v3の事前学習  + Finetuning ・Robertaの学習 ・モデル改善! ・後処理改善! ・リリーステナント様選定 ・APIのテスト、負荷試験 2022.11 ~ 2023.05 ・後処理改善 ・データ基盤の改善 ・backboneの見直し など継続的に改善 ・リリース範囲拡大 ・BIOラベルの導入 リリース後 ・ベースラインモデル作成 ・評価までの  パイプライン作成

Slide 32

Slide 32 text

© 2023 LayerX Inc. 32 リリース後の改善 継続的にモニタリング ● ルールベースの精度に比べて極端に精度が低いテナント様がいないか朝会でチェック ○ 気になるテナント様や請求書のフォーマットなどを backlogに貯めてエラー調査 取引先名の後処理改善 ● 会社名や人名のような固有名詞は未知語が多く、 他の項目よりも読み取り精度が安定しなかったため優先して対応

Slide 33

Slide 33 text

© 2023 LayerX Inc. 33 リリース後の改善 データ基盤の改善 ● 分散していたデータを機械学習活用の用途で BigQueryに集約することで、データセットの改善プロセスが高 速に。 ● アノテーションチームを組織し、継続的にアノテーションデータを貯め続ける仕組み作り ○ 内製のアノテーションツールなども作成 backboneの見直し ● 商用可能なモデルとして RoBERTa以外にも以下のようなものがある。 ○ 日本語事前学習モデル: DeBERTa-v2 ○ 多言語事前学習モデル: XLM-RoBERTa, infoXLM, mBART ● 精度としてDeBERTa-v2がバクラクデータで事前学習ありの RoBERTaと同等の精度 ○ 今後、DeBERTa-v2でも事前学習など検証予定

Slide 34

Slide 34 text

© 2023 LayerX Inc. 34 リリース後の改善 支払い金額のモデル改善 ● 課題 ○ 日々モニタリングしている中で、支払い金額が近くの金額と結合してしまう現象が起きていた ■ RoBERTaに入力する際のToken列で距離が近くなってしまっているためと考えられる ● 解決策 ○ レイアウトを考慮することが重要? ○ BIOラベルを用いることで明示的に Tokenの開始位置を学習させる。 ■ token列から単語にまとめあげる部分でも役に立つ ○ 今まで結合してしまっていた書類のうち多くで精度改善。

Slide 35

Slide 35 text

© 2023 LayerX Inc. 35 OCRの歴史まとめ 日々、データと向き合いながら泥臭く改善を行っています! ● AI-OCRはバクラクシリーズの体験のコアとなっている機能で精度がとても重要です。 ● やりたいこと・やるべきことがまだまだあり、手が足りない状態 ○ 項目推定だけでなく、文字検出から項目推定まで E2Eで内製化 ○ データが増えてきたのでレイアウトを考慮したモデルの再検討 ○ アノテーションデータセットとユーザ入力データセットの組み合わせ ○ 請求書以外の書類の読み取り ■ 領収書・納品書・支払い通知書・見積書・契約書など ○ 明細読み取り ● 今回は機械学習モデル部分に絞って説明しましたが、 UXにも拘っており、機械学習が答えを間違えた時にも なるべく手入力が少なく済むように設計しています! ○ 支払い金額の読み取り箇所を間違えたとしても、プルダウンから他の候補をシュッと選択できる ○ 税抜き金額を読み取ってしまった場合に税込金額をボタン一つで計算してくれる

Slide 36

Slide 36 text

© 2023 LayerX Inc. 36 今日伝えきれなかったことは是非エンジニアブログなどをご覧ください! LayerX エンジニアブログ

Slide 37

Slide 37 text

最後に

Slide 38

Slide 38 text

© 2023 LayerX Inc. 38 学生向けのインターンシップも開催しています! 実際に業務プロセスを改善する働き方を体験しませんか? 推しポイント①:実務で実際に困っている業務に挑戦できる。もちろん実データ 推しポイント②:期間中は社員がメンターとしてサポート 推しポイント③:各々の適正ややりたいことに応じて課題を調整します 応募はこちらから