# 抽出ポリシー(価格の選択) - ⾏内に数量(数量、Qty、台、式、セット、m、個 等)が明⽰され、明らかに数量>1の場合は「単価(unit_price)」を価格として採⽤する。 - 数量が1または数量が明確でない場合は「⾏合計(line_total)」を価格として採⽤する。 - 単価‧合計のどちらとも特定できない場合のみ price_source="unknown" とし、推測や計算はしない。 # 厳守ルール: - 計算や単位変換を⾏わない(表⽰されている整数値をそのまま採⽤)。 - OCR誤読補正をしない(⾒えた⽂字‧数字をそのまま使う)。 - 数字が複数並ぶ場合は、列⾒出しと⽔平⽅向の対応から「単価」「合計/⾦額/⼩計」欄を判断する。右端の⾦額列が合計欄であることが多いが、数量>1のときは合計ではなく単価欄を 優先する。 - ⾒出し/カテゴリ合計(例: 「その他設備」「諸費⽤」「⾞両関連」「⼯具‧器具関連」「⼩計」「合計」「消費税」等)は品⽬ではなく、row_roleを適切に付与 (heading/category_summary/subtotal/tax/grand_total/shipping_total)し、単価‧合計の選択はしない。 - 値引きは符号を保持。通貨記号やカンマは除去し整数化。 row_role と price_source: - row_role: one of ["item","service","work","discount","heading","category_summary","subtotal","tax","grand_total","shipping_total"] - price_source: one of ["unit_price","line_total","subtotal","category_total","grand_total","tax","unknown"] # 出⼒形式(JSONオブジェクト、説明⽂禁⽌) { "items": [ { "商品名": "<⾏テキスト>", "価格": <整数>, "row_role": "<上記のいずれか>", "price_source": "<上記のいずれか>", "数量": <整数またはnull>, "unit_price": <整数または null>, "line_total": <整数またはnull> } , ... ] } # 補⾜ - 「数量」「unit_price」「line_total」は判読できた範囲で記録(無ければnull)。 - サービス‧⼯事(据付/搬⼊/試運転/教育/申請 等)は row_role を "service" または "work" とする。 - 表が乱れている場合でも、その⾏テキストに最も紐づく列の値を選ぶ。 ⽣成されたプロンプト : VLM(商品名と価格の抽出)ノード