
從工程量清單中提取 AI 訓練數據:完整指南
如何將工程量清單(BOQ)文件轉換為結構化 AI 訓練數據——包含四個提取子階段、品質檢查和輸出格式,適用於建築與工程 AI 應用程序。
工程量清單(BOQ)是建築和工程行業中最重要——也是格式最混亂的——文件類型之一。每個承包商、顧問公司和業主都有自己的格式、命名慣例和層次結構。這種格式多樣性正是使 AI 訓練數據從 BOQ 中提取如此有價值的原因——以及如此困難的原因。
本指南詳細介紹了將 BOQ 文件轉換為結構化 AI 訓練數據所需的四個提取子階段、每個階段的品質檢查,以及最終輸出格式,適用於三個主要的下游 AI 用例。
BOQ 文件的結構
在討論提取之前,了解你要處理的內容至關重要。
工程量清單通常包含:
層次結構
- 部分(Division / Section):主要工作類別(土木工程、結構工程、機電工程等)
- 子部分:特定工作類型
- 項目代碼:層次識別符(如 02.03.01.A)
- 行項目:最小的可報價工作單元
每個行項目的欄位
- 項目代碼(Item Code)
- 描述(Description):通常是多行文字
- 數量(Quantity):數值
- 單位(Unit):m、m²、m³、kg、噸、個等
- 單價(Rate):每單位費用(有時留空供投標)
- 總價(Amount):數量 × 單價
常見複雜性
- 跨頁的描述
- 嵌套的條件項目(「如果 X,則加上 Y」)
- 不一致的單位格式(m² vs sqm vs sq.m.)
- 注釋和假設(通常在頁面底部或側邊)
- 引用規範的交叉引用
四個提取子階段
階段 1:結構偵測
目標是在做任何實質性提取之前,先理解文件的組織方式。
此階段做什麼:
- 識別頁面佈局類型(表格式、段落式、混合式)
- 偵測列結構和標題行
- 識別分層邊界(新部分從哪裡開始)
- 確定項目代碼格式(格式常因文件而異)
品質檢查:
- 偵測到的列數與預期相符嗎?
- 識別出的分層邊界有意義嗎?
- 是否有任何頁面沒有被識別為表格但應該是?
常見失敗:
- 將標題行解析為數據行
- 遺漏跨頁列對齊的偏移
- 將數字描述混淆為項目代碼
階段 2:行項目解析
逐行提取每個 BOQ 行項目,將其轉換為結構化記錄。
每條記錄提取的字段:
{
"item_code": "03.02.01.B",
"description": "以機器澆注的混凝土 C30/37,包括所有材料、勞工...",
"quantity": 145.0,
"unit": "m³",
"rate": null,
"amount": null,
"section": "03 - 混凝土工程",
"sub_section": "03.02 - 原位混凝土",
"page_reference": "P-47",
"notes": []
}
複雜情況的處理規則:
- 多行描述:合併行,保留換行符
- 空率/金額:設為 null(不要設為 0)
- 注釋行:分別追蹤,關聯到最近的行項目
- 匯總行:用
is_summary: true標記,不視為訓練數據
品質檢查:
- 各部分的行項目總計是否與頁面匯總行一致?
- 提取的數量是否在對應單位的合理範圍內?(1,000,000 m² 的牆面積可能是解析錯誤)
- 是否有任何描述字段為空?
階段 3:標準化
原始提取結果通常包含格式不 一致。標準化階段解決這些問題。
單位標準化 將所有單位變體標準化為規範形式:
| 原始 | 標準化 |
|---|---|
| sqm、sq.m.、SQM | m² |
| cbm、cum、CUM | m³ |
| lm、lin m、LM | m |
| no.、nr.、NR | 個 |
| tonne、T、MT | 噸 |
描述清洗
- 移除多餘的空格和換行符
- 標準化標點符號
- 識別並標記規範引用(BS、EN、ASTM 等)
數量驗證
- 確認數量是正數
- 標記統計異常值(超出中位數 10 倍以上的值)
- 交叉引用行級金額與數量 × 單價(如果兩者都存在)
品質檢查:
- 標準化前後的行數是否相同?
- 單位分佈是否合理(預計工程量清單中 m² 和 m³ 很常見)?
- 是否有任何數量在標準化後變為 0 或負數?
階段 4:交叉引用提取
許多 BOQ 引用外部規範、圖紙和標準。提取這些引用既豐富了訓練數據,也為下游 RAG(檢索增強生成)應用建立了關聯。
提取的引用類型:
- 規範引用(「按照 BS 8110 第 1 部分」)
- 圖紙引用(「見圖 S-12」)
- 施工方法注釋(「按業主批准的方法陳述書施工」)
- 替代材料條款(「或業主批准的同等材料」)
輸出格 式:
{
"item_code": "05.01.03.A",
"references": [
{"type": "standard", "code": "BS 8110", "part": "Part 1"},
{"type": "drawing", "code": "S-12"},
{"type": "method_statement", "code": null}
]
}
品質檢查:
- 提取的規範代碼是否是已知格式(BS、EN、ASTM、ACI)?
- 圖紙引用是否與圖紙清單交叉驗證(如果可用)?
預期數據集規模
處理典型規模的 BOQ 項目時可以預期的行項目數:
| 項目類型 | 典型 BOQ 規模 | 提取的行項目 |
|---|---|---|
| 住宅單棟建築 | 100-300 頁 | 1,000-5,000 |
| 商業辦公樓 | 300-800 頁 | 5,000-20,000 |
| 基礎設施項目(道路、橋樑) | 500-2,000 頁 | 15,000-60,000 |
| 大型工業設施 | 1,000+ 頁 | 50,000-200,000 |
一個合理的 BOQ 訓練數據集——覆蓋建築類型、地區和時間段——應包含 10,000 至 150,000 個行項目以上,具體取決於目標模型的任務。
輸出格式
根據您的下游 AI 用例,BOQ 訓練數據有三種主要輸出格式。
格式 1:用於分類微調的 JSONL
用於訓練可以分類 BOQ 行項目、識別異常數量或標記缺失資訊的模型:
{"prompt": "對以下 BOQ 行項目進行分類:\n項目代碼:04.02.01.A\n描述:230mm 厚磚牆,以 M5 砂漿砌築...\n數量:847\n單位:m²", "completion": "類別:砌體工程\n子類別:磚牆\n材料:磚\n厚度:230mm\n砂漿等級:M5"}
格式 2:用於提取訓練的 CSV
用於訓練可以從未結構化的 BOQ PDF 中提取結構化數據的模型:
source_text,item_code,description,quantity,unit
"04.02.01.A 230mm 厚磚牆,以 M5 砂漿砌築......847 m²","04.02.01.A","230mm 厚磚牆,以 M5 砂漿砌築...",847,"m²"
格式 3:用於 RAG 的分塊文本
用於建立可以回答關於 BOQ 數據問題的知識庫:
[BOQ-SECTION: 04 - 砌體工程]
[PROJECT: ABC 辦公大樓]
[DATE: 2025-03]
部分 04.02 - 磚砌工程
04.02.01.A - 230mm 厚磚牆
數量:847 m²
工作包括:以 M5 砂漿砌築的 230mm 厚磚牆,包括所有...
[引用: BS EN 1996-1-1]
常見提取挑戰及解決方案
掃描 PDF vs. 原生 PDF 許多 BOQ 是掃描的紙質文件。掃描件需要 OCR 預處理,其中數字識別(特別是數量和單價)比文字識別更容易出錯。解決方案:對 OCR 後的數字字段應用置信度閾值,低置信度的記錄標記為需要人工審查。
多版本 BOQ 項目通常會產生多個 BOQ 版本(B1、B2、最終版等)。在合併版本之前,識別並追蹤版本歷史非常重要,以免混淆訓練信號。
不一致的層次深度 有些 BOQ 有兩個層次(部分 → 行項目),有些有四個或五個層次。提取管線應對層次深度具有靈活性,而非假設固定的結構。
混合語言 特別是在國際項目中,BOQ 可能在英語部分說明旁附有阿拉伯語、法語或其他語言的描述。語言識別和適當的標記對於下游多語言模型訓練很重要。
從 BOQ 數據中構建 AI 應用
以結構化形式提取的 BOQ 數據為多種 AI 應用奠定了基礎:
成本估算輔助:微調模型,在給定項目描述和位置的情況下預測 BOQ 數量或費率。
規範合規檢查:在 BOQ 描述和相關規範之間訓練交叉引用,以識別描述不完整或不一致的項目。
BOQ 生成:在足夠的歷史數據上,模型可以為新項目起草初始 BOQ——這是建築行業一個主要的效率提升機會。
數量差異分析:比較同一項目類型跨多個項目的 BOQ,識別數量異常可能表示的估算錯誤或範圍差異。
使用 Ertas 處理 BOQ 文件
BOQ 提取是 Ertas Data Suite 的核心用例之一。文件攝取模塊處理原生 PDF 和掃描 PDF,使用帶置信度評分的 OCR;清洗模塊應用單位標準化和數量驗證規則;標注模塊允許人工審查員驗證低置信度的提取;匯出以 JSONL、CSV 或 RAG 就緒的分塊格式提供完整稽核追蹤。
由於 Ertas 作為原生桌面應用程序運行,BOQ 文件——通常包含商業敏感的定價信息——在整個過程中保留在您的本地基礎設施上。
Ship AI that runs on your users' devices.
Free plan with 30 credits/mo, no card required. Paid plans from $25/mo USD.


