「Upstage DP x Syn Proを用いたドキュメント作業効率化シリーズ(with Weave)Part 1」 では、以下の要点を整理しました。
- Upstage Document Parse(DP)による「構造化」
- Syn Pro による「日本語理解」の役割
ここからは 実際にDP → Syn Proの流れをコードで動かし、要約・抽出・質問対応を行うパートです。
さらに Weights & Biases WeaveのTrace機能を使って、入力 → 構造化 → LLM推論 の流れを“見える化”していきます。

1. DP+Syn Proの基本フロー
ドキュメント処理パイプラインの基本形は次の通りです。
紙・スキャンPDF
→ DP(構造化・OCR)
→ LLM Ready なHTML
→ Syn Pro(要約・抽出・質問対応)
本章では、代表的な 3 つのタスク:
- 要約(Summarization)
- 情報抽出(Information Extraction)
- 質問応答(Question Answering)
について具体例を紹介します。
詳細はfc_2025_upstage_handson:Step1をご覧ください。

2. 要約(Summarization)
以下は、建物清掃見積もり資料(DP で構造化済 HTML)をSyn Proに要約させる例です。
入力(Before):スマホで撮影した清掃見積もり資料
- 2つの段落と複数の表が混在
- 照明や影が入った“実務寄り”の画像

プロンプト
# プロンプト(ドキュメント要約のための指示)
以下のドキュメントを読み、決裁者向けに3〜5行で要点をまとめてください。
--- Document (HTML) ---
{{html_document}}
出力(例)
本見積もりは、建物清掃業務の作業範囲と料金体系をまとめた資料です。
建物規模、機材使用、作業頻度などに応じて基本料金と加算料金が設定されています。
消費税計算、割引条件、注意事項も含まれています。
ポイント:
- DPによって段落・表の構造が整っているため、Syn Proは要点を正確に抽出しやすい
- LLMはドキュメントの要旨を短くまとめるのが得意
3. 情報抽出(Information Extraction)
以下は、建物清掃業務の見積金額算定基準を対象に、特定の情報(=清掃対象の面積に関する情報)だけを抽出するタスクの例です。
入力(Before):構造化された HTMLドキュメント
- 入力データや DPの構造化処理は Step1と同じ

プロンプト
# プロンプト(面積・値段情報を抽出するための指示)
文書内容を見て、清掃対象の面積に関する情報(値段)のみ抽出してください。
--- Document (HTML) ---
{{html_document}}
出力(例)
以下の表は、清掃対象の面積に応じた基本料金(税抜・税込)の情報です:
| 広さ | 基本料金 (税抜) | 基本料金 (税込) |
|----------------|------------------|------------------|
| ~100m² | 8,000円 | 8,800円 |
| 101~500m² | 12,000円 | 13,200円 |
| 501~1000m² | 18,000円 | 19,800円 |
| 1001~2000m² | 25,000円 | 27,500円 |
| 2001m²~ | 35,000円 | 38,500円 |
備考:
- 面積算定時は「共用部・バックヤード・天井高」に留意が必要
- 基本料金には「定期訪問費」「廃棄物処理費」は含まれない
- 小規模施設でも複雑化により面積加重型の見積もりが主流
ポイント:
- - DPによって 表の行・列構造が保持されているため、Syn Proが“面積に関する部分のみ”を正確に抽出できる
- プロンプトを変えるだけで 別の項目(例:料金・階数・契約種別など)も同じ方法で抽出可能
4. 質問応答(Question Answering)
DPによって構造化された HTMLドキュメントを使えば、Syn Proは 表データ・段落情報を理解しながら “条件に基づく質問に答えることも可能です。
ここでは、清掃見積もり資料から
- 特定条件(面積・素材・高所・曜日など)に基づく概算金額の算出
- コスト削減案の提案
という より実務に近いQ&Aタスクを実行します。
入力(Before):構造化済みのHTMLドキュメント
- 入力データやDPの構造化処理はStep1と同じ

プロンプト
# プロンプト(見積概算のための指示)
文書内容を見て、以下2つについて簡潔に答えてください。
・面積(450m2)、素材あり(大型)、高所作業(6m以上)、1階、日曜の場合の概算
・より安価に作業依頼をする方法はないか?
出力(例)
1. 面積(450m²)、素材あり(大型)、高所作業(6m以上)、1階、日曜の場合の概算
- 基本料金(101〜500m²):12,000円
- 機材加算(大型):8,000円
- 高所作業加算(6m以上):8,000円
- 曜日加算(日曜):3,000円
- 合計(税抜):31,000円
- 税込:34,100円
※廃棄物処理費・安全装備費などの追加費用は含まれていません。
---
2. より安価に作業依頼する方法
- 契約期間を6ヶ月〜12ヶ月に延長すると3〜10%割引
- 土日・深夜を避け、平日昼間に依頼することで2,000〜5,000円節約
- 「大型」ではなく「標準」機材を使うことで3,000円節約
- 電源・水道を自社で確保して追加費を回避
- 単発契約ではなく定期契約で10,000円の追加費を回避
- 特殊洗剤・アスベスト除去など高額作業を避けて15,000〜60,000円削減
※詳細な金額は現場の状況により変動します。
ポイント:
- DPが構造化した “表データ” をSyn Proが理解し、金額計算の根拠を推論できる
- 特定条件(面積・曜日・高所作業など)に応じて、複数の加算金額を自動で推定できる
- LLMならではの強みとして、文書に記載されていない “提案”(コスト削減案)にも回答可能
- プロンプトを変えるだけで「概算」「作業計画」「注意点」など別用途にも応用できる
5. Weaveを用いたTrace(処理可視化)
Syn Proを用いた推論は動かせても、実務では次の悩みが出てきます:
- プロンプトを変更したら結果がどう変わる?
- どのPDFに対して何が入力され、どんな結果が出た?
- DP→LLM→ 後処理のどこで失敗している?
これらを整理するのが Weights & Biases WeaveのTrace機能です。
5-1. 最小コード例(@weave.op を付けるだけ)
import weave
weave.init(project="upstage-doc-pipeline")
@weave.op()
def upstage_document_parse(file_path: Annotated[str, Content]) -> str:
"""
📄 文書をHTMLに変換する関数
- Upstage Document AI APIを利用
- ファイルを送信してOCR + HTML化
"""
@weave.op()
def upstage_syn_pro(messages: list) -> str:
"""
🧠 LLMで応答を生成する関数
- Syn Proモデルを使用
- messagesにはsystem / userロールのプロンプトを含む
"""ポイント:
- @weave.opを関数につけるだけで、その関数の実行が自動でWeaveに記録される
- DP → LLMの一連の処理を実行すると、
- Weave上で 「どの入力に対して、どのような結果が返ってきたか」 を木構造で確認できる
- プロンプトやコードを変更した際の 結果比較やデバッグが圧倒的に簡単になる
5-2. Weave UIで見えること
WeaveのTrace UIでは、
- 実行履歴一覧
- 各ステップの入出力の確認
- HTML / Markdown / Dictionary 多様な形式の可視化
が可能になり、実行ログの管理(どのバージョン・どのプロンプトで実行したか)が楽になります。

この可視化は Part3の Evaluation(精度評価) とも連携し、「改善前後でどれだけ良くなった?」を追跡できるようになります。
6. DP × Syn Proの応用可能性(まとめ)
Part 2では、DPと Syn Proを使って、要約・抽出・質問対応の一連の処理を動かし、Weave Traceで 処理フローを可視化できることを確認しました。
ただし、“実際のシステム連携に使えるレベルの情報抽出パイプライン”がまだ完成しているわけではありません。
次の Part 3では、事故詳細報告書をベースに「システム連携前提の情報抽出パイプライン」を構築します。
その評価手段として Weave Evaluationを補助的に使い、抽出精度の確認や改善サイクルの回し方までご紹介します。






