RecoChat with AI上でプラグイン完成までの奮闘記

この記事は [レコチョク Advent Calendar 2024](https://qiita.com/advent-calendar/2024/recochoku)の17日目の記事となります。

## はじめに
こんにちは、レコチョクでシステム領域における契約管理、調達管理、担当業務のDX推進及びAI活用推進を担当している青木と申します。

いきなりですが、みなさんは普段音楽ライブに参戦しますか？

私は高校生のときにフォークソング部といういわゆる軽音楽部に入部してバンドを組んだことがきっかけで、それまではK-POPをよく聴いていたものの一気に邦楽ロックを聴くようになり、その影響で何度も邦楽ロック関連の音楽ライブに足を運ぶようになりました。

ちなみに、私の人生初の音楽ライブは、現在は閉館してしまっておりますが東京・赤坂にあった赤坂BLITZというライブハウスで2014年9月に開催された[SCANDALのライブ](https://www.sonymusic.co.jp/artist/scandal/info/443164)です。

当時、同じギターを担当していたバンドメンバーと一緒に参戦し、どんな感じで盛り上がればいいんだろう…とソワソワしていたのですが、1曲目からあまりの迫力に気づけば自然と身体が動いていて「ライブって最高だな〜〜」と実感しながら終始楽しんだ日を今でも覚えています。

ですが、最近は年々体力が落ちてきたこともあり、昔に比べてライブに参戦する頻度がかなり減ってしまいました…。
よし、ライブ行こーっと。

![観客のペンライト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2270078/9a00552f-2e60-27e7-c09b-18a1e1413dff.png)

さて、本題に入りますが、私は上半期に弊社公式の対話式生成AIチャットツールである「[RecoChat with AI](https://recochoku.jp/corporate/news/20230807-recochat-with-ai/)」上でプラグインを作成いたしました。

プラグインの作成をしていく中で、なかなか一筋縄ではいかないポイントが多く存在し、数々の壁にぶつかりましたので、プラグイン完成までを「奮闘記」としてご紹介できればと思います。

## プラグイン完成までの奮闘記
1. プラグイン作成を決めた背景
2. （奮闘ポイントその1）インプットデータのフォーマットが共通化していない
3. （奮闘ポイントその2）スキャンpdfファイルが読み取れない
4. （奮闘ポイントその3）プラグインに機密情報を載せられない
5. 完成したプラグインの様子

## 1. プラグイン作成を決めた背景
日々の運用業務の中の1つとして、先方から届いた請求書類の内容チェック〜検収申請の記票という月次処理対応があるのですが、主に先方から請求書類が届くタイミングは月末月初にまとまってくることが多いです。
検収申請の記票は毎月第2営業日までに完了させる必要があり、短期間で請求書類の内容チェック〜検収申請の記票までを完了させないといけないため、このフローについて作業工数を削減したいという課題がありました。

私は、請求書類の内容チェックの部分で作業工数を削減できる方法はないかを考えるべく、請求書類の内容チェックに1番時間を費やしてしまっているポイントを洗い出したところ、業務委託要員さんの作業報告書の内容チェックだという結論に至りました。

そのため、業務委託要員さんの作業報告書のチェック項目を具体的に洗い出し、作業報告書のデータからチェック項目にならって内容に不備はないかチェックしてくれるプラグインを作成し、AIを活用することで業務の効率化に繋がるのではないかと考え、実際にプラグインを作成いたしました。

## 2. （奮闘ポイントその1）インプットデータのフォーマットが共通化していない
当初は、全取引先共通のプラグインを1つ作成しようと考えておりました。

しかし、作業報告書のフォーマットは弊社指定のものではなく、取引先ごとのフォーマットで作成してご提出いただいている関係で、記載していただいている内容やこちらがチェックしたい内容は同じでも、項目名や各項目の記載場所が取引先ごとで異なります。

それに伴い、取引先ごとにプラグインに記載する内容を適切なものに修正してプラグインを作成する必要があることが判明いたしました。

ですので、業務委託要員さんが多くいらっしゃる5社分である5つのプラグインを作成いたしました。
（正直5社分でもかなり大変でした…。）

## 3.（奮闘ポイントその2）スキャンpdfファイルが読み取れない
取引先より作業報告書をご提出いただいているファイルの形式がpdfなのですが、pdfファイルの中でも

- スキャンpdf：複合機やスキャナーを使用して紙文書をスキャンしてpdf化
- テキストベースpdf：Microsoft Word、Excel、PowerPointなどのオフィスソフトから変換してpdf化
- 画像ベースpdf：画像ファイル（jpeg、png等）を変換してpdf化

など、さまざまなパターンがあります。

1つ前のセクションでも記載したように、取引先ごとのフォーマットで作業報告書を作成していただいているため、pdfファイルのパターンも取引先ごとに異なります。

その中で、スキャンpdfファイルを読み取らせようとすると…

![スキャンpdfファイルの読み取り結果.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2270078/7c70568a-7843-56c5-501a-aae5b25464cf.png)

このように、pdfファイルが画像として認識されてしまうことで「OCR（光学文字認識）技術を使用してください」と回答されてしまい、文字が含まれていてもそれを文字として認識できないことが原因で全く読み取ってもらえませんでした。

ですので、「Adobe Acrobat」を用いてスキャンpdfファイルをzipアーカイブ形式のpptxファイルに変換したもので読み取りを行う運用に変更いたしました。
※上記の運用に変更しているものの、ファイルを変換した際に一部文字化けが発生してしまったり、そもそもファイルを変換するという工数が発生してしまうなどの課題があります…。

## 4.（奮闘ポイントその3）プラグインに機密情報を載せられない
RecoChat with AIでは、プラグインの作成時に利用権限の設定で「自分だけ」か「社内公開」を選択することができます。

![プラグイン作成時の利用権限の設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2270078/23c66fff-8f29-b5ef-94cf-253d5041c42b.png)

「自分だけ」を選択してしまうと他のメンバーが使用できないため、「社内公開」を選択する必要があるのですが、そうすると全社員にプラグインが公開されてしまいます。

プラグインに記載する内容の中で、作業報告書の氏名から対象者を読み取ってもらい、総就業時間から弊社への請求金額を算出してもらうようにしておりました。

各業務委託要員さんの契約内容は普段同じ業務を担当しているチームメンバー以外には公開NGのため、どうすればいいのか悩みましたが、プラグインに記載するのではなく、事前にtxtファイルを用意してそのtxtファイルに各業務委託要員さんの情報を記載し、作業報告書のpptxファイルの前にアップロードすることで弊社への請求金額を算出する際にtxtファイルの内容を参照してもらうように運用を変更いたしました。

また、その際に弊社の休業日に労働時間が記載されていないかをチェックするために、社内に展開されている弊社の年間カレンダーより休業日をリスト化してプラグインに記載しておりました。

しかし、これだと1年ごとに休業日の書き換え（メンテナンス）を行う必要があり、取引先ごとのプラグイン1つ1つに対して全てを書き換えにいくのは非効率だと考え、こちらについても事前にtxtファイルを用意して弊社の休業日を記載することで、txtファイルの書き換えのみで済むため同じタイミングで運用を変更いたしました。

## 5. 完成したプラグインの様子
実際にプラグインを使用して作業報告書の内容チェックを行っている様子です。

### ①弊社の休業日が記載されているtxtファイルをアップロード

![①弊社の休業日が記載されているtxtファイルをアップロード後の様子.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2270078/80fd1079-626b-df02-a853-45e7399ca6e6.png)

↓
### ②各業務委託要員さんの情報が記載されているtxtファイルをアップロード

![②各業務委託要員さんの情報が記載されているtxtファイルをアップロード後の様子.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2270078/b919a966-bb60-83b2-9189-33adc3ee7a0b.png)

↓
### ③作業報告書のpptxファイルをアップロード

![③作業報告書のpptxファイルをアップロード後の様子.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2270078/cbfdaa96-ebbc-ab09-94e8-3dacc3a77bce.png)

上記のように、①〜③の手順で合計3つのファイルをアップロードしてチェックを行っております。

## さいごに
いかがでしたでしょうか。
本来であれば、目視でのチェックは行わずにプラグインでのチェックのみで完結できることを理想としているのですが、正直なところ回答精度が高いとは言えず、目視でのチェック→プラグインでのチェックというように、ダブルチェックという立ち位置で使用しております。

そもそも、AIチャットツールの正答率は、平均して60～80%程度と言われており、現時点では完全にAIに任せてしまうというのは厳しいというのが現実です。

ですが、Google社が提供する機械学習プラットフォームである「VertexAI」を導入することで、まだまだ検証段階ではあるものの（奮闘ポイントその2）のセクションで記載した、スキャンpdfファイルが読み取れない課題がどうやら解決できそうだと判明し、調査を進めております。

また、作業報告書だけでなく請求書自体のチェックも専用のプラグインを作成して使用できればと考えているため、今後もさらにAIを駆使して業務改善に繋がるような運用にどんどん変更していければと思っております！

最後までご覧いただきありがとうございました。

明日の [レコチョク Advent Calendar 2024](https://qiita.com/advent-calendar/2024/recochoku) は18日目「生成AIを使用したテスト業務への取り組み」です。お楽しみに！

## 参考サイト
- [チャットボットの正答率の平均は？種類別の正答率やポイントを徹底解説](https://www.ai-souken.com/article/chatbot-accuracy-rate)
<br>
この記事はレコチョクのエンジニアブログの記事を転載したものとなります。 

https://techblog.recochoku.jp/11491