# 表格标注工具流程
## 简要操作流程
```mermaid
flowchart TD
Start([开始]) --> Step1[1. 选定数据源]
Step1 --> Step1a[预定义数据源
config/data_sources/*.yaml]
Step1 --> Step1b[临时选择数据源
图片目录 + JSON目录 + 输出目录]
Step1a --> Step2[2. 框定表格区域]
Step1b --> Step2
Step2 --> Step2a[OCR检测表格区域]
Step2 --> Step2b[人工框定表格区域]
Step2a --> Step3[3. 标注表格线]
Step2b --> Step3
Step3 --> Step3a[手动标注
移动/增加/删除横竖线]
Step3 --> Step3b[选择模板自动标注
竖线: 相对坐标
横线: OCR自适应]
Step3a --> Step4[4. 保存标注结果]
Step3b --> Step4
Step4 --> Step5{5. 是否保存为模板?}
Step5 -->|是| Step5a[保存为标注模板
针对此类交易流水]
Step5 -->|否| Next{继续标注?}
Step5a --> Next
Next -->|是| Step2
Next -->|否| End([完成])
style Start fill:#e1f5ff
style End fill:#c8e6c9
style Step1 fill:#fff4e1
style Step2 fill:#fff4e1
style Step3 fill:#fff4e1
style Step4 fill:#fff4e1
style Step5 fill:#fff3e0
style Next fill:#fff3e0
style Step1a fill:#e1f5ff
style Step1b fill:#e1f5ff
style Step2a fill:#e1f5ff
style Step2b fill:#e1f5ff
style Step3a fill:#e1f5ff
style Step3b fill:#e1f5ff
style Step5a fill:#fff4e1
```
## 详细流程图
```mermaid
flowchart TD
Start([开始标注]) --> SelectDataSource{选择数据源}
SelectDataSource -->|预定义数据源| PredefinedSource[加载预定义数据源配置
table_line_generator/backend/config/data_sources/*.yaml]
SelectDataSource -->|临时选择数据源| ManualSource[手动配置数据源]
ManualSource --> SetImageDir[设置图片目录]
SetImageDir --> SetJsonDir[设置JSON目录
包含表格bbox和单元格bbox]
SetJsonDir --> SetOutputDir[设置输出目录
标注结果保存位置]
PredefinedSource --> LoadFiles[加载图片和JSON文件对]
SetOutputDir --> LoadFiles
LoadFiles --> SelectPage[选择要标注的页面]
SelectPage --> DetectTableRegion{OCR检测表格区域}
DetectTableRegion -->|检测正确| UseDetectedRegion[使用OCR检测的表格区域]
DetectTableRegion -->|检测有误| ManualDefineRegion[人工框定表格区域]
UseDetectedRegion --> CheckTemplate{是否有可用模板?}
ManualDefineRegion --> CheckTemplate
CheckTemplate -->|有模板| SelectTemplate[选择标注模板]
CheckTemplate -->|无模板| ManualAnnotation[手动标注表格线]
SelectTemplate --> AdaptTemplate[模板自适应]
AdaptTemplate --> AutoDrawLines[自动绘制表格线
竖线: 相对坐标
横线: OCR自适应计算]
AutoDrawLines --> ReviewLines{检查标注结果}
ManualAnnotation --> ReviewLines
ReviewLines -->|需要调整| EditLines[编辑表格线]
ReviewLines -->|标注完成| SaveAnnotation[保存标注结果]
EditLines --> EditOptions{编辑操作}
EditOptions -->|移动| MoveLines[移动横竖线]
EditOptions -->|增加| AddLines[添加横竖线]
EditOptions -->|删除| DeleteLines[删除横竖线]
MoveLines --> ReviewLines
AddLines --> ReviewLines
DeleteLines --> ReviewLines
SaveAnnotation --> SaveToOutput[保存到输出目录
生成_structure.json文件]
SaveToOutput --> CreateTemplate{是否创建模板?}
CreateTemplate -->|是| SaveAsTemplate[保存为标注模板
针对此类交易流水]
CreateTemplate -->|否| NextPage{继续标注其他页面?}
SaveAsTemplate --> NextPage
NextPage -->|是| SelectPage
NextPage -->|否| End([标注完成])
style Start fill:#e1f5ff
style End fill:#c8e6c9
style SelectDataSource fill:#fff3e0
style CheckTemplate fill:#fff3e0
style ReviewLines fill:#fff3e0
style CreateTemplate fill:#fff3e0
style NextPage fill:#fff3e0
```
## 流程说明
### 1. 数据源选择
- **预定义数据源**:从配置文件加载,包含图片目录、JSON目录和输出目录
- **临时数据源**:手动设置三个目录路径
### 2. 表格区域确定
- 优先使用OCR检测的表格区域
- 如果检测有误,可以人工框定表格区域
### 3. 表格线标注
- **无模板模式**:手动添加、移动、删除横竖线
- **模板模式**:选择模板后自动适配,竖线使用相对坐标,横线根据OCR自适应计算
### 4. 模板管理
- 可以将当前标注结果保存为模板
- 下次标注时可以选择模板自动完成标注
### 5. 批量处理
- 支持连续标注多个页面
- 每个页面的标注结果独立保存