# drawing-engine **Repository Path**: brilliantmanufacturing/drawing-engine ## Basic Information - **Project Name**: drawing-engine - **Description**: 图纸识别引擎 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-09-15 - **Last Updated**: 2026-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # drawing-engine 图纸识别引擎(FastAPI sidecar)。从原 `mom-agent/image-engine` 迁入 `linda-agent` 工作区,供 **linda-agent-server** 调用;算法与 API 继续演进,不写业务库。 - 仓库 / 服务名:`drawing-engine` - Python 包目录:`drawing_engine`(包名不能使用连字符) - 环境变量前缀:`DRAWING_ENGINE_*` 统一响应外壳: ```json { "ok": true, "request_id": "9f4c2d7a1b3e4f60", "data": {} } ``` 错误: ```json { "ok": false, "request_id": "9f4c2d7a1b3e4f60", "error": { "code": "VALIDATION_ERROR", "message": "..." } } ``` ## Run ```powershell cd E:\project\linda-agent\agent-workspace\drawing-engine python -m venv .venv .\.venv\Scripts\pip install -r requirements.txt .\.venv\Scripts\python -m drawing_engine.main ``` 或: ```powershell .\.venv\Scripts\pip install -e . .\.venv\Scripts\drawing-engine ``` 打开: - Swagger: http://127.0.0.1:4920/docs - Health: http://127.0.0.1:4920/health OCR 需本机安装 Tesseract。Windows 可在 `.env` 中设置: - `DRAWING_ENGINE_TESSERACT_CMD` - `DRAWING_ENGINE_TESSERACT_DATA_DIR` 参考 `.env.example`。 ## PaddleOCR(OCR 图纸识别 Phase 0) PaddleOCR 是 **drawing-engine 进程内** 的第二个 OCR provider,不是独立服务。只服务 **OCR 图纸识别** 的 `/v1/drawing/extract`;`/v1/ocr/*`、检验单 KV 和 **AI 图纸识别(VLM)** 默认仍走 Tesseract / 视觉模型,不经过 Paddle。 本机 CPU 安装(在 drawing-engine 虚拟环境): ```powershell .\.venv\Scripts\python -m pip install paddlepaddle==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/ .\.venv\Scripts\python -m pip install "paddleocr>=2.7,<3.4" ``` 可选环境变量: - `DRAWING_ENGINE_PADDLEOCR_HOME` 模型缓存目录(内网机请预先下载) - `DRAWING_ENGINE_PADDLEOCR_USE_GPU=false` - `DRAWING_ENGINE_PADDLEOCR_LANG=ch` - `DRAWING_ENGINE_PADDLEOCR_WARMUP=false`(启动时预加载 Paddle 模型,默认关闭) `DRAWING_ENGINE_OCR_BACKEND` 请保持 `tesseract` 作为未指定 provider 时的默认值。OCR 图纸识别与检验单会在请求里指定 `ocrProvider=paddleocr`,失败回退 Tesseract。未安装 Paddle 时自动回退,引擎不会启动失败。 首次识别会下载/加载模型,可能较慢。启动日志会打印: - `OCR config: defaultBackend=...`(`DRAWING_ENGINE_OCR_BACKEND`,默认 `tesseract`,管 `/v1/ocr/*`) - `OCR providers: tesseract=installed|missing ... | paddleocr=installed|missing ...` 图纸 extract 是否走 Paddle 由请求 `options.ocrProvider` / Profile `ocrRoute` 决定,与 defaultBackend 可不同。 跳过 Paddle 启动时的联网探测,在 **drawing-engine 目录** 的 `.env` 增加: ```env PADDLE_PDX_DISABLE_MODEL_SOURCE_CHECK=True ``` (paddlex 实际读这个名字;提示文案里的 `DISABLE_MODEL_SOURCE_CHECK` 单独设置无效。进程启动时会注入 `os.environ`。) ## Phase 1 评估与双引擎基线 评估指标含 precision/recall/F1、公差准确率、**bbox IoU** 和 **按 featureType 分项**。真实客户图只放 `evaluation/private/`(模板已提交,真图 gitignore)。 ```powershell .\.venv\Scripts\python scripts/drawing_eval_gate.py tests/fixtures/drawing_eval_manifest.json .\.venv\Scripts\python scripts/drawing_ocr_baseline.py evaluation/private/manifest.json --output evaluation/private/baseline-report.json ``` OCR 工作台可导出预标注 JSON(不含图纸二进制),人工复核后写入私有 manifest。**不要**把 299 张客户图提交进仓库。 ## API - `GET /health` - `GET /v1/health` - `POST /v1/quality/evaluate` - `POST /v1/align/template` - `POST /v1/detect/document` - `POST /v1/ocr/region` - `POST /v1/ocr/batch-regions` - `POST /v1/kv/dictionary` 后续将扩展图纸特征结构化接口(如 `/v1/drawing/features`),由 linda-agent-server 编排调用。 ## Scope - OpenCV 解码、质量评估、ORB/RANSAC 模板配准 - Tesseract 区域 OCR / 批量区域 OCR - 词典驱动动态键值抽取 - 可选 ONNX 文档主体检测(未配置时 OpenCV fallback) - 请求 ID 与按日滚动日志 算法在 `drawing_engine.vision`,可替换为 PaddleOCR、版面检测、VLM 等而不改 API 外壳。 ## Relation | 组件 | 角色 | |------|------| | drawing-engine(本仓库) | 视觉识别 sidecar | | linda-agent-server | Job / HITL / 导出 / 以后写 MDM | | mom-agent/image-engine | 历史副本,本仓库不依赖、不修改 |