LayerX エンジニアブログ

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

AIの民主化が進む時代におけるバクラクのAI-OCR機能の開発戦略 #LayerXテックアドカレ

LayerX バクラク事業部 機械学習チームの機械学習エンジニア兼マネージャーの松村(@yu-ya4)です。半年間に結婚祝いでいただいたたくさんのお酒が順調に減ってきているのですが、サントリーウイスキー角瓶 4Lペットだけはなくなる気配がありません。

この記事はLayerXテックアドカレ2023の16日目の記事のはずです。 前回はosukeさんの『Azure AI SearchのSemantic Ranker』という記事でした。 次回はminako-phさんによるタメになる記事、『Notionでスプリントのあれこれをダッシュボードで可視化する 』が公開予定ですされました。

昨今のAIの進化には目を見張るものがあります。先日のOpenAI DevDayMicrosoft Igniteでも様々な衝撃的な発表がなされました。今週は違う意味で衝撃的なニュースが多かったですが。

そのような時代ですから「これだけAIの進化が凄まじい中、AI/機械学習を利用した機能を内製する意味があるのか?すぐに同じようなものが作られてしまうのではないか?」という疑問が浮かぶのは当然だと思いますし、実際に聞かれることもあります。今回はそのような問いに対して、LayerXのバクラクシリーズが提供するAI-OCR機能を例に答えてみようと思います。

AIの民主化

近年、生成AIあるいはChatGPTをはじめとした大規模言語モデル(LLM)に代表される基盤モデルなどの技術革命により、APIやWebサービスを通して「誰でも」「性能の高い」AIを活用できるようになりました。このことはしばしばAIの民主化と言われています。AIの民主化により、これまでは機械学習エンジニアがいなければ難しかったAIを活用した機能の開発やPoCが至る所でものすごいスピードで進むようになりました。

一方で、このようにAIの社会実装が加速することは、競争環境が厳しくなっていることの裏返しでもあります。AIを活用したシンプルなアイデアによる機能を実現したとしても、その模倣は容易になり、特定の機能の存在そのものが競争優位性となることは少なくなってきているように思います。もちろんこれは私にとっても他人事ではありません。

バクラクのAI-OCR機能を模倣しうる技術

LayerXのバクラクシリーズではAI-OCR機能というものを提供しています。これは、アップロードされた請求書や領収書などの書類のPDFや画像データを読み取り、人間が手入力せずとも支払金額や支払日付などの業務に必要な項目を自動で読み取ってデータ化するものです。

www.youtube.com

請求書などの半構造化データから項目ごとの値を抜き出して構造化するという機能は、AIの民主化によって模倣が容易になりつつあるもののひとつです。たとえば以下のような手段で実現できるでしょう。

OpenAI APIなどの生成AIを活用するためのAPI利用した開発

Google Cloud Vision APIなどを利用して書類内の文字検出を行い、API経由でGPT-4に「支払い金額を抜き出してください。」などのプロンプトを入力する。あるいは先日発表されたGPT-4Vは画像も入力することができるので、文字検出の処理を別で実装する必要もありません。

ドキュメントに特化したAPIを利用した開発

Google社のDocument AIやMicrosoft社のAzure AI Document Intelligence(旧Form Recognizer) には、請求書などの書類の内容を理解するAPIが提供されています。これを利用すればプロンプトエンジニアリングさえ必要とせず、項目ごとの値を抜き出すことができます。

AI機能を提供するWebサービスの利用

ChatGPTのブラウザ版や先日発表されたMicrosoft Copilot Studioなどを使えばプログラミングも不要です。最低限のプロンプトエンジニアリング、あるいはそれさえも不要でブラウザ上で書類ファイルをアップロードすることで情報の抽出が実現できます。

Microsoft Copilot Studioの請求書処理モデルのデモ画像より引用

このように、請求書などの半構造化データから項目ごとの値を抜き出して構造化するという機能は比較的容易に実現することができます。では、バクラクのAI-OCR機能はもう不要なのでしょうか?機械学習エンジニアである私の仕事は奪われてしまうのでしょうか?答えは否だと考えています。

バクラクのAI-OCR機能がすぐに模倣されるものではないと考えている理由

「提供価値」、「ユーザー体験」、「解いているタスク」の3つの観点で考えてみます。

単なる書類のデータ化を超えた価値

まず提供価値についてですが、そもそもバクラクのAI-OCR機能を利用することで得られる価値は、書類をデータ化できるというものだけではありません。バクラクのAI-OCR機能は、複数のプロダクト群からなる法人支出管理サービスバクラクの入り口として提供されています。たとえば請求書をAI-OCR機能でデータ化した後は、そのデータをもとに仕訳を作成したり振込データを作成したりといった後続の業務が発生します。バクラクのAI-OCR機能はそのような後続の業務がスムーズに行えるように、それらを実現するための機能となめらかに連携できるようにシステムや体験が設計されています。

バクラク事業 提供サービス群

他の例も挙げると、従業員がバクラクの法人カードを利用した際の経費精算において、従業員が領収書をAI-OCR機能にアップロードするとそのデータが自動的にカードの明細と紐づけられ、経理の方が手動で照合しなくともカード利用処理が完了するという体験を提供しています。

bakuraku.jp

このような複数のプロダクトや機能がなめらかに連携することにより生まれる価値を提供できることが私たちのAI-OCR機能、そしてバクラクの大きな強みのひとつなのです。これは、LLMを利用して書類をデータ化するだけでは享受することのできない価値であると考えています。

AIを活用する機能ならではのユーザー体験

次にユーザー体験について考えてみると、AIを活用した機能だからこそのユーザー体験を追求している点もバクラクのAI-OCR機能の強みのひとつです。日々AIを活用している皆様なら痛いほど実感している通り、AIの出力が100%正しいということは基本的にありえません。そのため、AIを活用した機能を提供する際は、その出力が100%正しいわけではないという前提でシステムや体験を設計する必要があります。

請求書のデータ化の場合、支払金額として誤った値(書類内の他の金額など)を抽出してしまうといったことが起こりうります。一方で、このような企業のお金の取引にかかわる業務においては少しのミスも許されません。そのため、人間が最終確認を行い必要に応じて値を修正するというプロセスを組み込む必要があります。

バクラクではそのような人間による確認や修正プロセスをバクラクにするため、たとえば、値の読み取り元となる箇所を項目ごとに色分けて書類上でハイライトして表示する機能や、読み取った第二候補以降の値もプルダウン内でサジェストすることでタイピングせずとも選択して入力できる機能などを提供しています。

読み取り箇所のハイライトと第二候補以降のサジェスト

このようなAIを活用した機能の出力が100%正しいわけではないことを前提とした体験を提供していることもバクラクのAI-OCR機能の強みのひとつです。LLMを使って書類をデータ化するだけではなく、利用するAIの性質や解決したい課題に沿って体験を設計し形にする必要があります。

tech.layerx.co.jp

顧客のニーズを追求したデータ化タスク

最後に解いているタスクについてですが、バクラクのAI-OCR機能が行なっているデータ化というタスクは、「書類に記載の値」を抜き出すだけではないという特徴があります。

たとえば請求書をデータ化する場合は「支払期日」や「支払金額」などの項目の値を読み取ることとなります。以下の例の請求書にはそれぞれ「2023年2月28日」、「500,000円」という記載があるのでこの値を抜き出せたとします。一見、請求書に記載の値を正確に読み取れているため問題ないように思えるのですが、実はこれでは顧客に十分に満足な体験を提供できないようなケースがたびたび起こります。

顧客が求める出力は「実際の運用に即した値」

いくつか例を挙げます。支払期日の場合、読み取った日付が休日でありその日には銀行振込ができないとなると、後続の支払い業務に差し支えが生じてしまいます。そのため、この場合はそれ以前の最後の平日を提示するほうが顧客の実際の業務の運用に沿ったものとなります。あるいは支払金額の場合、取引の内容によっては源泉徴収を行った上での金額を支払う必要があります。その金額が請求金額として明記されていれば良いのですが、そうでない場合も多々あります。そのような場合、請求書の取引の内容から推定することで源泉税を差し引いた金額を顧客に提示することができればより運用に沿ったものとなります。

このように、企業の支出業務をバクラクにすることを目指すバクラクにおいては、単純に「書類に記載の値」を抜き出すだけではなく顧客の業務に沿った「実際の運用に即した値」を推定してデータ化する必要があるのです。この「実際の運用に即した値」は取引の内容や顧客ごとの運用フローなどによって様々です。そのため、書類の情報などから取引の内容を正しく理解することや、顧客の過去の業務フローから求める値を推定することなどが必要になります。

以下のブログにはこのような問題に対する機械学習を用いないソリューションをいくつか紹介しているのですが、これだけで十分に顧客のニーズに応えられるわけではありません。機械学習チームでは、真に顧客が満足する体験を求め、AIを活用した検証や開発を進めています。このように企業の業務に対する深い理解や顧客ごとの特性を踏まえた課題解決は難しくも面白く、そしてAIでシュッと解決しきれるものではないように感じています。

tech.layerx.co.jp

今後のAIの進化を見据えた開発戦略

ここまで、バクラクのAI-OCR機能が簡単に模倣できるわけではないことを「提供価値」、「ユーザー体験」、「解いているタスク」の観点で説明してきました。一方で、これだけAIの進化が早いと、それらのいずれかあるいはすべてが優位性でなくなる可能性も十分にあると考えています。特に「解いているタスク」、すなわち「書類に記載の値」ではなく「実際の運用に即した値」をデータ化するという部分については、現在は社内の機械学習エンジニアが自分たちのデータで事前学習を行ったり、公開されている学習済みモデル(まあこれも基盤モデルではあるわけだが)をベースにファインチューニングすることで内製の機械学習モデルを作成して実際に運用していますが、この性能がGPTシリーズなどAPI経由で利用できるLLMのゼロショットの推論に負けてしまう日が近い未来に来るのではないかと正直考えています。

このような状況であるからこそ、AIに関わる領域の人間は改めて戦略を練るべきだと考えています。人はどうしても従来の技術に固執してしまいがちであり、たとえばLLMのハルシネーション(幻覚)など、新しい技術の欠点にばかり目がいってしまいがちです。正直自分もいろいろなものがLLMに置き換えられていくことを寂しく思う気持ちもありますし、従来の機械学習技術が一部でないがしろにされているように見えることには思うところもあります。一方で、昨今のAIの進化は本物ですし、今後より進化していくことが予想されます。AI技術をベースに事業を推進する身としてこの可能性に賭けない選択肢はないと強く思います。

というわけで日々いろいろなことを考えているのですが、自分が機械学習チームのリーダー、マネージャーとしてどのようなことを考えて開発を進めているのかの一部を言語化してみます。

あえて内製を諦めない

少なくとも現時点ではリソースの一部を機械学習モデルの内製に割いています。短期目線では、単純に我々の解いているタスクに対しては現時点で内製している機械学習モデルの方が性能やコスト、推論速度などの面で外部のAPIをそのまま利用するよりも優れているためです。また、AI-OCR機能はバクラクの中でも利用頻度の大きい機能のひとつであり、外部API利用時にはその内部で利用されるモデルが変更された際の性能面への影響やコスト体系の変更などによる影響も大きくなります。そのため、可能な限りはその辺りがコントロールできる内製のモデルを使いたいとも考えています。

中長期の目線では、このような開発によって得られた知見や能力、資産は将来的に外部のLLMを採用することになった場合にもきっと活きるであろうと考えています。たとえばMicrosoft社のドキュメントAIであるAzure AI Document IntelligenceはLayoutLM系統の機械学習モデルに基づいている(はず)ですが、我々も同様のモデルを用いた検証、開発を進めてきています。そして今後も続けていこうと考えています。

tech.layerx.co.jp tech.layerx.co.jp

MLOpsへの投資

現在は内製の機械学習モデルを利用しているとはいえ、近い未来にその時は来るでしょう。外部のLLMなど基盤モデルをそのまま使ったほうが性能が高く、かつ、コストや推論速度なども許容でき安定性も高い状態になった場合は、それを選択するという意思決定を行うでしょう。その際にはすぐにその恩恵をプロダクト上に展開し顧客に価値を届けられることが重要であるため、それを実現しうるMLOpsの構築には投資すべきであると考えています。

特定のモデルに依存し過ぎないような機械学習パイプラインを設計することで素早く新しいモデルの組み込みを行い、顧客への提供価値を正しく反映できるような設計にて性能評価を行い、問題なければすぐにプロダクトにリリースでき、リリース後の顧客体験を正しくモニタリングできるような仕組みを構築することを目指して開発を進めています。昨今のAIの進化にかかわらず、チームの規模のわりにはMLOpsへの投資は行なってきましたが、昨今の状況を鑑みてよりいっそう力を入れるという意思決定を行なっています。

質の高いデータセットの作成

新しいモデルを採用するにあたり、顧客への提供価値を反映させた設計における性能評価は大変重要なものです。そのためにはドメインを深く理解した上で正しく設計された質の高い検証用データセットの作成が必要です。また、LLMをそのまま使うのではなく、独自のデータセットで追加の学習を行うことでその性能を上回る独自のモデルを作成することは十分に考えられます。そのためには質の高い学習用データセットの作成が必要です。極端な話、世の中のSOTAがどんどん更新されていき、かつそれを使うことが大変用容易な状況においては、単純なモデルの性能差分は独自のデータセットによってのみ生まれる世界が来るかもしれません。

バクラクのAI-OCR機能の開発においては「書類に記載の値」と「実際の運用に即した値」の両方の正解データを収集し利用しています。前者は基本的には社内のデータ入力チームによるアノテーション作業により、後者は顧客がプロダクトを利用するごとに蓄積されていきます。それぞれドメイン固有の様々な課題が存在するのですが、企業の請求書や領収書などの取引の書類はなかなか入手することが難しく、質の高いデータセットを構築することは我々の大きな優位性のひとつになると確信し、いっそう力を入れていく意思決定を行っています。

具体的には、内製のデータ入力ツールの改善やデータ入力チームの拡大、複雑なデータ入力ルールに関するドキュメント整備、データパイプラインの整備、正しく「実際の運用に即した値」を取得するためのプロダクト上の機能開発や顧客とのコミュニケーション改善など多岐に渡りますが、ひとつひとつ前に進んでいっています。以下は質の高いデータセットを作成するための取り組みの一部について紹介した資料です。

speakerdeck.com

最後に

「戦略」と聞くとかっこよく聞こえますが、MLOpsへの投資や質の高いデータセットの作成というのはbefore 生成AI・LLMの時代から変わらないことでもあります。ただ、この時代においてそれらの重要度がいっそう大きくなったことは確かだと考えています。また、単純な機能の存在だけが優位性でなくなったのは事実です。なめらかな体験やAIならではのUX、そして高い性能は磨き続けなければいけません。

また、AIを活用した価値の検証や実装を素早くできるようになった、そしてこれまででは到底実現できなかったであろうアイデアを実現できうるようになったというのも事実です。バクラクではAI-OCR機能に限らず様々なAIを活用した機能の検証、開発を進めていますし、今後もよりいっそう力を入れていきます。やっていくしかありません。それに際しても、企業の様々な書類を正確にデータ化することは大変重要です。だからこそAI-OCR機能の価値向上にも引き続き力を入れていくべきだと考え、やっていきます。

そんなこんなでやるべきことが本当にたくさんあるため、LayerXでは全方位絶賛絶賛採用中です!私の所属する機械学習チームでも、機械学習エンジニアやMLOpsエンジニア、ソフトウェアエンジニア、LLM活用ソフトウェアエンジニア、インターン生などなど超積極採用中です!

少しでも機械学習チームに興味を持ってくださった方はまずはカジュアルにお話しさせてください。

jobs.layerx.co.jp jobs.layerx.co.jp