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

LayerXにおける機械学習を活用したOCR機能の改善に関する取り組み / layerx-jsai-2023

shimacos
June 09, 2023

LayerXにおける機械学習を活用したOCR機能の改善に関する取り組み / layerx-jsai-2023

2023.06.06 - 2023.06.09に開催された2023年度 人工知能学会全国大会(第37回)のインダストリアルセッションで登壇した内容です。
LayerXにおけるOCR機能の改善の歴史について説明しました。

shimacos

June 09, 2023
Tweet

More Decks by shimacos

Other Decks in Research

Transcript

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

    View Slide

  2. 自己紹介

    View Slide

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

    View Slide

  4. LayerXについて

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. AI-OCR改善の歴史

    View Slide

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

    View Slide

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

    View Slide

  15. © 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
    文字検出 項目推定

    View Slide

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

    View Slide

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

    View Slide

  18. © 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の見直し
    など継続的に改善

    View Slide

  19. © 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の見直し
    など継続的に改善
    プロジェクト初期
    ・ベースラインモデル作成
    ・評価までの
     パイプライン作成

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. © 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ラベルの導入
    リリースまで
    ・ベースラインモデル作成
    ・評価までの
     パイプライン作成

    View Slide

  28. © 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

    View Slide

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

    View Slide

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

    View Slide

  31. © 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ラベルの導入
    リリース後
    ・ベースラインモデル作成
    ・評価までの
     パイプライン作成

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  37. 最後に

    View Slide

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

    View Slide