本案件では、経理の支払い業務をまとめて行うシステムをフルスクラッチ開発しました。業者から届いた請求書を取り込み、その月に支払う一覧を作り、銀行に渡す振込データを出力するまでを一つの流れで扱えます。
本記事では、開発前の課題、ご提案したアプローチ、実装した主な機能を整理してご紹介します。
今回のポイントは、要件定義書ではなく現場で長年使われてきた1冊のExcelファイルを起点に設計したことです。実際に訪問して業務を見なければ書けない細部を、そのままシステムの動きに落とし込みました。
開発前の課題
経理の支払い業務は、1冊のExcelファイルで回っていました。月が変わるたびにシートを1枚コピーして増やし、何年も引き継いできたファイルです。
そのファイルにしかないルールが積み重なっていた
シート名は「【令和7年7月支払】」という和暦表記。支払明細が入っているのはJ列からP列で、A〜I列は別の用途です。
シートの下のほうに「【入金】」と書かれたセルが現れたら、そこから先は支払とは別のセクション。ほかに「集計」「原紙」といったシートも混ざっています。外から眺めて構造を推測できるファイルではありません。
日々の作業は手入力が中心だった
請求書は紙やPDFで届き、業者名と金額をExcelへ転記し、金額を早岐・佐世保の2拠点に振り分けます。
銀行へ渡す振込データは、銀行のサイトに1件ずつ入力するか、別のツールで作成する必要がありました。
業者名の書き方が資料ごとに違った
銀行のCSVでは「株式会社 みんなシステムズ」、経理のExcelでは「㈱みんなシステムズ」、請求書の実物は「株式会社みんなシステムズ」。
人が見れば同じ会社ですが、システムは別の会社として扱ってしまいます。
| 課題 | 現場で起きていたこと |
|---|---|
| Excelにそのファイル固有のルールがある | シート名は和暦表記、明細はJ列からP列、「【入金】」以降は別セクション。外から構造を推測できない |
| 請求書の内容が手入力だった | 紙やPDFで届いた請求書を見ながら、業者名と金額をExcelへ転記していた |
| 拠点への振り分けも手作業だった | 金額を早岐・佐世保の2拠点に人が振り分けていた |
| 振込データの作成に手間がかかる | 銀行のサイトに1件ずつ入力するか、別のツールで作成する必要があった |
| 業者名の表記が資料ごとに違う | 「株式会社 みんなシステムズ」「㈱みんなシステムズ」「株式会社みんなシステムズ」が混在していた |
ご提案・開発アプローチ
既存のExcelをそのまま読み込めるようにする
最初に取り組んだのは、この既存Excelをそのまま読み込めるようにすることでした。「右端のシートだけを対象にする」「6行目をヘッダーとみなす」「J列に『入金』が現れた時点で読み取りを止める」といった読み取りルールを用意しています。
これらは実際にファイルを開き、担当者に「この列は何ですか」「なぜここで区切っているんですか」と確認しなければ、1行も書けないものです。
現場を見たからこそ入った作りが、ほかにもいくつかあります。
スキャンした請求書をボタン1クリックで取り込む
スキャナはパソコンの中、システムはインターネットの中。 ふつうに作ると、スキャンしたファイルを毎回1つずつ選んでアップロードすることになり、月に何十枚もあると手作業が残ります。
そこで、ブラウザから業務パソコンの指定フォルダを直接読む方式を採用しました。一度フォルダを設定しておけば、ボタン1クリックで、まだ取り込んでいないファイルだけが取り込まれます。パソコンへの追加インストールは不要です。
保存から10秒たっていないファイルは取り込まない
保存されてから10秒たっていないファイルは、取り込み対象から外しています。 スキャナが大きなPDFを書き出している最中にボタンを押す可能性を見込んだ、現場の動きからの先回りです。
使っていない項目は、思い切って無くす
請求書番号・発行日・支払期日は運用で見られていなかったため、項目ごと廃止しました。
確認画面で人が入力するのは「合計(税込)」だけにしています。
業者名の表記ゆれは4段階で突き合わせる
業者名の表記ゆれには、4段階で名前を寄せていく突き合わせを実装しました(記号の展開、会社の種類を外す、支店名を外す、前方一致)。実データでは22組が二重登録されていましたが、これを解消しています。
同時に、候補が2件以上になるものは自動で紐付けず、人の判断に渡す設計としました。振込先を間違えるという、経理でいちばん起きてはいけない事故を防ぐためです。
AIの精度ではなく、人が確認する作業を速くする
請求書の読み取りにはAIを使っていますが、必ず正しく読めるわけではないことは前提に置いています。そのため力を入れたのは読み取りの精度ではなく、人が確認する作業を速くすることでした。
左に請求書の原本、右に読み取り結果を並べ、「保存して次へ」で確認が必要なものだけを連続して辿れる画面にしています。
| 工夫したこと | 狙い |
|---|---|
| 既存Excelの読み取りルールを作り込んだ | 現場で使われてきた1冊のファイルを、作り直さずそのまま読み込めるようにする |
| ブラウザから業務パソコンの指定フォルダを直接読む | 1件ずつのアップロードをなくし、ボタン1クリックで未取込のファイルだけを取り込む |
| 保存から10秒たっていないファイルは取り込まない | スキャナが大きなPDFを書き出している最中の取り込みを避ける |
| 使っていない項目(請求書番号・発行日・支払期日)を廃止した | 確認画面で人が入力するのは「合計(税込)」だけにする |
| 業者名を4段階で突き合わせる | 表記ゆれによる二重登録をなくす(実データでは22組を解消) |
| 候補が2件以上のものは自動で紐付けない | 振込先を間違えるという、経理でいちばん起きてはいけない事故を防ぐ |
| 原本と読み取り結果を左右に並べる | AIが必ず正しく読めるわけではない前提で、人が確認する作業を速くする |
実装した主な機能
- 請求書の画像・PDFからのAI読み取り(業者名・金額・明細)
- 業務パソコンのフォルダからの一括取込(ファイルの中身で重複を判定するため、取り込み済みのファイルを残しておいても二重に入りません)
- 原本と読み取り結果を並べた確認画面
- 業者支払明細の作成・画面上での直接編集(拠点別金額の自動合計)
- 既存の業者支払Excelの取込(手で直した行・支払済の行は上書きされません)
- 振込先マスタCSVの取込による業者マスタの整備
- 銀行へ渡す振込データ(全銀データ)の出力
- 宿泊されたお客様向けのスマホアンケート作成・QRコード配布・結果集計
- システム内に組み込んだ7ページの使い方ガイドと用語集
導入による効果
転記する作業が、確認する作業に変わった
請求書の内容をExcelへ転記する作業が、画面で読み取り結果を確認する作業に変わりました。
取込はスキャンしてボタンを1回押すだけで、取り込み中にページを閉じても、もう一度押せば残りから続きます。
明細の修正がシステムの画面で完結する
明細の修正はシステムの画面で完結するようになり、Excelを直して取り込み直す往復が不要になりました。手で直した行がシステムに上書きされないため、修正した内容が消える心配もありません。
振込データは、出す明細にチェックを入れて振込指定日を入力すればファイルとして出力できます。
できないことも画面にはっきり書く
あわせて、できないことも画面にはっきり書いています。 「振込データを出しても支払ったことにはなりません」「業者マスタに紐付いていない明細は出力から除かれます」「祝日は判定できません」といった注意点を、利用者が見る画面にそのまま記載しました。
専門用語をやさしい日本語に置き換えた用語集も用意しています。
| 項目 | 導入前 | 導入後 |
|---|---|---|
| 請求書の内容の入力 | 業者名と金額をExcelへ転記 | スキャンしてボタンを1回押し、画面で読み取り結果を確認 |
| 明細の修正 | Excelを直して取り込み直す往復が必要 | システムの画面で完結 |
| 振込データの作成 | 銀行のサイトに1件ずつ入力するか、別のツールで作成 | 明細にチェックを入れ、振込指定日を入力して出力 |
| 業者名の表記ゆれ | 資料ごとに表記が異なり、二重登録が発生 | 4段階の突き合わせで名寄せ(実データでは22組を解消) |
まとめ
本事例は、1冊のExcelで運用されていたホテルの支払い業務を、請求書のAI読み取りから振込データの出力までつないだシステムの新規開発です。
要件定義書のない状態からのスタートでしたが、現場のExcelと実際の作業を見ることで、「10秒待つ」「使わない項目は消す」「迷ったら自動で紐付けない」といった、机の上では出てこない仕様に落とし込むことができました。
AIにすべてを任せるのではなく、AIに任せる部分と人が見る部分を分け、人が見る作業を速くする。そのうえで、システムにできないことは隠さず画面に書く。業務システムが現場に定着するうえで、この線引きが重要だと考えています。