EvanBatten/diagram-symbol-ai-research

GitHub: EvanBatten/diagram-symbol-ai-research

一个研究开源、完全离线的工程与建筑图纸符号检测 pipeline 的项目,包含文献调研、技术选型推荐和可运行的对比实验框架。

Stars: 0 | Forks: 0

# 图纸符号 AI 研究 关于在扫描版/PDF 工程和建筑图纸中自动检测和分类符号的研究笔记——包括房间标签、电气设备、电梯以及机械/HVAC 设备符号(阀门、通风口、散热器、蒸汽疏水阀等)——将它们转化为结构化、可查询的数据。 ## 问题所在 大量的工程/建筑图纸(平面图、机械和电气图纸)会在设施的整个生命周期中不断积累。每张图纸都带有注释——房间标签、设备标签、电梯符号、阀门、通风口、散热器、配电盘等——描述了建筑中的实际物理内容。如今,要将一堆扫描件或 PDF 图纸转化为结构化、可搜索的数据,意味着需要人工逐张阅读。这种方式无法扩展,并且每当底层设施发生变化、需要重新录入图纸时,它就会成为瓶颈。 ## 严格的约束条件 **此 pipeline 中的任何内容都不得依赖于在外部存储或传输数据的云端托管或商业 AI API/SaaS。** 不使用 OpenAI,不使用 Anthropic/Claude,不使用 Google Vision,不使用 Azure/AWS AI 服务,也不使用商业 document-AI SaaS。每个组件都必须是开源的、可自托管的,或者能够以完全离线/本地部署的方式运行。这一约束条件塑造了本仓库中的所有建议——几个众所周知的“显而易见”的答案(只需将图纸发送给前沿 vision-LLM)被明确排除在外,下面的研究花了不少精力探讨在排除该选项后还剩下什么可行的方案。 ## 目标 调研当前(2026年)开源/可自托管工具的现状——包括目标检测框架、本地 vision-language 模型、专为工程图纸数字化构建的项目、适合图纸的 OCR 引擎,以及标注/主动学习工具——并得出一份具体的、可构建的简短方案列表。**部分自动化、有人工参与的流程也算作一种成功。** 我们的目标并非完全的端到端自动化。 ## 快速开始 这个仓库既包含一份书面调查 (`docs/`),也包含一个**可运行的实验框架** (`experiments/`),你可以将其指向真实的图纸。在全新克隆的代码库中,在一台装有 Python 3.9+ 和 Git Bash (Windows) 或 bash (macOS/Linux) 的机器上: ``` # 1. Create a per-framework virtualenv and install its dependencies. # Resilient: reports pass/fail per framework instead of dying on the first # error, and does NOT download model weights or pull Ollama models -- it # prints the exact remaining manual steps for each framework at the end. # Safe to re-run. Set up all frameworks, or just one for the fastest start: ./setup.sh # every framework ./setup.sh yolo_pretrained # or just one (quickest path to a first run) # 2. See what is actually ready on THIS machine (read-only -- installs and # changes nothing): Python version, which venvs exist, whether a local # Ollama server is up, which model files/weights are present. python experiments/doctor.py # 3. Prove the harness plumbing (schema/scoring/visualization) works, with no # ML dependencies, no model, and no data download -- needs only Pillow and # runs in ~1s. (Every framework venv from step 1 has Pillow; or install it # into your base Python with `pip install Pillow`.) python experiments/smoke_test.py # 4. Run a framework against the committed real sample images, writing per-image # JSON detections and side-by-side comparison PNGs. yolo_pretrained is the # quickest first real run: no manual weight step (it auto-downloads ~50MB # once, then runs offline) and it produces detections on the room floor # plans out of the box. cd experiments python compare.py --frameworks yolo_pretrained \ --data-dir data/real_samples/rooms \ --results-dir results/quickstart \ --python yolo_pretrained=frameworks/yolo_pretrained/.venv/Scripts/python.exe # macOS/Linux: a venv's interpreter is at .venv/bin/python instead, i.e. # --python yolo_pretrained=frameworks/yolo_pretrained/.venv/bin/python ``` `--data-dir` 会扫描**单个**目录(非递归),因此请一次指向 `experiments/data/real_samples/` 下的一个类别——`rooms`、`panels`、`elevators` 或 `critical_infrastructure`。结果将存放在 `experiments/results/quickstart/` 中。 其他三个框架在运行前都需要一个明确且额外的步骤(下载模型权重、克隆上游仓库或执行 `ollama pull`);`setup.sh` 会准确打印出每个框架需要执行的操作,而 `experiments/doctor.py` 会显示这些步骤中哪些已经完成。有关完整的框架参考(schema、评分、真实数据格式以及如何添加你自己的框架),请参阅 [`experiments/README.md`](experiments/README.md)。 ## 目录 - [docs/PROGRESS.md](docs/PROGRESS.md) — 进度记录:实际尝试过的内容、有效的方案、无效的方案,以及优先的后续步骤。**返回此仓库时请从这里开始阅读。** - [`docs/research-report.md`](docs/research-report.md) — 完整的带引用研究结果,按主题组织。 - [`docs/recommendations.md`](docs/recommendations.md) — 精简的顶级方案候选名单,按投入产出比排名,并附带建议的入门架构。 - [`experiments/`](experiments/README.md) — 实证测试区:运行八个候选框架(一个专用的平面图模型、一个通用预训练检测器、一个本地 vision-language 模型、Microsoft 的 P&ID 数字化 pipeline 的本地移植版、`panel_detector` —— 一个在此处构建的专用电气面板符号定位器 + 按类型分类器、`room_detector` —— 一个专用的房间区域分割器,其确定性的墙壁划分后端是本仓库中第一个针对真实 ground truth **评分** 的房间输出,也是目前最好的房间定位器、`electrical_geometric` —— 一个确定性的、零训练数据的电气符号定位器,以同样的方式赢得了第一场评分制的电气符号比较、以及 `steam_hvac_geometric` —— 移植到 steam/HVAC 的同款零训练机制,作为一个客观的 **负面结果** 保留(它无法迁移到该语料库中)),以对比它们在真实图纸样本上的实际表现,而不是仅仅依赖上述文献。 - [`experiments/byod/`](experiments/byod/README.md) — **自带数据** (bring your own data):将任何框架指向你自己的图像(COCO / YOLO / LabelMe / 原生注释),根据你的标签进行评分,并在本地 fine-tune 检测器。只需一条命令 —— `python byod/cli.py go `,或在 Windows 上将文件夹拖到 `byod/go.bat` 上 —— 即可自动检测注释格式并为你运行整个 pipeline。一切都在你的机器上运行;`byod/user_data/` 完全被 gitignore 忽略,其中的任何内容都不会被提交或传输。 - [`docs/commercial-solutions-survey.md`](docs/commercial-solutions-survey.md) — 对商业供应商提供的开源/可自托管组件的调查,这些组件可以填补剩余的空白(不含云/付费产品 —— 仅限可采用的开源代码和权重)。 ## 许可证 MIT — 请参阅 [`LICENSE`](LICENSE)。
标签:AI风险缓解, 光学字符识别, 工程图纸识别, 文档数字化, 本地大模型, 离线部署, 计算机视觉, 逆向工具