LayerX エンジニアブログ

LayerX の エンジニアブログです。

AI-UXの視点から見る請求書自動分割機能の裏側 #LayerXテックアドカレ

この記事は、LayerX Tech Advent Calendar 2024 の 21 日目の記事です。

tech.layerx.co.jp

こんにちは。バクラク事業部 AI-UXチーム エンジニアの omori (@onsd_)です。

今回は、先日リリースされた「請求書自動分割機能」について、その狙いと技術的な裏側についてお話します。

bakuraku.jp

請求書自動分割とは?

昨今、請求書はPDFなど電子化された状態で受け取ることも多くなりましたが、紙の請求書を毎月大量に受け取られるお客様もまだまだいらっしゃいます。

受け取った請求書はバクラク上で申請や仕訳を行うため、スキャナで電子化する必要があるのですが、これまでは非常に面倒な作業が必要でした。 複数の請求書がまとまった紙の束を一度にスキャンすると、1つのPDFファイルになってしまい、バクラク上ではうまく分割できなかったのです。そのため請求書ごとにスキャンしてメール送信を繰り返す必要があり、この作業は非常に大きな負担になります。

そこで、このような苦労を解消するため、一度のスキャンで大量の請求書を取り込んでも、AIが自動的に請求単位で分割してくれる「請求書自動分割機能」を開発しました。 この機能によって、紙の束をまるごとスキャンしたデータをそのままアップロードしても、バクラク上で「ここで分割するとよさそう」と自動的に提案され分割が行えるようになります。 これによって、紙を扱う段階で入念な仕分けをしなくても、スムーズな電子化プロセスが実現できるようになりました。

また、請求書分割は後述するようにAIを使って実現しています。ここで忘れてはならないのは、現状AIの精度は100%にならないという点です。 AIが必ずしも完璧な答えを返せないことを前提に、ユーザーが修正できるUIが重要になります。

以下に実際のプロダクト画面の一部をお見せします。

分割実行画面を開いた時点でAIによる分割がセットされていますが、ユーザーはここから分割する場所を修正することもできます。

事前に分割された請求書の例

このような「AIを前提とした理想のUX」のことを弊社では AI-UX と呼んでいます。AI-UXについては代表の @fukkyy が記事を書いているのでそちらもぜひ御覧ください。

comemo.nikkei.com

分割の裏側

まず、アップロードされたPDFを1ページごとに分解し、そこから取引先名や日付、金額など、請求書固有の情報を抽出します。この項目抽出結果をもとに、隣接するページ同士が「同じ請求書の一部なのか」を自動で判定しています。たとえば、何ページにもわたる請求書をスキャンし取り込んだ場合に、取引先名などの書類情報が連続しているかを分析し、その領域を一つの請求書としてグルーピングする仕組みです。

請求書固有の情報抽出 で大きな強みとなるのが、既存のAI-OCR基盤です。バクラクはこれまでもさまざまな書類から項目を抽出する技術を磨いてきており、その恩恵を「分割」という新たなタスクにも活かしました。また、OCR自体が進化すれば、そのまま分割ロジックの精度向上につながるため、継続的な改善サイクルが期待できます。また、新たに分割専用のモデルを一から開発するより、既存技術を再活用することで、短期間でユーザーに価値を届けることができました。

AI-OCR技術やバクラクのOCRが扱う問題の詳細については、機械学習グループのテックリードである @nt_4o54 が別途ブログで詳しく解説しています。技術的背景にご興味がある方は、そちらもぜひご覧ください。

tech.layerx.co.jp

今後の展望

現時点では、主に取引先名など比較的わかりやすい情報を基準に分割提案を行っていますが、実際の現場にはさらに複雑なケースが存在します。たとえば、同一の取引先名でも、請求書番号やプロジェクト番号が異なれば別々の請求書として分けたいこともあるでしょう。こうしたニーズにも対応するため、今後は抽出できる項目の幅を広げるとともに、より柔軟なロジックを設計していきたいと考えています。

また、ユーザーが実際に行った分割結果や、修正した箇所などの操作情報を学習データとして活用することで、モデルがユーザーの業務特性を学び、より的確な提案が可能になります。単純なパターン認識から一歩進んだ、運用現場に根ざした賢い分割が実現できれば、紙の束を扱う負担がさらに軽減され、業務全体の効率化につながっていくはずです。

分割機能の設計・実装で得た学び

今回の開発を通じて、AI系の機能特有の難しさを実感しました。通常の機能開発では「動く・動かない」という二値で判断するのに対し、分割ロジックはある条件ではうまく動作するが、別の条件ではうまく動作しない、といったグラデーションが存在すると感じました。そのため、想定される書類に対して事前に用意できたデータセットから可能な限り広い範囲をカバーできる分割ロジックの設計が必要になりました。

また、分割の精度を継続して高めていくには、ユーザーが実際に操作した結果をログとして蓄積し、ログを元に分割ロジックの精度改善を行うフィードバックループが欠かせません。 通常の機能開発でもログは不可欠ですが、AI系の機能開発では「どの情報を、どのタイミングで、どの粒度で」取得するのかや、取得したログをどう精度改善に活かすかという改善の戦略が必要になります。

この一連の経験から、AIを組み込んだプロダクト開発では「動作のグラデーションを考慮した設計」「改善サイクルを回すためのログ設計・収集」を念頭に置く必要性があると学びました。

おわりに

今回の請求書自動分割機能は、紙の取り込みプロセスから人間による細かい仕分け作業を極力排除し、業務をバクラクにする取り組みです。 AI-OCRをはじめとする既存技術資産を活用することで、短期間でリリースしつつ、継続的な改善の余地を残したアプローチが可能になりました。

これからも、AI-UXチームではAIを前提とした理想のUXを磨いていきます。今後のアップデートにもご期待ください。

LayerX Tech Advent Calendarはまだまだ続きます。明日の記事もご期待ください!