zhch158_admin f7da730070 fix: 增强错误日志记录,添加详细的堆栈跟踪信息以便于调试 5 日 前
..
backend f7da730070 fix: 增强错误日志记录,添加详细的堆栈跟踪信息以便于调试 5 日 前
core f7da730070 fix: 增强错误日志记录,添加详细的堆栈跟踪信息以便于调试 5 日 前
frontend e0f3bbe92d feat: add history management and template handling in the editor 1 週間 前
README.md ea5e18400a feat: 添加表格线条生成器 README 文档,包含功能特性、技术栈、使用说明及项目结构 1 週間 前
__init__.py d56b4db109 feat: 添加表格线生成器模块,提供 OCR 数据解析、表格结构分析、线条编辑和批量处理功能 1 週間 前

README.md

Table Line Generator

基于 Vue 3 + TypeScript + Konva.js 的表格线条编辑工具。

功能特性

  • 📤 上传 OCR JSON + 图片文件进行分析
  • 🖱️ 鼠标拖拽调整线条位置
  • ⌨️ 键盘快捷键支持 (Ctrl+Z 撤销, Delete 删除等)
  • ➕ 添加/删除横线和竖线
  • 📐 精确坐标输入调整
  • 💾 保存结构 JSON 和绘制后的图片
  • 🔄 批量处理多页文档

技术栈

前端

  • Vue 3 + TypeScript
  • vue-konva (Canvas 绘制)
  • Element Plus (UI 组件)
  • Pinia (状态管理)
  • Vite (构建工具)

后端

  • FastAPI
  • Python 3.8+
  • Pillow (图像处理)
  • NumPy (数值计算)

快速开始

1. 安装后端依赖

cd ocr_platform/table_line_generator
pip install -e ./core
pip install -r backend/requirements.txt

2. 启动后端服务

cd ocr_platform/table_line_generator/backend
uvicorn main:app --reload --port 8000

后端服务将在 http://localhost:8000 启动。

3. 安装前端依赖

cd ocr_platform/table_line_generator/frontend
npm install

4. 启动前端开发服务器

cd ocr_platform/table_line_generator/frontend
npm run dev

前端服务将在 http://localhost:5173 启动。

使用说明

上传文件

  1. 打开浏览器访问 http://localhost:5173
  2. 将 OCR JSON 文件和对应图片拖拽到上传区域
  3. 点击"开始分析"按钮

编辑线条

  • 拖拽移动: 直接拖拽线条调整位置
  • 选中线条: 点击线条进行选中(选中后变为红色)
  • 删除线条: 选中后按 Delete 键,或点击工具栏删除按钮
  • 添加线条: 点击工具栏"添加横线/竖线"按钮
  • 精确调整: 在右侧面板输入精确坐标值

键盘快捷键

快捷键 功能
Ctrl+Z 撤销
Ctrl+Y / Ctrl+Shift+Z 重做
Delete / Backspace 删除选中线条
↑↓ 微调横线 ±1px
←→ 微调竖线 ±1px
Shift+方向键 微调 ±10px

保存结果

  1. 在右侧面板设置输出目录和文件名
  2. 点击"保存结果"按钮
  3. 将生成结构 JSON 和绘制线条的图片

项目结构

table_line_generator/
├── core/                   # Python 核心模块
│   ├── ocr_parser.py       # OCR 数据解析
│   ├── table_analyzer.py   # 表格结构分析
│   └── drawing_service.py  # 绘图服务
├── backend/                # FastAPI 后端
│   ├── main.py             # 应用入口
│   ├── api/                # API 路由
│   ├── services/           # 业务逻辑
│   ├── models/             # 数据模型
│   └── config/             # 配置文件
└── frontend/               # Vue 3 前端
    ├── src/
    │   ├── components/     # Vue 组件
    │   ├── composables/    # 组合式函数
    │   ├── stores/         # Pinia 状态管理
    │   ├── api/            # API 客户端
    │   └── types/          # TypeScript 类型
    └── package.json

坐标系统说明

  • 原图坐标: 所有结构数据使用原图像素坐标
  • 显示坐标: 前端显示时乘以 scaleFactor
  • 保存时: 直接使用原图坐标,无需转换

对于超过 4096×4096 的大图,系统会自动计算 scaleFactor 进行缩放显示。

依赖关系

本模块依赖 ocr_platform/ocr_utils 中的公共工具函数。如果需要使用图片处理相关的工具函数,可以从 ocr_utils.image_utils 导入。

API 文档

启动后端后,访问 http://localhost:8000/docs 查看 Swagger API 文档。

License

MIT