## Context OCR Track 使用 PP-StructureV3 處理文件,將 PDF 轉換為 PNG 圖片(150 DPI)進行 OCR 識別,然後將結果轉換為 UnifiedDocument 格式並生成輸出 PDF。 當前問題: 1. 表格 HTML 內容在 bbox overlap 匹配路徑中未被提取 2. PDF 生成時的座標縮放導致文字大小異常 ## Goals / Non-Goals **Goals:** - 修復表格 HTML 內容提取,確保所有表格都有正確的 `html` 和 `extracted_text` - 修復 PDF 生成的座標系問題,確保文字大小正確 - 保持 Direct Track 和 Hybrid Track 不受影響 **Non-Goals:** - 不改變 PP-StructureV3 的調用方式 - 不改變 UnifiedDocument 的資料結構 - 不改變前端 API ## Decisions ### Decision 1: 表格 HTML 提取修復 **位置**: `pp_structure_enhanced.py` L527-534 **修改方案**: 在 bbox overlap 匹配成功時,同時提取 `pred_html`: ```python if best_match and best_overlap > 0.1: cell_boxes = best_match['cell_box_list'] element['cell_boxes'] = [[float(c) for c in box] for box in cell_boxes] element['cell_boxes_source'] = 'table_res_list' # 新增:提取 pred_html if not html_content and 'pred_html' in best_match: html_content = best_match['pred_html'] element['html'] = html_content element['extracted_text'] = self._extract_text_from_html(html_content) logger.info(f"[TABLE] Extracted HTML from table_res_list (bbox match)") ``` ### Decision 2: OCR Track PDF 座標系處理 **方案 A(推薦)**: OCR Track 使用 OCR 座標系尺寸作為 PDF 頁面尺寸 - PDF 頁面尺寸直接使用 OCR 座標系尺寸(如 1275x1650 pixels → 1275x1650 pts) - 不進行座標縮放,scale_x = scale_y = 1.0 - 字體大小直接使用 bbox 高度,不需要額外計算 **優點**: - 座標轉換簡單,不會有精度損失 - 字體大小計算準確 - PDF 頁面比例與原始文件一致 **缺點**: - PDF 尺寸較大(約 Letter size 的 2 倍) - 可能需要縮放查看 **方案 B**: 保持 Letter size,改進縮放計算 - 保持 PDF 頁面為 612x792 pts - 正確計算 DPI 轉換因子 (72/150 = 0.48) - 確保字體大小在縮放時保持可讀性 **選擇**: 採用方案 A,因為簡化實現且避免縮放精度問題。 ### Decision 3: 表格質量判定調整 **當前問題**: `_check_cell_boxes_quality()` 過度過濾有效表格 **修改方案**: 1. 提高 cell_density 閾值(從 3.0 → 5.0 cells/10000px²) 2. 降低 min_avg_cell_area 閾值(從 3000 → 2000 px²) 3. 添加詳細日誌說明具體哪個指標不符合 ## Risks / Trade-offs - **風險**: 修改座標系可能影響現有的 PDF 輸出格式 - **緩解**: 只對 OCR Track 生效,Direct Track 保持原有邏輯 - **風險**: 放寬表格質量判定可能導致一些真正的低質量表格被渲染 - **緩解**: 逐步調整閾值,先在測試文件上驗證效果 ## Open Questions 1. OCR Track PDF 尺寸變大是否會影響用戶體驗? 2. 是否需要提供配置選項讓用戶選擇 PDF 輸出尺寸?