# flowchart **Repository Path**: veiken/flowchart ## Basic Information - **Project Name**: flowchart - **Description**: 用markdown格式描述一个流程图。即将流程图转换成markdown描述,方便llm处理。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-23 - **Last Updated**: 2025-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 流程图识别程序 一个基于计算机视觉和OCR技术的流程图识别程序,能够将流程图图片转换为结构化的JSON格式描述。 ## 功能特性 - 🖼️ **多格式支持**: 支持JPG、PNG、BMP格式的流程图图片 - 🔍 **智能识别**: 自动检测矩形、菱形、圆形、椭圆形等流程图节点 - 📝 **文本提取**: 使用OCR技术识别节点内的中英文文本 - 🔗 **连接分析**: 识别节点间的连接线和箭头方向 - 🧠 **逻辑分析**: 分析流程的控制流结构(顺序、分支、循环) - 📊 **JSON输出**: 生成标准化的JSON格式描述文件 - ⚡ **高性能**: 单张图片处理时间≤10秒(2000×2000分辨率) ## 安装要求 ### 系统要求 - Python 3.8+ - Windows/Linux/macOS ### 依赖安装 1. **安装Python依赖包**: ```bash pip install -r requirements.txt ``` 2. **安装Tesseract OCR** (用于文本识别): **Windows**: - 下载并安装 [Tesseract for Windows](https://github.com/UB-Mannheim/tesseract/wiki) - 将安装路径添加到系统环境变量 **Linux (Ubuntu/Debian)**: ```bash sudo apt-get install tesseract-ocr tesseract-ocr-chi-sim ``` **macOS**: ```bash brew install tesseract tesseract-lang ``` ## 使用方法 ### 基本用法 ```bash python flowchart_recognizer.py --image_path "path/to/flowchart.png" ``` ### 高级用法 ```bash # 指定输出目录 python flowchart_recognizer.py --image_path "flowchart.png" --output_dir "output/" # 指定Tesseract路径 python flowchart_recognizer.py --image_path "flowchart.png" --tesseract_path "C:/Program Files/Tesseract-OCR/tesseract.exe" # 详细输出模式 python flowchart_recognizer.py --image_path "flowchart.png" --verbose ``` ### 命令行参数 - `--image_path`: 输入流程图图片路径(必需) - `--output_dir`: 输出目录(可选,默认为输入文件同目录) - `--tesseract_path`: Tesseract OCR可执行文件路径(可选) - `--verbose, -v`: 启用详细输出模式(可选) ## 输出格式 程序会生成符合以下结构的JSON文件: ```json { "metadata": { "filename": "flowchart.png", "width": 1200, "height": 800, "creation_time": "2023-10-01T12:00:00Z", "confidence_score": 0.92 }, "nodes": [ { "id": "node_1", "type": "start", "text": "开始", "position": { "x": 100, "y": 50, "width": 80, "height": 40 }, "next": ["node_2"] } ], "connections": [ { "source": "node_1", "target": "node_2", "type": "direct", "points": [ {"x": 140, "y": 90}, {"x": 140, "y": 120} ] } ], "structure": { "type": "sequence", "subflows": [], "summary": { "total_nodes": 5, "total_connections": 4, "decision_count": 1, "complexity": "simple" } } } ``` ## 项目结构 ``` flowchart_recognizer/ ├── src/ │ ├── preprocessing/ # 图像预处理模块 │ ├── detection/ # 节点检测模块 │ ├── connection/ # 连线识别模块 │ ├── ocr/ # 文本识别模块 │ ├── analysis/ # 逻辑分析模块 │ └── output/ # JSON输出模块 ├── flowchart_recognizer.py # 主程序 ├── requirements.txt # 依赖包列表 ├── README.md # 项目说明 └── tips.txt # 需求文档 ``` ## 技术架构 ### 核心模块 1. **图像预处理** (`src/preprocessing/`) - 图像质量检测和增强 - 自动倾斜校正 - 流程图区域定位 - 去噪和二值化处理 2. **节点检测** (`src/detection/`) - 基于轮廓检测识别流程图节点 - 支持矩形、菱形、圆形、椭圆形节点 - 节点类型分类和置信度计算 3. **连线识别** (`src/connection/`) - 霍夫变换检测直线 - 箭头检测和方向识别 - 节点间连接关系建立 4. **文本识别** (`src/ocr/`) - 基于Tesseract OCR的文本提取 - 支持中英文混合识别 - 文本后处理和校正 5. **逻辑分析** (`src/analysis/`) - 基于图论的流程结构分析 - 循环和分支结构识别 - 控制流分析 6. **JSON输出** (`src/output/`) - 标准化JSON格式生成 - 结构验证和错误处理 - 文件保存和路径管理 ### 性能指标 - **节点识别准确率**: ≥90% - **文本识别准确率**: ≥85% - **连接关系识别准确率**: ≥85% - **处理速度**: ≤10秒(2000×2000分辨率) ## 使用示例 ### 示例1: 简单流程图 ```bash # 处理简单的登录流程图 python flowchart_recognizer.py --image_path "login_flowchart.png" ``` 输出摘要: ``` ================================================== 流程图识别结果摘要 ================================================== 输入文件: login_flowchart.png 输出文件: login_flowchart_parsed.json 处理时间: 3.45秒 图像尺寸: 800 x 600 整体置信度: 0.92 检测节点数: 5 连接线数: 4 决策节点数: 1 流程复杂度: simple 是否包含循环: 否 ================================================== 节点详情: node_1: start - '开始' (置信度: 0.95) node_2: process - '用户登录' (置信度: 0.88) node_3: decision - '验证成功?' (置信度: 0.82) node_4: process - '进入系统' (置信度: 0.90) node_5: process - '显示错误' (置信度: 0.87) 处理完成! ``` ### 示例2: 复杂流程图 ```bash # 处理复杂的业务流程 python flowchart_recognizer.py --image_path "business_process.png" --verbose ``` ## 错误处理 程序具有完善的错误处理机制: 1. **输入验证**: 检查文件格式和路径有效性 2. **处理异常**: 捕获并记录处理过程中的异常 3. **错误输出**: 生成包含错误信息的JSON文件 4. **日志记录**: 详细的处理日志和错误追踪 ## 常见问题 ### Q: 程序无法识别节点怎么办? A: 检查图片质量,确保流程图清晰,节点边界明确。可以尝试提高图片分辨率或使用更清晰的图片。 ### Q: 文本识别不准确怎么办? A: 确保已正确安装Tesseract OCR,并安装中文语言包。对于中文文本,建议使用`--tesseract_path`参数指定安装路径。 ### Q: 处理速度太慢怎么办? A: 可以尝试降低图片分辨率,或使用更快的硬件。程序已针对性能进行了优化。 ### Q: 如何提高识别准确率? A: 使用高质量的流程图图片,确保节点和连线清晰可见,避免模糊或低对比度的图片。 ## 开发说明 ### 扩展功能 程序采用模块化设计,可以轻松扩展: 1. **添加新的节点类型**: 在`NodeDetector`中添加新的形状检测逻辑 2. **支持新的图片格式**: 在`ImageProcessor`中添加新的格式支持 3. **改进OCR识别**: 在`TextRecognizer`中集成更先进的OCR技术 4. **增强逻辑分析**: 在`LogicAnalyzer`中添加更复杂的流程分析算法 ### 测试 ```bash # 运行测试(需要先创建测试用例) python -m pytest tests/ ``` ## 许可证 本项目采用MIT许可证,详见LICENSE文件。 ## 贡献 欢迎提交Issue和Pull Request来改进这个项目! ## 联系方式 如有问题或建议,请通过以下方式联系: - 提交GitHub Issue - 发送邮件至项目维护者 --- **注意**: 本程序需要安装Tesseract OCR才能正常工作。请确保按照安装说明正确配置OCR环境。