2023.06.06 - 2023.06.09に開催された2023年度 人工知能学会全国大会(第37回)のインダストリアルセッションで登壇した内容です。 LayerXにおけるOCR機能の改善の歴史について説明しました。
LayerXにおける機械学習を活用したOCR機能の改善に関する取り組み2023.06.07 JSAI 2023[2C4-IND-4-04] インダストリアルセッション 4Naoto Shimakoshi, Yuya Matsumura (株式会社LayerX)
View Slide
自己紹介
自己紹介島越 直人よくトリゴエと間違えられますがシマコシです● 経歴○ 京都大学 機械理工学専攻 卒業○ 2019/04 ~ 2023/04 DeNAData Scientist■ (2020/04 ~ 2022/03)GO株式会社に出向○ 2023/04 ~ LayerX 機械学習エンジニア● Kaggle○ Kaggle Competitions Grandmaster○ 色々なドメインのデータに触れるのが好きなので色々やってます@nt_4o54@shimacos
LayerXについて
© 2023 LayerX Inc.5どういう会社?
© 2023 LayerX Inc.6会社名 代表取締役 創業 資本金事業内容関連会社取得認証| 株式会社LayerX(レイヤーエックス)| 代表取締役CEO 福島 良典 代表取締役CTO 松本 勇気| 2018年| 86億円| バクラク事業、Fintech事業、Privacy Tech事業| 三井物産デジタル・アセットマネジメント 三井物産、LayerX、三井住友信託銀行、SMBC日興証券、JA三井リースによる合弁会社| 情報セキュリティマネジメントシステム、 JIIMA認証IS 747702 / ISO 27001バクラク事業企業活動のインフラとなる法人支出管理(BSM)SaaSの自社開発・提供Fintech事業アセットマネジメント証券事業を三井物産との合弁会社にて展開PrivacyTech事業プライバシー保護/秘匿化技術パーソナルデータの利活用や流通を促進会社概要
© 2023 LayerX Inc.73つの事業バクラク事業企業活動のインフラとなる法人支出管理(BSM)SaaSを開発・提供ソフトウェアを駆使したアセットマネジメント・証券事業を合弁会社にて展開パーソナルデータの利活用とプライバシー保護を両立するソリューションの提供バクラク事業 Fintech事業 PrivacyTech事業
© 2023 LayerX Inc.83つの事業バクラク事業企業活動のインフラとなる法人支出管理(BSM)SaaSを開発・提供ソフトウェアを駆使したアセットマネジメント・証券事業を合弁会社にて展開パーソナルデータの利活用とプライバシー保護を両立するソリューションの提供バクラク事業 Fintech事業 PrivacyTech事業
© 2023 LayerX Inc.9* 2022年11月時点シリーズ累計の導入社数が 3000社を突破、高い継続率を維持し拡大中シリーズ累計 導入社数3000社サービス継続率99%以上「バクラク」の成長
© 2023 LayerX Inc.10法人支出管理(BSM)SaaS「バクラク」を展開* 経費精算のSlack連携は申請内容の通知のみ稟議・支払申請・経費精算・ワークフロー・AIが領収書を5秒でデータ化・承認はチャットアプリから・シームレスな内部統制構築仕訳・支払処理効率化・AIが請求書を5秒でデータ化・仕訳データを自動学習、 手入力ゼロへ・改正電子帳簿保存法に対応・利用料無料・即時追加発行・最大1億円決済可能法人向けクレジットカード・無料で始められる・手入力ゼロで証憑管理・改正電子帳簿保存法に対応帳票保存・ストレージバクラクでは AI-OCR 機能をはじめ、機械学習がコア技術として活用されています
© 2023 LayerX Inc.11本日のテーマ* 経費精算のSlack連携は申請内容の通知のみ稟議・支払申請・経費精算・ワークフロー・AIが領収書を5秒でデータ化・承認はチャットアプリから・シームレスな内部統制構築仕訳・支払処理効率化・AIが請求書を5秒でデータ化・仕訳データを自動学習、 手入力ゼロへ・改正電子帳簿保存法に対応・利用料無料・即時追加発行・最大1億円決済可能法人向けクレジットカード・無料で始められる・手入力ゼロで証憑管理・改正電子帳簿保存法に対応帳票保存・ストレージ「バクラク請求書」におけるAI-OCRという機能についての改善の歴史を紹介
AI-OCR改善の歴史
© 2023 LayerX Inc.13バクラク請求書におけるAI-OCR機能で解決したい課題受けとった請求書を手入力でデータ化するという負荷の大きい作業をバクラクにする● 請求書に記入されている項目(支払期日や支払金額、取引先名など)を目視で確認して、ミスなく入力・管理することはとても負荷の高い仕事○ 対応する枚数が数十、数百枚と増えるにつれてミスが起こりやすい○ 帳票のフォーマットが多種に渡り読み取ることが単純に大変○ ミスは許されないためダブルチェック等確認作業にもコストがかかってしまう
© 2023 LayerX Inc.14バクラク請求書におけるAI-OCR機能のデモ
© 2023 LayerX Inc.15AI-OCR機能の実現方法請求書ファイルのアップロード(画像・PDF)請求書に記載の項目ごとの値を推定する{“bbox”: [{"x": 0.3421,"y": 0.567},...],"word": “2021/2/28”},...外部APIを使用して請求書内の文字と座標を取得500,0002021/02/28株式会社テンプレ支払期日支払金額取引先名文字検出を行ってから項目推定を行う二段階で推定1 2 3文字検出 項目推定
© 2023 LayerX Inc.16リリース初期の項目推定● ドメイン知識を駆使してルールベースで愚直に実装していた。○ スピード感が求められるスタートアップにおいては正しい。● 一箇所変更するとこれまで読み取れていたものが読み取れなくなったりとルールが複雑化。● 職人芸のような作業であり、特に新しく入ったエンジニアは改修が難しく属人化してしまう。「請求日」の右側に日付があったら請求日「合計金額」の右側に金額があったら支払金額辛い
機械学習置き換えプロジェクトスタート!
© 2023 LayerX Inc.18AI-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の見直しなど継続的に改善
© 2023 LayerX Inc.19AI-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の見直しなど継続的に改善プロジェクト初期・ベースラインモデル作成・評価までの パイプライン作成
© 2023 LayerX Inc.20機械学習プロジェクトをスタート注意するべき点● 十分に高品質なデータがあるか?○ しばらくルールベースを運用した間に、ルールベースの検出結果とユーザの入力値が溜まってきていた。■ 品質はそこそこだが、データの量はある状態○ 長期的にはアノテーションをする体制を整え、 短期的にはルールベースによる検出結果やユーザの入力値を用いてデータセットを構築する 。● 機械学習プロジェクトは不確実性が高いが大丈夫か?○ なるべく高速に実現可能性を確認したい。○ 人間によるルールベースである程度正解しているので、ルールを適切にモデリングできるのであればある程度の精度は達成できるはず。○ とりあえずは項目推定にタスクを絞って、実現可能性を探る。
© 2023 LayerX Inc.21「請求書に記載の項目ごとの値」の推定値● これまでもルールベースによる AI-OCR機能は提供されており、読み取り結果として表示された値を必要に応じてユーザーが手で修正してくれる● 最終的に採用した値(=正解)がサービスに蓄積されているのを利用するサービスに蓄積されたデータをもとにデータセットを作成請求書ファイル(画像・PDF)「実際の運用に即した値」の推定値どのようなログが溜まってるか?ユーザーが最終的に採用した値ユーザに表示税抜処理祝日処理などの後処理ユーザが修正
© 2023 LayerX Inc.22「請求書に記載の項目ごとの値」の推定値● 単純に「ユーザが最終的に採用した値」を用いると請求書に記載のない文字列の可能性がある。● 「請求書に記載の項目ごとの値の推定値 (ルールベースの結果 )」と「ユーザが最終的に採用した値」が一致するもの (=修正されなかったデータ ) をとりあえずの正解データとする。サービスに蓄積されたデータをもとにデータセットを作成請求書ファイル(画像・PDF)「実際の運用に即した値」の推定値正解ラベルの作成ユーザーが最終的に採用した値ユーザに表示税抜処理祝日処理などの後処理ユーザが修正
© 2023 LayerX Inc.23ベースラインモデルの選定LayoutLM系 (LayoutLMv1 - v3, LayoutXLM)選定理由● 請求書等の大量の文書画像で事前学習した上で同様のタスクにて実績あり○ 事前学習モデルの商用利用は不可なので、自前で事前学習を行う必要はあり● ドメイン知識からレイアウトが重要と分かっていたモデル入力● 文書の画像、テキストと座標モデル出力● Tokenに対応するラベル (支払金額等)https://arxiv.org/abs/2012.14740
© 2023 LayerX Inc.24ベースラインモデルの選定RoBERTa選定理由● 商用利用可能な日本語事前学習モデルが公開されている○ ファインチューニングから可能● LayoutLMの論文でもRelated Workとして扱われている● 画像を使わずに済むので実装が簡単モデル入力● 文書テキストモデル出力● Tokenに対応するラベル (支払金額等)https://arxiv.org/pdf/1810.04805
© 2023 LayerX Inc.25パイプライン実装● まずは評価できるところまで作り切った (重要)○ 作り切った後はパーツごとに改善することができる● 推論時に問題ないかをあらかじめチェック○ Tokenがモデルの期待している長さ以上のものの時どうするか○ レイテンシは問題ないかPreprocess Train Predict Postprocess Evaluation最後まで作り切る
© 2023 LayerX Inc.26データセットや後処理の改善● Token分類としては正解してるが、正解値と違う場合○ 予測結果:翌月末、正解ラベル: 2022/11/30 など● 機械的にデータセットを作成したので、ノイズが入り込んでしまってる○ データセットのクレンジング● ほぼモデルはチューニングせずに、一部の項目はルールベースの精度を超えたPreprocess Train Predict Postprocess Evaluationモデルのチューニングより短期的に改善が見込めそうな部分に注力
© 2023 LayerX Inc.27AI-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ラベルの導入リリースまで・ベースラインモデル作成・評価までの パイプライン作成
© 2023 LayerX Inc.28分散して実験実運用に向けてモデルを再度選定● プロダクトでの実運用に向け、チーム内で並列に実験を行う○ Layout LM系を事前学習から実装○ 商用可能な日本語学習モデルのある Robertaをファインチューニングから実装https://arxiv.org/abs/2012.14740https://arxiv.org/pdf/1912.13318 https://arxiv.org/pdf/2204.08387 https://arxiv.org/pdf/1810.04805
© 2023 LayerX Inc.29モデルのチューニング改善例● Label Smoothingによる正則化○ 学習データにノイズが含まれていたため、過学習抑制の為に Label Smoothingを入れ精度改善● 損失関数でクラスの重みを調整○ 読み取りたい項目以外の「その他」に属するクラスに対する重みを調整● 追加事前学習 (RoBERTa)○ 事前学習モデルに対してバクラクのデータセットで追加で事前学習最終的には、RoBERTaモデルが最も精度良く採用
© 2023 LayerX Inc.30リリースに向けてMLをリリースするテナント様の選定● オフラインの精度で明らかにルールベースより精度が高いテナント様を選定● 項目ごとにも読み取り精度に差があるので、どの項目がどれくらい上回っているかを重視● 間違えている場合は、実際の間違え方を確認してテナント様の体験を損ねないように注意APIのテスト・負荷試験● Sagemaker Endpointで実装● テストデータ1万件でエラーや精度に問題ないかの検証を行った○ 文字検出の結果が思わぬ形式になっていたりと、エラーハンドリングの漏れに気づけた○ 負荷テストも行い、プロダクトにリリースしても問題がないことを確認無事にリリース!
© 2023 LayerX Inc.31AI-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ラベルの導入リリース後・ベースラインモデル作成・評価までの パイプライン作成
© 2023 LayerX Inc.32リリース後の改善継続的にモニタリング● ルールベースの精度に比べて極端に精度が低いテナント様がいないか朝会でチェック○ 気になるテナント様や請求書のフォーマットなどを backlogに貯めてエラー調査取引先名の後処理改善● 会社名や人名のような固有名詞は未知語が多く、他の項目よりも読み取り精度が安定しなかったため優先して対応
© 2023 LayerX Inc.33リリース後の改善データ基盤の改善● 分散していたデータを機械学習活用の用途で BigQueryに集約することで、データセットの改善プロセスが高速に。● アノテーションチームを組織し、継続的にアノテーションデータを貯め続ける仕組み作り○ 内製のアノテーションツールなども作成backboneの見直し● 商用可能なモデルとして RoBERTa以外にも以下のようなものがある。○ 日本語事前学習モデル: DeBERTa-v2○ 多言語事前学習モデル: XLM-RoBERTa, infoXLM, mBART● 精度としてDeBERTa-v2がバクラクデータで事前学習ありの RoBERTaと同等の精度○ 今後、DeBERTa-v2でも事前学習など検証予定
© 2023 LayerX Inc.34リリース後の改善支払い金額のモデル改善● 課題○ 日々モニタリングしている中で、支払い金額が近くの金額と結合してしまう現象が起きていた■ RoBERTaに入力する際のToken列で距離が近くなってしまっているためと考えられる● 解決策○ レイアウトを考慮することが重要?○ BIOラベルを用いることで明示的に Tokenの開始位置を学習させる。■ token列から単語にまとめあげる部分でも役に立つ○ 今まで結合してしまっていた書類のうち多くで精度改善。
© 2023 LayerX Inc.35OCRの歴史まとめ日々、データと向き合いながら泥臭く改善を行っています!● AI-OCRはバクラクシリーズの体験のコアとなっている機能で精度がとても重要です。● やりたいこと・やるべきことがまだまだあり、手が足りない状態○ 項目推定だけでなく、文字検出から項目推定まで E2Eで内製化○ データが増えてきたのでレイアウトを考慮したモデルの再検討○ アノテーションデータセットとユーザ入力データセットの組み合わせ○ 請求書以外の書類の読み取り■ 領収書・納品書・支払い通知書・見積書・契約書など○ 明細読み取り● 今回は機械学習モデル部分に絞って説明しましたが、 UXにも拘っており、機械学習が答えを間違えた時にもなるべく手入力が少なく済むように設計しています!○ 支払い金額の読み取り箇所を間違えたとしても、プルダウンから他の候補をシュッと選択できる○ 税抜き金額を読み取ってしまった場合に税込金額をボタン一つで計算してくれる
© 2023 LayerX Inc.36今日伝えきれなかったことは是非エンジニアブログなどをご覧ください!LayerX エンジニアブログ
最後に
© 2023 LayerX Inc.38学生向けのインターンシップも開催しています!実際に業務プロセスを改善する働き方を体験しませんか?推しポイント①:実務で実際に困っている業務に挑戦できる。もちろん実データ推しポイント②:期間中は社員がメンターとしてサポート推しポイント③:各々の適正ややりたいことに応じて課題を調整します応募はこちらから