請求書をはじめとする各種書類の項目を、人手で入力システムへ転記する。日々発生するこの定型作業に対し、クラウドOCR(Google Cloud Vision)と生成AI(Anthropic Claude)をデータリンクさせ、自動化するデスクトップアプリケーションを構築しました。
要件定義から実装、そして現場へのデプロイまでを個人で一貫して実行支援した記録となります。
MISSION
課題・目的
本ミッションのコアは「見た目の自動化」ではなく、現場で毎日回り続ける「安定性の獲得」にあります。クリアすべき障壁として、以下の3点を定義しました。
多様なレイアウトからの正確な抽出
請求書や納品書は発行元ごとにフォーマットが異なり、金額や日付、取引先名の位置は一定しません。単純なテンプレートマッチングでは破綻するため、「レイアウトに依存しない読み取り」が第一のミッションとなります。
止まらないこと(無人運用に耐える堅牢性)
自動化ツールは、1件の例外処理で全体が停止すると戦術的価値を失います。想定外の画面、読み取り失敗、一時的なネットワークエラーなどのノイズが発生しても、処理を落とさずに次へ進む設計が必須要件です。
非エンジニアでも扱えるユーザビリティ
実際にシステムを運用するのは開発者ではなく現場のオペレーターです。専門知識がなくても起動・停止・ステータス確認ができるUIと、トラブル発生時に速やかに状況を共有できるパラメータ設定が不可欠でした。

SYSTEM DESIGN / TACTICS
設計・技術的アプローチ
設計において貫いた基本方針は、「判断はAIに、制御はコードに」です。読み取りの曖昧さは生成AIの推論に委ね、動作の再現性はプログラム側のアーキテクチャで厳密に統制する役割分担を採用しました。
OCR+LLMのハイブリッド抽出
書類画像およびPDFをレンダリングし、Google Cloud Vision OCRでテキストを起こした上で、生成AI(Anthropic Claude Haikuモデル)に構造化抽出させる二段構えの戦術を採用しました。OCRが座標付きの根拠となるデータを与え、LLMが文脈から各項目を確定します。単体では到達できない精度を、両者の統合によって担保しています。

画面種別の自動判定とフィールド駆動入力
入力先画面を、フォーム上のラベル構成から自動判定する方式を実装しました。「現在どの入力画面にいるか」をコードが認識し、対応するフィールドにのみ値を流し込みます。未対応や対象外の画面は安全にスキップする、堅牢なフィールド駆動のアーキテクチャです。
デスクトップアプリ(Electron)としての展開
オペレーターのローカル環境で完結するよう、Electronによるデスクトップアプリケーションとして構築しました。メインプロセスが各処理をワーカーとして分離起動し、コントロールパネル(UI)から全プロセスの開始・停止・進捗を一望できるシステムデザインとしています。
TROUBLESHOOTING / ARCHITECTURE
環境制約や壁への対処
現場投入にあたり、実運用を想定した複数のフェイルセーフを組み込んでいます。
OCR失敗時のフォールバック設計
外部APIが一時的に応答を失っても、システムは停止させません。OCRのテキスト結果が得られない場合は、画像のみでAI抽出を継続するフォールバック処理を実装しました。精度を僅かに譲ってでも「稼働を止めない」ことを最優先とし、無人運用における安定性を大きく向上させています。
並列実行と負荷分散(起動タイミングの制御)
複数のプロファイルを同時実行する際、一斉起動による負荷集中(スパイク)を回避するため、起動タイミングにランダムな遅延を入れる制御を実装しました。処理を平準化し、外部サービスへの不自然なアクセス集中を防ぎます。
原因調査のための永続ログ(日付・アカウント別)
コンソールに流れて消えるログでは、現場からのトラブル報告に対応できません。そこで、日付フォルダ配下にアカウント別のログファイルを永続化する仕組みを構築しました。読み取りやスキップの理由が詳細なパラメータとして残り、非エンジニアでも「フォルダを共有するだけ」でエラー報告が完了します。ワンクリックでログディレクトリを開くUIも実装しています。
クラウドビルドを用いた配布とアップデート体制
インストーラ形式での配布に対応し、GitHub Actionsを用いたCI(継続的インテグレーション)環境を構築。稼働時間や処理量などの実績を集計し、CSV形式で出力する運用支援機能も実装しました。単なる納品ではなく、継続的な運用を見据えたデプロイ体制を整えています。
使用技術・システム要件
- アプリ基盤: Electron / Node.js
- ブラウザ制御: Playwright(CDP接続 / 永続プロファイルによる自動操作)
- 書類レンダリング: pdf.js(PDF描画)+ Canvas
- 文字認識: Google Cloud Vision OCR(DOCUMENT_TEXT_DETECTION)
- 項目抽出: Anthropic Claude(Haikuモデル)
- 配布/CI: electron-builder(NSIS / ポータブル)+ GitHub Actions によるクラウドビルド
- 運用支援: 永続ログ出力(日付・アカウント別) / 稼働実績のCSV集計
SUMMARY
完遂の記録・総括
本プロジェクトの真の価値は「AIに読ませる」ことではなく、「AIをシステムに組み込み、止めずに回し続ける」ことにあります。読み取り精度の向上自体は生成AIの進化が担うフェーズに入りました。だからこそ、我々が現場に提供すべき価値は、フォールバック、負荷分散、ログ管理、デプロイメントといった周辺アーキテクチャに宿ります。
要件定義から実装、デプロイ、そして現場からのフィードバック対応まで。「賢いプロトタイプ」を「毎日動く堅牢な道具」へと昇華させるミッションを、妥協なくやり切りました。
▼ 現場の運用に耐えうる業務自動化のアーキテクチャ設計、および一気通貫での実行支援をお求めの方は、以下よりデータリンク(お問い合わせ)ください。