OCR家計簿:スキャン後の仕訳を最短化するルール設計
撮影して読み取るだけでは、家計簿の入力は終わりません。ここでは、スキャン後に「迷わない」「戻らない」ためのルールを、仕訳の手数が最小になる順番で組み立てます。
ゴール
OCR結果が多少揺れても、科目・税区分・支払方法の分岐を毎回同じ基準で解決できる状態にします。ポイントは「ルールを増やす」のではなく、「判断点を減らす」ことです。
- 同じ買い物でも入力が変わらない
- 読み取り誤差は「吸収」して差分のみ扱う
- 例外処理は最後にまとめる
1) 分岐の前に「検証項目」を固定する
仕訳の迷いは、多くの場合「何を見ればいいか」が揺れていることから始まります。まず、スキャン後に毎回確認する項目を固定します。
- 金額(小計/総額のどちらを採用するか)
- 税(税率の特定と、非課税/不課税の判定)
- 日付(会計上の基準日にする)
- 支払方法(現金/クレカ/電子マネー等)
- 店舗/カテゴリ手掛かり(推定の根拠)
ここを固定すると、ルール設計が「判断の統一」になり、入力のブレが減ります。
2) 科目は「最初に決まるもの」から置く
科目の決定順がバラバラだと、後から整合チェックが必要になり手数が増えます。最短化の順番は、必ず揺れにくい手掛かりを先に置きます。
おすすめの決定順(例)
- 店舗名→カテゴリ手掛かり(迷いが少ない先頭決定)
- 品目ヒント→大分類(OCRの揺れを吸収する幅を確保)
- 金額と税→最終確定(矛盾が出たときだけ再判断)
3) 「OCRが揺れる部分」をルールで吸収する
OCRが苦手な箇所をゼロにするのは現実的ではありません。だからこそ、揺れの種類ごとに吸収ルールを用意します。
税区分の揺れ
税率の文字が崩れた場合は「金額と合計の整合」から逆算して確定します。ここでは、税区分が確定しないと先に進まないように設計します。
金額の桁落ち/読み違い
桁の飛びやすい桁数は、入力段階では補正候補として扱い、最終的に合計との突合で決め切ります。
この考え方は、OCR結果の整合性チェックを前提にするとさらに安定します。
4) 例外処理は「最後にまとめる」
例外が先に出る設計だと、その場で判断が分岐して入力が増えます。例外は「通常ルールが通らないときだけ」実行されるレーンに入れます。
例外レーンのテンプレ
- 店舗が未知の場合:カテゴリ保留→後処理で確定
- 税率が特定できない場合:合計整合で再評価
- 日付が不明確の場合:再スキャン優先の指示
5) 確定後の「ラベル運用」で手数を減らす
仕訳が確定したら、その結果をラベルとして再利用します。次回以降の入力では「ラベルから科目・税区分を復元」し、手作業を削ります。
例:店舗カテゴリの一致→支払方法ラベル→税区分の復元、という順に戻ります。