app:
  description: 保険書類のOCR抽出用フィールド仕様と抽出テンプレート（正規表現）を生成するワークフロー
  icon: 🧾
  icon_background: '#E6F7FF'
  mode: workflow
  name: 保険 OCR抽出テンプレ生成
  use_icon_as_answer_icon: false
kind: app
version: 0.6.0
workflow:
  conversation_variables: []
  environment_variables: []
  features:
    file_upload:
      image:
        enabled: false
    opening_statement: ''
    suggested_questions: []
    suggested_questions_after_answer:
      enabled: false
    text_to_speech:
      enabled: false
  graph:
    edges:
    - data:
        sourceType: start
        targetType: llm
      id: start-to-llm1
      source: start
      target: llm1
    - data:
        sourceType: llm
        targetType: end
      id: llm1-to-end
      source: llm1
      target: end
    nodes:
    - data:
        title: 開始
        type: start
        variables:
        - label: query
          max_length: 2048
          options: []
          required: true
          type: paragraph
          variable: query
      height: 90
      id: start
      position:
        x: 80
        y: 282
      type: custom
      width: 244
    - data:
        title: OCR抽出仕様生成 (LLM)
        type: llm
        model:
          provider: openai
          name: gpt-5-mini
          mode: chat
          completion_params:
            temperature: 0.2
        prompt_template:
        - role: system
          text: "あなたは保険書類のOCRテキストを解析して、抽出すべきフィールド定義とそれぞれの抽出用正規表現テンプレートを作成する専門家です。\
            \ 以下の出力ルールを厳守してください。 1) 出力は必ず「JSONのみ」で返すこと。余計な説明や注釈は一切付けないこと。改行やインデントは自由だが有効なJSONであること。\
            \   2) JSONスキーマ:\n   {\n     \"fields\": [\n       {\n         \"field_name\"\
            : \"文字列（短い英数字名, 例: policy_number）\",\n         \"description\": \"日本語の簡潔な説明\"\
            ,\n         \"required\": true/false,\n         \"regex\": \"抽出に使う正規表現（Python/JavaScript互換）。可能なら名前付きキャプチャは使用しないでください。例:\
            \ \\\"\\\\b\\\\d{2,}\\\\b\\\"\",\n         \"example\": \"抽出される想定値の例（OCRテキストからのサンプル）\"\
            \n       }\n     ],\n     \"template\": \"抽出テンプレートや注意点、正規化ルールの説明（短い文字列）\"\
            \n   }\n3) regexは実運用で使えるように現実的・頑健なパターンを作成すること（余分な空白や一般的な区切り文字に配慮する）。可能なら日付は複数形式に対応する正規表現を提示すること。\
            \   4) フィールドの優先度や必須性はOCRテキスト内の有無と重要度に基づいて判断すること。必須と判断した場合は required=true\
            \ とする。   5) 出力するフィールドは過不足なく、同じ意味の項目はまとめて1つのフィールドとして表現すること（例: \"被保険者名\"\
            \ と \"氏名\" が同じなら1つに統合）。   6) OCRのノイズ（Oと0、Iと1、全角/半角）に対する許容や正規化のヒントがあれば\
            \ template に短く記載すること。   7) 最大で20フィールドまで出力可。多すぎる場合は主要フィールドに絞る。  \n"
        - role: user
          text: '以下はOCRで抽出されたテキストです。原文のまま解析し、上記スキーマに従ってJSONを出力してください。

            OCRテキスト:

            {{#start.query#}}

            '
        vision:
          enabled: false
        memory: null
        context:
          enabled: false
      height: 90
      id: llm1
      position:
        x: 380
        y: 282
      type: custom
      width: 244
    - data:
        title: 終了
        type: end
        outputs:
        - value_selector:
          - llm1
          - text
          variable: result
      id: end
      position:
        x: 680
        y: 282
      type: custom
      height: 90
      width: 244
  hash: null
