当前位置: 首页 > news >正文

CAD 内嵌图片/Excel 的识别

在 CAD 图纸中,设计说明、材料表、桩表等内容有时不是普通 CAD 文字或线条,而是通过 OLE、截图、Excel 粘贴等方式嵌入的对象。普通 CAD 解析只能看到一个区域,例如OLE2FRAME,无法直接得到里面的文字和表格。因此识别这类内容通常要分两步:先定位嵌入区域,再对区域内容做专门识别。

整体流程

  1. 将 DWG 转为 DXF。
  2. 扫描 DXF 中的OLE2FRAME或图片对象。
  3. 读取该对象在 CAD 中的坐标范围bbox
  4. 如果是 OLE Excel,尝试从 OLE 数据中提取 Office 包。
  5. 如果能提取 Excel,则直接读取单元格内容。
  6. 如果是普通图片,则裁剪该区域图片,调用 OCR 识别。
  7. 将识别结果转成统一的 CADtableblock。
  8. 提取时按 CAD 坐标把该 block 放回原图纸位置。

示例代码

from pathlib import Path from src.tools.cad.embedded_image_ocr_tool import ( convert_dwg_to_dxf, recognize_embedded_objects_from_dxf, embedded_ocr_results_to_cad_blocks, ) dwg_path = Path("cases/测试CAD/CAD粘贴图片的识别测试.dwg") dxf_path = Path("tmp/CAD粘贴图片的识别测试.dxf") # 1. DWG 转 DXF dxf_bytes = convert_dwg_to_dxf( dwg_path=dwg_path, dxf_path=dxf_path, server_url="https://your-dwg-to-dxf-server", ) # 2. 识别 CAD 中的内嵌对象 results = recognize_embedded_objects_from_dxf(dxf_bytes) # 3. 转成 CAD 提取 block blocks = embedded_ocr_results_to_cad_blocks(results, cad_file_id=1) for block in blocks: print(block["type"]) # table print(block["source"]) # cad_embedded_object_ocr print(block["bbox"]) # CAD 中原始位置 print(block["content"]["header"]) print(block["content"]["records"][:3])

block 示例

{ "type": "table", "source": "cad_embedded_object_ocr", "bbox": { "min_x": 2780003.0, "min_y": 78951.6, "max_x": 2801390.9, "max_y": 90836.5 }, "content": { "header": ["单体名称", "建筑面积"], "records": [ { "values": { "单体名称": "地下室", "建筑面积": "1000" } } ] } }

关键点

预览时可以把识别出的内容画回 CAD 原位置,方便用户确认。提取时不要简单把结果追加到最后,而应按bbox参与阅读顺序。如果嵌入区域在说明文字中间,那么最终结果也应表现为:

上方 CAD 原生内容 内嵌 Excel/图片识别表格 下方 CAD 原生内容

这样既保留 CAD 空间位置,又能把 OLE、图片、Excel 等非原生 CAD 内容纳入统一提取结果。

http://www.jsqmd.com/news/1100453/

相关文章:

  • 无状态的“皇帝新装”:JWT 注销、续签与黑名单的终极拷问
  • CAD快捷键
  • 手把手教你用Cheat Engine 7.5修改《魔法工艺》0.82.7版:无限金币、钥匙与生命值
  • 别再死记硬背了!用Python+Excel搞定二级计量师核心公式(附实战代码)
  • 别再死记硬背公式了!用Python+Matlab手把手复现AM包络调制与解调全过程
  • 爬虫开发实战:识别与规避反爬蜜罐(Web陷阱)的技术指南
  • RTK8852BE蓝牙驱动的安装问题
  • L3/L4 自动驾驶强制国标落地:座舱交互与仿真测试的实时系统支撑方案
  • 3D点云处理入门:从ICP配准到PointNet分类的完整实践指南
  • 别再手动算排名了!用Matlab实现TOPSIS评价模型,5分钟搞定水质评估案例
  • 别再死记硬背公式了!用Python+Matplotlib动态可视化AM包络调制全过程
  • 爱博精电助力北京中海金融中心,打造首都核心区绿色建筑能源管理新标杆
  • YOLO目标检测入门教程:从环境搭建到自定义训练全流程
  • 安吉哪里可以晚托的权威机构
  • 零甲醛儿童房艺术漆推荐
  • 第一章Netty,Selector key用完要remove
  • 勒索攻击防御三大认知误区:备份神话、侥幸心理与赎金陷阱
  • 别再只用OCV了!Primetime POCV实战:从变量设置到看懂报告,一次搞定
  • 云克隆神经相关原代细胞:以高保真细胞模型驱动神经科学研究新突破
  • 别再写if-else了!用PySide6信号槽重构你的登录跳转逻辑,代码更清晰
  • HarmonyOS NEXT开发环境搭建(2026最新版)——从下载安装到运行第一个项目,全网最详细教程
  • 前期准备:
  • Codex快速入门了解指南
  • 你拖一下,3D 轨迹凭什么就转了?一文看懂 WebGL 渲染管线
  • 一线观察:长期体验后发现的奥迪改装市场底层现象
  • 2026年节假日聚餐后脾虚湿热调养指南:辨证与方案详解
  • Gemini镜像站 解决 Linux 运维难题:2026 年镜像站的 Shell 自动化与故障排查实战
  • Postman便携版:Windows开发者必备的无安装API测试解决方案
  • 【技术白皮书】全自动焊线机选型参数基准:以铭硕智造为参照的0.1mm精密焊线标准解析
  • nRF52840开发实战:用GPIOTE事件触发实现低功耗按键检测(附完整代码)