紙の作業指示書は数学の問題です。
1ステップで解決する方法はこちら。
2026年6月、Field Promaxは300社のHVAC企業から10,000以上のデータポイントを分析したレポートを公開しました。その結果、平均的な技術者は1日8.8時間の有給労働時間を費やしていますが、実際に請求可能なのはわずか5.7時間(65%)です。残りの3時間は、移動時間、待機時間、車両メンテナンス、書類作業に消えていきます。その最後のカテゴリ(書類作業)は、新しいトラックを購入したり、ディスパッチャーを雇ったりする必要がない数少ない項目の1つです。必要なのは、技術者が記入するすべての紙の作業指示書に存在する数学の問題を解決することです。

紙の作業指示書に潜む数学の問題

技術者がサービスコールを終えます。クリップボードから紙の作業指示書を取り出し、やったことを走り書きします — 労働時間2.5時間、コンデンサ交換($38.50)、R-410Aを2ポンド追加($42/lb)、サービスコール料金。顧客のサインをもらい、次のコールへと向かいます。
その日の終わりに、それらのシートはオフィスの机に置かれます。誰か — 請求業務を担うディスパッチャー、遅くまで働くオーナー、パートタイムの簿記係 — が最初の1枚を手に取り、計算を始めます:
これが、明白なのに見えにくい数学の問題です。複雑なものではありません — 掛け算と足し算、中学の算数レベルを超えるものはありません。しかし、木曜日の午後7時に30回続けて行うと、部品番号の4桁目がぼやけて見えてきます。小数点の位置を間違えるとお金が失われます。値上げを忘れると利益率が失われます。
米国生産性品質センター(APQC)のベンチマークによると、手作業による請求書処理の年間エラー率は約2%です。月に500件のジョブを処理するフィールドサービス企業の場合、毎月10件のジョブで計算エラーが発生することになります。過請求による問い合わせの電話、あるいは気づかないままの過少請求です。配管業者の経営者がRedditのr/Plumbingでこう述べています。「よく聞く最大の悩みは配車ではなく、材料費と時間を差し引いた後に実際に利益が出たジョブを追跡することだ」と。
データ抽出のステップ(作業指示書を読み取ってスプレッドシートに数値を入れる作業)は、作業の半分にすぎません。残りの半分は、その数値に対して計算を行うことです。そして、ほとんどの小規模サービス企業では、計算は今も誰かの頭の中、電卓、またはバッチごとに作り直さなければならないスプレッドシートの数式の中で行われています。
計算列が方程式にもたらすもの
ほとんどの文書抽出ツールは抽出用に作られています。ページ上のデータを見つけてスプレッドシートのセルに配置します。「労働時間」と「時給」を探すように指示すれば、すべての作業指示書からそれらの数値を忠実に取り出します。しかし、それらを掛け合わせることはしません。その部分は抽出後にExcelで自分で行うことになります。

計算列は、この役割分担を変えます。抽出が行われる前に計算を定義できるため、AIは文書を読み取ると同時に計算を実行します。HoursとRateを2つの列に抽出してから数式で3つ目の列を作成する代わりに、両方を実行する1つの列を定義します:
列名: Labor Cost (Hours × Rate)
AIが作業指示書を読み取り、時間とレートの値を見つけて掛け算し、結果を直接「Labor Cost」列に配置します。中間の数値は表示されず、答えだけが得られます。
計算は抽出後ではなく、抽出中に行われます。AIが文書を読み取り、関連フィールドを見つけ、計算を実行し、結果をセル値として出力します。データがスプレッドシートに届いた後に行う2番目のステップや書くべき数式はありません。これが計算列と、ページから値を取り出すだけのツールとの違いです。
これらの計算を定義する方法は2つあります。列名メソッド(Line Total (Qty × Unit Price)のように列ヘッダーに直接計算式を書く方法)は、ログイン不要でデモですぐに機能します。ルール形式(ログインユーザーが利用可能)では、列名をすっきり保ちながら、バックグラウンドでJSONルールに複数ステップの計算ロジックを定義できます。これは、1つの結果が文書の異なる部分から抽出された3つまたは4つのフィールドに依存する場合に便利です。
フィールドサービスでは、成果が一日の終わりにやってきます。あの5段階の計算チェーン(時間×レート、材料×値上げ率、合計、税、総額)は、たった一つのアクションに集約されます。作業指示書の写真をアップロードし、列に名前を付け、結果をダウンロードするだけです。
最初の作業指示書計算を設定する
実際の例で見ていきましょう。技術者が住宅用エアコン修理の紙の作業指示書を渡してきます。その指示書には手書きで以下の項目が記入されています。
- 日付: 6/23/2026
- 技術者: Mike
- 顧客: Johnson Residence
- 作業内容: コンデンサーファンモーター交換
- 作業時間: 1.75時間
- 時間単価: $85/hr
- 材料: ファンモーター — $142.00
- 材料値上げ率: 30%
- 出張費: $79

出力には請求可能な金額を含めたいはずです。指示書の生の数字だけでなく、顧客の請求書に直接載る計算済みの明細項目です。列の設定方法は次のとおりです。
| 列名 | 機能 | 出力例 |
|---|---|---|
Technician | 直接抽出 — 名前を読み取るだけ | Mike |
Customer | 直接抽出 | Johnson Residence |
Labor Cost (Hours × Rate) | 両方のフィールドを見つけて掛け算 | $148.75 |
Material Cost (Cost × 1.30) | 各材料行に30%の値上げ率を適用 | $184.60 |
Service Call Fee | 直接抽出 | $79.00 |
Subtotal (Labor Cost + Material Cost + Service Call Fee) | 3つの請求可能カテゴリを合計 | $412.35 |
Work Description | 直接抽出 | コンデンサーファンモーター交換 |
作業指示書の写真をアップロードし、それらの列名を入力すると、出力はスプレッドシートの1行になり、すべての数字がすでに請求可能な金額になっています。数式を待つ生の入力ではありません。「Subtotal」列は、Excelの数式のようにこの特定のドキュメントのセルB2×C2を参照するわけではありません。「Labor Cost」「Material Cost」「Service Call Fee」の意味的な意味を参照します。これは、技術者がどこに書いたかに関係なく、AIがどの作業指示書でも見つけられる概念です。
これが位置ベースの数式(レイアウトが変わると壊れる)と意味ベースの計算(座標ではなく意味を参照するため、レイアウトの変更に耐えられる)の違いです。Mikeがある指示書では作業時間を左上に、次の指示書では右下に書いたとしても問題ありません。AIは「1.75」と「85」が何を表すかを理解して見つけ出すのであって、どこにあるかで見つけるわけではありません。
作業指示書に必要な5つの計算
HVAC、配管、電気、一般的な現場サービスにおいて、ほとんどの作業指示書は同じいくつかの数学的演算に集約されます。ここでは、請求シナリオの大部分をカバーする5つの計算と、それぞれを機能させるために入力する列名を紹介します。
1. 人件費 = 時間 × レート
T&M(時間と材料)請求の基本です。すべての技術者が同じレートであれば簡単ですが、技術者や作業の種類によってレートが異なる場合は、次のように設定できます。
単一レート: Labor Cost (Hours × 85) — シートに表示されている時間に固定レートの$85を掛けます。
技術者ごとにレートが異なる場合: Labor Cost (Hours × Rate) — シートから両方の値を読み取ります。各技術者が自分のレートを書き留めるようにしてください。
残業倍率: Overtime Pay (OT Hours × Rate × 1.5) — 時間外や週末の対応でレートが変わる場合に使用します。
2. 材料費 = 単価 × 数量 × 値上げ率
材料は仕入れ原価ではなく、値上げした価格で請求する必要があります。値上げ率は事業によって異なりますが、NetSuiteのT&M契約ガイドラインによると、15〜35%が一般的です。
品目ごとの値上げ: Material Line Total (Qty × Unit Cost × 1.30) — 各明細項目について、数量に単価を掛け、その後30%の値上げを適用します。シートに「ファンモーター — 1台 × $142.00」と表示されている場合、出力は$184.60になります。
材料をまとめて値上げ: Total Materials (Sum of all material line items × 1.30) — まずすべての材料費を合計し、その後一度だけ値上げを適用します。
3. 小計 = 労務費 + 材料費 + 手数料
Subtotal (Labor Cost + Total Materials + Service Call Fee)
AIが3つのカテゴリを合算し、税抜きの合計を算出します。「Labor Cost」を合計するよう指定した場合、AIは生のドキュメントフィールドではなく、直前に計算した労務費の結果を探して使用します。
4. 税額 = 小計 × 税率
Tax (Subtotal × 0.0825) — 消費税を8.25%で計算します。お住まいの地域に合わせて乗数を変更してください。
5. 合計 = 小計 + 税額
Total Due (Subtotal + Tax) — 最終的な請求可能額で、請求書にそのまま貼り付けられます。
計算は5つ。抽出は1回。AIが作業指示書から生の数値を見つけ出し、算術演算を実行し、すべてのセルが完成した請求値となる行を出力します。列名が仕様書です — 必要なものを定義すれば、AIが技術者の記載内容から計算方法を判断します。
Excelの数式列とは異なり、計算定義は移植可能です。Labor Cost (Hours × Rate) を列として定義すると、技術者の手書きが丁寧でも乱雑でも、時間フィールドが左上にあってもコメント欄に埋もれていても、バッチ内のすべての作業指示書で機能します。Excelでは、=B2*C2 という数式はこのドキュメントのレイアウトの特定セル位置に固定されており、レイアウトが変わると静かに壊れます。抽出と計算を1ステップで行うことで、座標ではなく意味に基づいて計算を維持できます。
1枚の作業指示書から50枚へ — バッチ処理で変わること
計算列の威力は、規模が大きくなると顕著になります。技術者4名、各1日5件の訪問をこなす小規模なHVAC事業者の1週間を考えてみましょう。1日20枚、1週間で100枚の作業指示書になります。各シートに前述の5段階の手動計算チェーンが必要な場合、オフィスでは週に500回の個別の算術演算を行うことになります — しかも、エラーや修正、「この数字はどういう意味ですか?」という技術者への問い合わせがないという前提です。
バッチ処理と計算列を使えば、ワークフローは次のように圧縮されます:
1週間分の作業指示書 — 100行、7列、700セル — そのすべてに完成した数字が入っています。数式を待つ「時間: 1.75、レート: 85」という2つの別々のセルではありません。1.30を掛ける必要がある原材料費の列でもありません。完成した数字です。スプレッドシートは請求書としてそのまま使える出力であり、手作業の次の工程への入力ではありません。
現在、1枚の作業指示書あたり約15分を手計算に費やしている企業なら、週に25時間のオフィス業務時間が浮きます。オフィススタッフの時給が$25/時間の場合、計算作業だけで週$625の節約になります。問い合わせ対応の電話が減る分は、まだ数えていません。
ここで1つ注意点があります。AIが計算を行いますが、技術者の手書き文字から入力を読み取る必要があり、にじんだ「1.75」が「7.75」と読まれる可能性があります。レビューモードを使えば、請求書を送る前に確認できます。抽出されたセルにカーソルを合わせると、作業指示書の写真が値の出所を正確にハイライトするので、労働時間や部品価格を紙と照合して1秒で確認できます。フィールドを変更してAIの元の読み取り値に戻したい場合は、ワンクリックで復元できます。事前にチェックを準備しておきたい店舗は、自動注釈をオンにすれば、結果が届いた時点でソースのハイライトが生成されています。
ペンと紙の習慣を変える必要がない理由
フィールドサービスのデジタル化でよくある前提は、技術者を完全に紙から離し、紙の作業指示書をモバイルアプリ、デジタルフォーム、タブレットのチェックリストに置き換える必要があるというものです。それは長期的には良い目標ですが、大きな負担でもあります。デバイスの購入、20年間紙に書いてきた技術者のトレーニング、現場での画面割れやバッテリー切れへの対応、そして空調修理とは無関係なIT調達と展開の管理が必要になります。これが、現場中心の職種では、手書きの記録が、それを置き換えるために作られたアプリよりも長持ちする大きな理由です。
計算列のアプローチでは、技術者のワークフローを一切変える必要はありません。クリップボードもペンもそのままです。時間、使用部品、顧客名、作業内容を、これまで通り書き続けます。変化が起こるのは、紙が技術者の手を離れた後です。
技術者が紙の
作業指示書に記入
→
オフィスで
写真を撮影
→
AIが読み取り
計算
→
請求可能な金額が
スプレッドシートに
紙は残ります。クリップボードも残ります。計算 — 週500回の算術演算、月10件の計算ミス、請求書1枚あたり15分 — その部分だけがなくなります。
これは、ほとんどの現場サービスソフトウェアが企業に求めることの正反対です。ServiceTitan、Jobber、Housecall Proは強力なプラットフォームですが、すべての技術者にモバイルアプリの使用を要求します。5人体制の工場で、そのうち2人がまだガラケーを使っている場合、それは導入不可能です。紙の作業指示書からの計算列抽出により、デバイスの展開なしで請求の自動化が実現します。技術者は得意なことを続けられます。オフィスは手計算をやめられます。
FAQ
技術者ごとに時給が異なる場合はどうすればよいですか?
作業指示書自体に時給を記入してください。各技術者が自分の作業時間とともに時給を記載します。Labor Cost (Hours × Rate)という列名を使用すると、AIが各シートから両方の値を読み取り、ジョブごとに技術者ごとの正しい時給を適用します。時給が標準化されており、列定義に組み込みたい場合は、Labor Cost (Hours × 85)のような固定乗数を使用してください。
手書きの作業指示書にも対応できますか?
はい。AIは手書き文字、活字体、筆記体を読み取り、技術者によって筆跡が異なってもフィールドの意味を理解します。文字を1文字ずつOCRして数字になることを期待しているわけではありません。ドキュメント全体を読み取ります。つまり、走り書きのテキストのブロックが金額の横にあり、その隣に「capacitor」という単語があるのを見て、たとえ筆跡が乱れていても、これはコストを伴う材料の明細項目であると理解します。
AIが汚れた手書きの金額を正しく読み取ったかどうかはどうやって確認できますか?
請求書を送信する前に、レビューモードで確認してください。抽出されたセルにカーソルを合わせると、元の作業指示書の写真が値の取得元の領域をハイライトするため、誤読した「1.75」がすぐに目立ちます。フィールドを手動で修正した場合も、AIの元の読み取り値はワンクリックで表示され、必要に応じて元に戻せます。
値上げ率がジョブの種類によって異なる場合(住宅30%、商業20%)はどうすればよいですか?
各シートに値上げ率が記載されている場合は、Material Cost (Cost × Markup)を使用し、技術者に該当するパーセンテージを記入してもらいます。値上げ率がジョブの種類ごとに標準化されている場合は、住宅用と商業用のバッチを異なる列定義で別々に処理するか、推論列を使用してください。Job Type (options: Residential / Commercial)のような列と、Markup Rate (If Job Type = "Residential" then 1.30, else 1.20)のような別の列を定義します。AIが作業指示書を読み取り、ジョブの種類を分類し、1回の処理で正しい値上げ率を適用します。
スマホで撮影した写真でも使えますか?
はい。紙の作業指示書をスマホで撮影した写真も入力として使用できます。AIが不均一な照明、わずかな角度、影を処理します。最良の結果を得るには、指示書を机の上で平らにし、スマホを真上から構えて撮影してください。ただし、トラックのボンネット上でさっと撮影した場合でも、ほとんどのケースで機能します。
一度に何枚の作業指示書を処理できますか?
バッチアップロードでは、1つのキューで数十〜数百のファイルを処理できます。無料ユーザーは限られた数でテスト可能で、有料プランでは月間処理枠に応じてスケールアップします。月額$9のBasic Planは軽い週次利用に適しており、月額$19のPro Planは複数技術者による日次のバッチ処理に対応します。
技術者がサービスコール料金などの項目を書き忘れた場合はどうなりますか?
全ジョブで固定のサービスコール料金を使用している場合は、それを列定義に組み込んでください:Subtotal (Labor Cost + Material Cost + 79)。$79は計算ルールの一部となり、指示書に記載する必要は一切ありません。AIがすべてのジョブに自動的に追加します。これは計算列の過小評価されがちな強みの1つです — 固定パラメータ参照。ビジネスルールに組み込まれた数値(税率、標準料金、固定訪問料金)は、毎回の指示書に記載する必要はありません。列定義に一度エンコードされ、バッチ全体で一貫して適用されます。
ファイルは安全に処理され、保存されません。