|
|
1 day ago | |
|---|---|---|
| .. | ||
| editor | 1 day ago | |
| README.md | 3 days ago | |
| streamlit_table_line_editor.py | 2 days ago | |
| table_line_generator.py | 1 day ago | |
| table_line_generator.yaml | 2 days ago | |
| table_template_applier.py | 1 day ago | |
基于 OCR bbox 结果自动生成表格线,提升无线表格识别准确率
通过 OCR 识别的文本框位置(bbox)自动推测表格结构,生成标准表格线,然后应用 PPStructure 有线表格识别,显著提升准确率。
OCR识别(bbox) → 自动分析 → 人工调整 → 保存模板 → 批量应用 → PPStructure识别
确保有以下文件:
支持的 OCR 格式:
text 和 bbox 字段)# 读取缺省配置文件./table_line_generator.yaml
streamlit run streamlit_table_line_editor.py
# 关键是在入口脚本名后加 --,后面的参数才会传递给脚本自身
streamlit run streamlit_table_line_editor.py -- --config /path/to/custom.yaml
在侧边栏选择 🆕 新建标注
康强_page_001.json)康强_page_001.png)生成文件:
康强_page_001_structure.json - 表格结构配置康强_page_001_with_lines.png - 带表格线的图片在侧边栏选择 📂 加载已有标注
康强_page_001_structure.json)将标注好的表格结构应用到同类型的其他页面。
单文件模式:
python table_template_applier.py \
--template output/table_structures/康强_page_001_structure.json \
--image-file data/康强_page_002.png \
--json-file data/康强_page_002.json \
--output-dir output/batch_results \
--width 2 \
--color black
批量模式:
python table_template_applier.py \
--template output/table_structures/康强_page_001_structure.json \
--image-dir data/images \
--json-dir data/jsons \
--output-dir output/batch_results \
--width 2 \
--color black
直接运行会使用默认配置:
python table_template_applier.py
python batch_ocr/batch_process_pdf.py \
-p ppstructv3 \
-f output/batch_results/image_list.txt \
-o output/ppstructv3_results
| 参数 | 默认值 | 说明 |
|---|---|---|
| Y轴聚类容差 | 5 | 相近行的Y坐标容差(像素) |
| X轴聚类容差 | 10 | 相近列的X坐标容差(像素) |
| 最小行高 | 20 | 过滤掉高度过小的行(像素) |
| 参数 | 选项 | 说明 |
|---|---|---|
| 线条宽度 | 1-5 | 表格线的粗细 |
| 线条颜色 | black/blue/red | 保存时的线条颜色 |
| 参数 | 说明 |
|---|---|
| 显示模式 | 对比显示 / 仅显示划线图 / 仅显示原图 |
| 图片缩放 | 0.25x - 2.0x |
| 显示线条编号 | 是否显示 R1, C1 等编号 |
行检测:
列检测:
行高计算:
固定参数(从模板继承):
可变参数(自动检测):
| 功能 | 说明 |
|---|---|
| 调整横线 | 修改特定横线的 Y 坐标 |
| 调整竖线 | 修改特定竖线的 X 坐标 |
| 添加横线 | 在指定位置插入新横线 |
| 删除横线 | 批量删除选中的横线 |
| 添加竖线 | 在指定位置插入新竖线 |
| 删除竖线 | 批量删除选中的竖线 |
| 撤销/重做 | 支持多步操作回退 |
*_structure.json){
"rows": [...], // 行区间列表
"columns": [...], // 列区间列表
"horizontal_lines": [700, 735, ...], // 横线Y坐标
"vertical_lines": [50, 180, ...], // 竖线X坐标
"header_height": 35, // 表头高度
"row_height": 59, // 数据行高度
"col_widths": [130, 128, ...], // 各列宽度
"table_bbox": [x1, y1, x2, y2], // 表格边界框
"modified_h_lines": [0, 5], // 修改过的横线索引
"modified_v_lines": [2] // 修改过的竖线索引
}
*_with_lines.png)batch_results.json)[
{
"source": "/path/to/page_002.png",
"output": "/path/to/page_002_with_lines.png",
"structure": "/path/to/page_002_structure.json",
"num_rows": 15,
"status": "success"
}
]
适用于表格结构固定的文档(如银行流水、报表)
1. 标注第1页 → 保存配置
2. 应用到其他页面
3. 批量识别
适用于包含多种表格格式的文档
1. 为每种格式标注一个模板
2. 根据页面类型选择对应模板
3. 分别批量应用
适用于初次标注不满意的情况
1. 加载已有配置
2. 微调表格线位置
3. 保存更新后的配置
4. 重新批量应用
原因:
解决:
原因:
解决:
原因:
解决:
原因:
解决:
在可视化界面中,已修改的线会标记为红色,方便追踪调整历史。
支持多步撤销/重做,可以放心尝试不同调整方案。
处理长文档时,可以分段保存配置:
template_section1.json - 表头部分template_section2.json - 数据部分即使没有图片,也可以加载配置文件查看坐标信息,方便检查配置正确性。
欢迎提交 Issue 和 Pull Request!
MIT License
作者: [Your Name]
最后更新: 2025-01-13