|
|
@@ -0,0 +1,55 @@
|
|
|
+# 有线表格识别技术文档
|
|
|
+
|
|
|
+本文档详细说明 UNET 有线表格识别模块的技术实现细节,适用于开发人员进行二次开发和问题排查。
|
|
|
+
|
|
|
+## 概述
|
|
|
+
|
|
|
+有线表格识别模块位于 `models/adapters/wired_table/`,提供基于深度学习的表格线检测、网格恢复和文本填充功能。与 VLM 方法相比,UNET 方法更适合处理规则的有线表格,具有更高的精度和更快的处理速度。
|
|
|
+
|
|
|
+## 模块架构
|
|
|
+wired_table/
|
|
|
+├── init.py # 模块初始化
|
|
|
+├── debug_utils.py # 调试工具(可视化输出)
|
|
|
+├── ocr_formatter.py # OCR 格式转换
|
|
|
+├── skew_detection.py # 倾斜检测与矫正 ⭐
|
|
|
+├── grid_recovery.py # 网格恢复(表格线 → 单元格)⭐
|
|
|
+├── text_filling.py # 文本填充(OCR → 单元格)⭐
|
|
|
+├── html_generator.py # HTML 生成
|
|
|
+└── visualization.py # 可视化工具
|
|
|
+
|
|
|
+
|
|
|
+主入口:`models/adapters/mineru_wired_table.py` - `MinerUWiredTableRecognizer`
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 核心流程
|
|
|
+
|
|
|
+### 完整处理流程
|
|
|
+
|
|
|
+```mermaid
|
|
|
+graph TB
|
|
|
+ A[输入:表格图片 + OCR框] --> B[1. OCR预处理<br/>ocr_formatter.py]
|
|
|
+ B --> C[2. UNET线检测<br/>MinerU模型]
|
|
|
+ C --> D{启用倾斜矫正?}
|
|
|
+
|
|
|
+ D -->|是| E[3. 倾斜检测<br/>skew_detection.py]
|
|
|
+ D -->|否| G
|
|
|
+
|
|
|
+ E --> F[4. 图片与坐标矫正<br/>cv2.warpAffine]
|
|
|
+ F --> G[5. 网格恢复<br/>grid_recovery.py]
|
|
|
+
|
|
|
+ G --> H[6. 文本填充<br/>text_filling.py]
|
|
|
+ H --> I[7. HTML生成<br/>html_generator.py]
|
|
|
+
|
|
|
+ I --> J[8. 坐标逆转换<br/>回到原图坐标系]
|
|
|
+ J --> K{识别成功?}
|
|
|
+
|
|
|
+ K -->|是| L[返回HTML + 坐标]
|
|
|
+ K -->|否| M[Fallback到VLM]
|
|
|
+
|
|
|
+ style E fill:#e1f5ff
|
|
|
+ style F fill:#e1f5ff
|
|
|
+ style G fill:#fff4e1
|
|
|
+ style H fill:#fff4e1
|
|
|
+```
|
|
|
+
|