# AI PDF 處理標準作業程序 (AI-PDF Processing SOP)
> **適用場景**:處理財報、法律文件、長篇技術手冊、掃描檔或任何頁碼邏輯複雜的 PDF。
> **核心目的**:徹底解決「機器導航」與「人類引用」的座標衝突,並防止因檔案壓縮或非線性讀取導致的幻覺。
---
## 第一部分:雙重座標導航策略 (Dual-Coordinate Strategy)
**核心原則**:徹底分離「機器運作」與「人類閱讀」的邏輯層。
### 1. 定義兩個真相 (Two Truths)
* **導航唯一真相 (Navigation SSOT)** = **PDF 工具索引 (Tool Index, $I$)**
* **定義**:檔案結構中的絕對序列 ($0, 1, 2, ..., N$)。
* **用途**:**僅供 AI 內部使用**。調用 `read_file(page_index=$I$)` 或跳轉頁面時的唯一依據。
* **鐵律**:嚴禁直接呈現給終端用戶。
* **引用唯一真相 (Citation SSOT)** = **文件印刷頁碼 (Printed Page, $P$)**
* **定義**:頁面角落視覺上呈現的數字字符(如 $1$, $iv$, $A-1$)。
* **用途**:**僅供人類閱讀**。生成報告、註腳、證據列表時的唯一引用依據。
### 2. 無狀態提取協議 (Stateless Extraction Protocol)
針對隨機存取(Random Access)或分塊處理場景,強制執行以下規則以防止慣性偏移:
* **禁止推算 (No Calculation)**:嚴禁使用線性公式 $P = I - \text{Offset}$ 推導頁碼(例如:因為封面是 Index 0,所以 Index 40 一定是 Page 38)。
* **禁止遞歸假設 (No Recursive Assumption)**:嚴禁假設 $P_{current} = P_{prev} + 1$。
* **獨立視覺驗證 (Independent Visual Verification)**:無論從哪一頁開始讀取,AI 必須重新「看」該頁面的頁眉/頁腳,提取真實字符。若視覺上無頁碼,標記為 `No_Num`,絕不可自行補號。
---
## 第二部分:執行三步走 (The 3-Step Workflow)
### Step 1: 建立全域索引 (Global Indexing) ——「雙映射」
在掃描檔案建立索引時,不計算偏移量,而是同時記錄兩組數據。
* **格式範例**:`Chapter 3: [p.15 (Printed) | Index 18 (Tool)]`
* **指令**:掃描全檔或指定範圍,將每一頁的視覺頁碼 $P$ 與工具索引 $I$ 綁定。
### Step 2: 讀取與執行 (Execution) ——「無狀態讀取」
AI 在執行具體讀取任務時:
1. **導航動作**:接收指令跳轉至 Index $I$。
2. **歸零確認**:忽略所有前序頁面的歷史上下文,視當前頁為獨立實體。
3. **視覺錨定**:
* 掃描頁面角落,尋找字符 $P$。
* **比對檢查**:若 $P \neq I$,**以 $P$ 為準**作為引用依據。
4. **記憶動作**:將內容存入記憶體時,標記其引用標籤為 `p.15`。
### Step 3: 報告撰寫 (Reporting) ——「引用淨化」
在輸出最終回應時,執行「引用淨化 (Citation Hygiene)」:
* **過濾**:強制剔除所有 `Index $I$` 資訊。
* **輸出**:只保留 `(Source: Document Name, p.$P$)`。
---
## 第三部分:壓縮與解析策略 (Compression & Extraction)
**核心原則**:根據檔案屬性動態切換處理模式(Text-First vs. OCR-First)。
### 1. 字體與文本層檢查 (Font & Text Layer)
* **檢查點**:嘗試選取或提取文字流 (Text Stream)。
* **異常徵兆**:
* **文字轉曲線 (Outlining)**:視覺可見文字,但無法選取(選取到圖塊)。
* **亂碼熔斷 (Mojibake)**:提取出的文字包含大量空方格 `□` 或亂碼,與視覺字形明顯不符(字體編碼表丟失)。
* **選取率過低**:全檔可選文字比例 < 5%。
* **AI 應對策略**:
* 立即標記為 **「非原生 PDF (Non-Native)」**。
* **強制切換至 OCR 模式**,完全忽略底層 Text Stream,僅依賴視覺層。
### 2. 圖像壓縮檢查 (Image Compression)
* **檢查點**:圖像取樣率 (DPI)。
* **標準**:OCR 最佳解析度建議為 **300 DPI**。
* **異常徵兆**:
* **低解析度 (< 150 DPI)**:文字邊緣模糊,易發生字形混淆(如 `8` 與 `3`)。
* **高噪點 (JPEG Artifacts)**:文字周圍有雜訊斑點。
* **AI 應對策略**:
* 標記 **「源檔模糊 (Low Res)」**。
* 啟用 **「模糊推斷模式」**:利用上下文語義修正 OCR 的拼寫錯誤,而非盲信 OCR 結果。
### 3. 結構與圖層檢查 (Structure & Layers)
* **檢查點**:表單 (Forms)、隱藏圖層 (OCR Layer)。
* **異常徵兆**:
* **隱藏 OCR 層品質差**:許多掃描檔自帶透明文字層,但往往對位不準。
* **未壓平 (Unflattened)**:填寫內容浮於底圖之上,直接讀取可能遺漏。
* **AI 應對策略**:
* **視覺優先 (Vision-First)**:若提取文字與視覺截圖嚴重不符,**丟棄原檔文字層**,由 AI 重新執行 OCR。
* **預處理壓平**:在讀取前邏輯上將所有圖層合併,確保讀取到「人類所見」的最終狀態。
---
## 第四部分:檔案健康度檢查表 (File Health Check)
在處理任何 PDF 之前,AI 應先執行此診斷:
| 檢查維度 | 檢測指標 | 異常判斷 | AI 自動應對策略 (Auto-Fix) |
| :--- | :--- | :--- | :--- |
| **導航** | $P$ (Printed) vs $I$ (Index) | 數值不一致 (Offset) | 啟用 **雙重座標**:內用 Index 導航,外顯 Page 引用。 |
| **解析** | 文字提取品質 | 亂碼 / 空格 / 無法選取 | 放棄 Text Stream,強制啟動 **OCR 引擎**。 |
| **品質** | 圖像 DPI | < 150 DPI | 標記 **Low Res**,降低置信度閾值,啟用語義糾錯。 |
| **結構** | 向量路徑 | 有形狀無文字層 | 視為 **純圖像** 處理 (Vision/OCR)。 |
| **內容** | 隱藏層品質 | $Text_{extracted} \neq Text_{visual}$ | **丟棄原檔 OCR**,重新執行 AI OCR。 |
| **完整性** | 線性化 (Linearization) | 讀取時頁數計算錯誤 | 完整下載檔案後再解析,避免依賴 Fast Web View 表頭。 |