# Tasks: Extract Table Cell Boxes ## Phase 1: 基礎設施 ### Task 1.1: 添加配置項 - [ ] 在 `config.py` 添加 `enable_table_cell_boxes_extraction` 配置 - [ ] 確認現有的表格模型配置可用 ### Task 1.2: 模型緩存機制 - [ ] 在 `PPStructureEnhanced` 中添加模型緩存屬性 - [ ] 實現延遲載入邏輯 - [ ] 添加模型釋放方法(可選) ## Phase 2: Cell Boxes 提取 ### Task 2.1: 修改表格處理邏輯 - [ ] 在 `_process_parsing_res_list` 中添加 cell boxes 提取 - [ ] 實現圖片裁切邏輯 - [ ] 調用 SLANeXt 模型獲取結果 ### Task 2.2: 座標轉換 - [ ] 實現相對座標到全域座標的轉換 - [ ] 處理 ScalingInfo 的座標縮放 - [ ] 驗證座標轉換正確性 ### Task 2.3: 錯誤處理 - [ ] 添加 try-catch 包裝 - [ ] 實現失敗時的降級處理 - [ ] 添加適當的日誌記錄 ## Phase 3: PDF 生成優化 ### Task 3.1: 利用 Cell Boxes 渲染表格 - [ ] 修改 `draw_table_region` 使用 cell_boxes - [ ] 根據實際 cell 位置計算行高列寬 - [ ] 測試渲染效果 ### Task 3.2: 備選方案 - [ ] 當 cell_boxes 不可用時,使用現有邏輯 - [ ] 確保向後兼容 ## Phase 4: 測試與驗證 ### Task 4.1: 單元測試 - [ ] 測試 cell boxes 提取功能 - [ ] 測試座標轉換 - [ ] 測試錯誤處理 ### Task 4.2: 整合測試 - [ ] 使用實際 PDF 測試 OCR Track - [ ] 驗證 PDF 版面還原效果 - [ ] 性能測試 ## Phase 5: 清理 ### Task 5.1: 移除舊代碼 - [ ] 評估並移除不再需要的 Paragraph 包裝代碼 - [ ] 清理調試日誌 - [ ] 更新文檔 --- ## 技術細節 ### 關鍵代碼位置 | 文件 | 修改內容 | |------|---------| | `backend/app/core/config.py` | 添加配置項 | | `backend/app/services/pp_structure_enhanced.py` | 主要實現 | | `backend/app/services/pdf_generator_service.py` | 利用 cell_boxes | ### 依賴 ```python from paddlex import create_model ``` ### 測試數據 - Task ID: `79a3d256-88f6-41d4-a7e9-3e358c85db40` - 表格 bbox: `[84, 269, 1174, 1508]` - 預期 cell 數量: 29 (SLANeXt_wired)