入庫スキャンアプリ マニュアル
スマホで納品書を撮影 → OCR で読み取り → Excel 商品管理シート.xlsm の入庫数欄に自動で反映するツールです。バーコード入力での直接加算、単位変換ルール (例: 1cs → 6本) にも対応しています。
1. はじめに
動作環境
- 推奨ブラウザ: iPhone Safari / Android Chrome 最新版
- アクセス URL:
https://kurocoma-pc01.tail2b4178.ts.net - 必要権限: カメラアクセス (撮影時) / 写真ライブラリアクセス (ファイル選択時)
主な機能
| 機能 | URL | できること |
|---|---|---|
| ホーム | / | 各機能への入口 |
| 納品書スキャン | /upload | 写真撮影 or ライブラリ選択 → OCR |
| バーコード入力 | /scan-barcode | JAN コードでクイック入庫 |
| 一括結果 | /batch | 複数枚アップ後のサマリー |
| 設定 | /settings | 単位変換ルール等 |
2. 全体フロー
おおまかな業務フローは「撮る → 確認 → 反映」の 3 ステップです。
| ステップ | 主な操作 | 所要時間目安 |
|---|---|---|
| ① ホーム → 撮影/アップロード | 「納品書スキャン」タイル → 📷撮影 or 🖼ライブラリ | 10 秒 |
| ② OCR 自動実行 → レビュー | 自動で 1-2 分待機 → 内容を目視チェック | 1-3 分/枚 |
| ③ 入庫シート反映 | 「入庫シートに反映」 → 実行 | 10 秒 |
3. ホーム画面
タイル形式のメインメニュー。右上の ⚙ (歯車) から設定画面に行けます。
| タイル | 遷移先 | 用途 |
|---|---|---|
| 📥 納品書スキャン | /upload | 写真 → OCR → 入庫シート反映 のメイン経路 |
| 📷 バーコード入力 | /scan-barcode | JAN コードを連続スキャンして加算 |
| 📝 発注書連携 | /purchase-orders/import | NE 受注データから発注書を生成 |
| 📂 在庫一覧 | /inventory | 入庫累計と直近履歴を確認 |
4. 納品書スキャン (写真 → OCR)
4.1 写真を選ぶ 2 通り
- 📷 撮影する — タップでスマホ標準のカメラアプリが起動。撮影後にアプリへ戻ります
- 🖼 ライブラリから選ぶ — 既に撮影済みの写真を写真ライブラリから選択 (複数選択可)
4.2 プレビューでの検出枠と判定バッジ
アップロード直後にサーバが書類の輪郭を検出し、各プレビュー画像の上に 緑/黄/赤の枠 と 判定バッジ を重ねます:
| バッジ | 枠 | 意味 | 推奨アクション |
|---|---|---|---|
| ✓ 良好 | 緑実線 | 書類が画面内に十分入っている | そのまま OCR へ |
| ⚠ ぎりぎり | 黄実線 | カバレッジ 50-60%、端が切れる可能性 | 必要なら撮り直し |
| ✗ 検出失敗 | 赤破線 | 書類を見つけられず、warp スキップ | 撮り直し推奨 |
4.3 撮影のコツ
背景の色が一番効きます
| 背景 | 検出精度 | 備考 |
|---|---|---|
| 黒・濃紺・ダークグレー | ★★★★★ | 100均の黒い厚紙 / 黒い下敷きが便利。一番おすすめ |
| 濃い木目・ダークグリーンのマット | ★★★☆☆ | 動くが、明るい木目だと境界が曖昧 |
| 白い机・明るい色 | ★☆☆☆☆ | コントラストなしで自動検出ほぼ不可。手動「枠を調整」必須 |
その他のチェックリスト
- 真上から、できるだけまっすぐ(斜めだと文字が滲む)
- 書類全体が画面内に収まるよう余白を確保(端切れは復元不可)
- 影や手を写し込まない(自分の頭で蛍光灯を遮らない)
- 横向きの伝票は横向きで撮る(横向き伝票を縦持ちで撮ると Azure が回転を誤検出するケースあり)
- 手ブレに注意(小さな数字は手ブレで誤読されます)
4.4 アップロード実行
画像を 1〜複数枚選んで アップロード&読み取り をタップ。
| 枚数 | 完了後の遷移 |
|---|---|
| 1 枚 | OCR レビュー画面 (/review/<id>) |
| 2 枚以上 | 一括結果画面 (/batch?ids=...) |
5. OCRレビュー画面
OCR 結果を 保存前に必ず目視チェック する画面です。
5.1 ヘッダー情報
- 仕入先名、納品書番号、納品日 (Excel シートに存在する日付ボタンが下に並ぶので、ずれていればタップで修正)
- 小計 (税抜)、消費税、合計金額 (税込)、税区分
5.2 明細
商品コード に仕入先CD を入れると /api/products/lookup を実行し、
- クリーン商品名 (商品マスタ Excel の商品名) を自動補完
- 単価 を未入力なら master.unit_cost で補完
- 単位変換ルール (例: 高江洲酒販 紙パック) にヒットすれば qty × multiplier / 単価 ÷ multiplier を自動適用 → 「(cs → ×6本 適用)」と表示
5.3 sum-bar (明細合計バー)
明細の金額合計が 小計 (税抜) と一致すれば緑、ずれていれば赤の差分表示。OCR 取りこぼし発見に便利。
5.4 アクションバー (画面下部)
| ボタン | 用途 |
|---|---|
| JSON / CSV | OCR 結果を生データでダウンロード |
| 入庫シートに反映 | Excel の入庫データシートへ書込み (次セクション) |
| 保存 | 変更内容を JSON に保存 (履歴も自動記録) |
6. 入庫シートに反映
「入庫シートに反映」をタップすると、書込みプレビューが表示されます。実際の Excel 更新は 実行 ボタンを押すまで行いません。
6.1 セクションの読み方
| セクション | 色 | 意味 | 操作 |
|---|---|---|---|
| ✓ 自動書込 | 緑系 | 該当セルが空 → そのまま書込み | 確認のみ |
| ⚠ 既存値あり | 黄系 | 該当セルに既に数値あり | チェックを入れたら 加算、外せばスキップ |
| ❌ マッチなし | 赤系 | 商品コードがマスタに無い or 日付列が無い | レビュー画面に戻って修正 |
6.2 実行後
- 書込み前に バックアップ が
OneDrive/くりまポータル - ドキュメント/商品管理シート/フォルダにタイムスタンプ付きで自動保存 - 30 日以上経過したバックアップは
scripts/cleanup_backups.pyで自動削除 (タスクスケジューラ登録時) - 反映済みのドキュメントには ✓ Excel反映済 バッジが付き、いつ反映したか分かる
6.3 ファイルがロックされていたら
商品管理シート.xlsm を開いている場合は 409 エラー → ブラウザのアラート が出ます。Excel を閉じてからやり直してください。
7. 一括結果画面 (Batch)
複数枚を一度にアップロードした際の サマリー一覧。
- 各ページのサムネイル + OCR 結果のヘッダー情報 + items 件数
- ページごとに レビュー ボタンで個別の review 画面へ
- 全件まとめて入庫シートに反映 で全ページを一気に書込み可能 (各ドキュメントの save 状態を尊重)
8. バーコード入力
「現場で素早く 1 個ずつ加算したい」場面用。納品書のように OCR ではなく、商品の JAN を直接スキャンします。
8.1 画面構成
- 上部タブ: スキャン / 在庫一覧 (Phase 2 で開放予定)
- 連続モード ボタン (topbar): ON にすると確認ダイアログなしで連続スキャン可能
- コーナーブラケット枠 にバーコードを合わせるとデバイス内蔵の BarcodeDetector / html5-qrcode が JAN を検出
- 検出時に ピッ・ピ (2連音) が鳴り、枠中央に緑の 検出枠 が一瞬光る (iPhone は バイブ非対応のため音と視覚で通知)
8.2 数量入力
画面下部の数式ボタン:
[現在] + [入力] = [合計] [✓ 確定]
- 現在の在庫数 (Phase B 後は実数値) + 入力した加算量 = 合計
- ✓ 確定 をタップでリストに追加
8.3 リストへの追加と入庫シート反映
- スキャンするたびに下部リストに行が増えていく
- 日付 を選んで 📊 入庫シートに反映 をタップで Excel へ書込み
9. 設定
ホームの ⚙ から /settings に行くと設定ハブが開きます。
9.1 単位変換ルール
1cs (ケース) を 6本 等の本数換算で入庫したい商品向けのルール集。
| フィールド | 例 |
|---|---|
| ルール名 | 高江洲酒販 紙パック (1cs → 6本) |
| 仕入先フィルタ (任意) | 高江洲 |
| 商品コード一覧 | 21353, 20949, 21039, ... |
| from-unit / to-unit | cs / 本 |
| 倍率 (multiplier) | 6 |
| メモ | 紙パック商品は 1 ケース = 6 本 |
| 有効/無効 | チェックボックス |
レビュー画面の autofillFromCd が /api/products/lookup レスポンスの unit_conversion フィールドを見て自動適用します。二重適用防止のため data-unit-converted (rule_id) を JSON に永続化。
9.2 仕入先マッピング (近日公開)
納品書 OCR の仕入先名 → 仕入先CD 紐付け。
9.3 商品マスタ同期 (近日公開)
Excel 商品マスタの取込状況と手動再同期。
10. トラブルシューティング
| 症状 | 原因と対処 |
|---|---|
| 検出失敗 (赤破線) ばかり出る | 背景が紙と同色 (白机 + 白紙等)。机の色を変えるか書類の下に黒い紙を敷く |
| OCR 結果の数字が読めていない | 文字が薄い・影が強い → 撮り直し。または手動修正してから保存 |
| 入庫シートに反映で 409 エラー | 誰かが Excel で 商品管理シート.xlsm を開いている。閉じてから再実行 |
| 「アップロードに戻る」 → ホームに戻る | 旧導線。現在は ホームに戻る が正しい (歯車から設定へも) |
| 単位変換が効かない | (1) 商品コードがルールに含まれているか確認 (2) 仕入先フィルタが厳しすぎないか (3) ルールが「有効」になっているか |
| 保存しても review 画面に反映されない | ブラウザキャッシュ。再読み込み (Cmd+R / Ctrl+R)。それでも直らないなら一度 / から入り直す |
| 検出枠が画像と微妙にズレる | スマホの EXIF Orientation が複雑な場合に発生することあり。撮り直しで多くは解消 |
11. 用語集
| 用語 | 意味 |
|---|---|
| JAN | 13桁の商品共通バーコード番号 (Japanese Article Number) |
| 仕入先CD | 仕入先内部の商品コード (例: 21353)。商品マスタ Excel の D 列 |
| NEコード | ネクストエンジン側の商品コード (例: r004-0522-1) |
| 商品マスタ | 商品管理シート.xlsm の「商品マスタ」シート。クリーン商品名のソース |
| クリーン商品名 | 楽天/Yahoo の SEO 詰込タイトルではなく、商品マスタにある短い人間用商品名 |
| 単位変換ルール | 1cs を 6本 等に換算するルール。data/unit_conversions/rules.json |
| 書類輪郭検出 | スマホ写真から書類の 4 隅を検出 → パース補正する処理 (OpenCV) |
| カバレッジ (cov_w / cov_h) | 検出 quad が画像の何%を占めるか。50% 未満は warp スキップ |
| 入庫シート | 商品管理シート.xlsm 内の _<年>年<月>月_<月>月入庫データ シート (四半期毎) |
12. 既知の制限
- iPhone は web からバイブできない — 確定音 + 視覚で代替
- iOS Safari は torch (ライト) 制御非対応 — Android のみ動作
- OneDrive 同期中の xlsm への書込み — ロック競合の可能性。書込み失敗時はアラートが出る
- 書類が画面外にはみ出してる写真 — 輪郭検出失敗。撮り直し推奨 (badge が赤破線)
- 発注書連携 / 在庫一覧 タイル — まだ Phase 2 (実装途上)
- 単位変換は仕入先CD ベース — JAN のみの商品は仕入先CD が無いので対象外
- OCR エンジン — Azure Document Intelligence (Read API) を使用。文字化け/欠落は発生し得るため必ず目視チェック