使用SolidWorks工程图GLM-OCR识别技术零件信息自动化录入

发布时间:2026/6/14 10:09:04

使用SolidWorks工程图GLM-OCR识别技术零件信息自动化录入 使用SolidWorks工程图GLM-OCR识别技术实现零件信息自动化录入你是不是也遇到过这样的场景设计部门辛辛苦苦在SolidWorks里画好了三维模型生成了带有一切技术要求的工程图但到了生产或采购环节这些图纸上的信息——零件号、材料、尺寸、技术要求——又得靠人工一个字一个字地敲进PDM或ERP系统里。这个过程不仅枯燥还特别容易出错一个数字看岔了后续的生产、采购、库存可能全都会乱套。今天咱们就来聊聊怎么用GLM-OCR这项技术把SolidWorks工程图里的信息“读”出来然后自动、准确地填到系统里去。这就像是给图纸装上了一双“智能眼睛”和一个“自动打字员”让设计数据能自己“跑”到生产流程里彻底告别手动抄录的烦恼。1. 为什么需要自动化从图纸到系统的“最后一公里”痛点在制造业里从设计到生产的信息流往往在“图纸信息录入”这个环节卡壳。SolidWorks工程图是设计的最终交付物上面承载了所有制造所需的信息。但PDM产品数据管理或ERP企业资源计划系统需要的是结构化的数据字段。这个转换过程传统上高度依赖人工。人工录入的弊端非常明显效率低下面对复杂的装配体工程图成百上千个零件的信息需要逐一查找、核对、输入耗时巨大。错误率高人眼疲劳、注意力分散极易导致数字看错如6看成8、字母输错、信息遗漏或张冠李戴。一致性差不同的人对同一信息的理解或录入格式可能不同导致数据混乱。流程割裂设计变更后工程图更新了但系统数据可能未能及时同步造成生产依据错误。GLM-OCR技术的引入正是为了解决这“最后一公里”的自动化难题。它不是一个简单的文字识别而是针对工程图这种专业文档的“理解式”识别。2. GLM-OCR不只是“识字”更是“读图”你可能用过一些通用的OCR工具来识别发票或文档但把它们直接用在SolidWorks工程图上效果往往不尽人意。工程图有它的特殊性复杂的视觉元素文字、尺寸线、形位公差符号、粗糙度符号、表格标题栏、明细表混杂在一起。非标准字体和布局工程图可能使用特定的制图字体文字方向各异水平、垂直、倾斜。专业术语和格式材料牌号如“6061-T6”、热处理要求如“HRC 40-45”、精度标注如“±0.02”等。GLM-OCR这类大模型驱动的OCR其优势在于强大的视觉-语言理解能力。它不仅能定位和识别出图像中的文字更能结合上下文理解这些文字的含义和结构关系。比如它能“看懂”一段文字是位于标题栏的“材料”项后面从而将其识别为材料属性它能区分开一个数字是零件序号还是尺寸值。简单来说通用OCR是“看到了什么字就输出什么字”而GLM-OCR是“看懂了这个区域是什么信息然后结构化地提取出来”。3. 实战构建自动化录入流程下面我们以一个典型的场景为例看看如何一步步搭建这个自动化流程。假设我们要从一张SolidWorks导出的PDF格式装配体工程图中提取明细表BOM信息和关键零件的技术要求。3.1 第一步工程图预处理与输出首先确保你的SolidWorks工程图是清晰、规范的。这是高识别率的基础。图层管理如果可能将不同元素如标注、注释、表格放在不同的图层上便于后续处理。导出设置将工程图导出为高分辨率建议300 DPI以上的图片如PNG或矢量PDF。PDF格式通常能更好地保留文字和线条信息是更优选择。在SolidWorks中通过“文件”-“另存为”选择PDF格式即可。3.2 第二步使用GLM-OCR提取信息这里我们以调用GLM大模型的API为例演示核心的识别过程。你需要准备一个能处理图像输入的GLM模型API端点。import requests import base64 import json import re def extract_drawing_info(image_path, api_key, model_endpoint): 使用GLM-OCR API提取工程图信息 # 1. 读取并编码图像 with open(image_path, rb) as image_file: encoded_image base64.b64encode(image_file.read()).decode(utf-8) # 2. 构建请求payload # 提示词Prompt是关键它指导模型如何“看”图 prompt 你是一个专业的机械制图识别助手。请分析这张SolidWorks工程图并提取以下结构化信息 1. 标题栏信息图号、零件名称、材料、重量、比例。 2. 明细表BOM信息提取表格中的所有行每行包括项次、零件号、名称、数量、材料、备注。 3. 主要技术要求找到图中以“技术要求”或类似文字开头的段落文本。 请将识别结果以JSON格式输出包含三个主键title_block, bom_table, technical_requirements。 headers { Authorization: fBearer {api_key}, Content-Type: application/json } payload { model: model_endpoint, # 例如 glm-4v 或你部署的特定模型 messages: [ { role: user, content: [ {type: text, text: prompt}, { type: image_url, image_url: { url: fdata:image/png;base64,{encoded_image} } } ] } ], max_tokens: 2000 } # 3. 发送请求 response requests.post(https://your-glm-api-endpoint/v1/chat/completions, headersheaders, jsonpayload) result response.json() # 4. 解析返回的JSON内容 # 注意模型返回的内容在 choices[0].message.content 中 try: content result[choices][0][message][content] # 从文本中提取JSON部分模型可能返回带Markdown格式的JSON json_match re.search(rjson\n(.*?)\n, content, re.DOTALL) if json_match: extracted_info json.loads(json_match.group(1)) else: # 如果没有代码块尝试直接解析整个内容 extracted_info json.loads(content) return extracted_info except (KeyError, json.JSONDecodeError) as e: print(f解析识别结果失败: {e}) print(原始返回内容:, content) return None # 使用示例 api_key your_api_key_here model_endpoint glm-4v drawing_image_path assembly_drawing.pdf # 或 .png structured_data extract_drawing_info(drawing_image_path, api_key, model_endpoint) if structured_data: print(标题栏信息:, json.dumps(structured_data.get(title_block, {}), indent2, ensure_asciiFalse)) print(\nBOM表示例第一行:, json.dumps(structured_data.get(bom_table, [])[0], indent2, ensure_asciiFalse) if structured_data.get(bom_table) else 无) print(\n技术要求:, structured_data.get(technical_requirements, 未识别到))这段代码的核心是提示词Prompt。我们通过清晰的指令告诉模型需要关注图纸的哪些部分以及以什么格式输出。GLM模型会根据这个指令结合对图像的理解生成结构化的JSON数据。3.3 第三步数据清洗与校验模型识别出的数据不可能100%准确尤其是图纸模糊或布局复杂时。因此一个清洗和校验环节必不可少。def clean_and_validate_data(raw_data): 清洗和校验从OCR提取的原始数据 cleaned_data {} # 1. 清洗标题栏信息 title_block raw_data.get(title_block, {}) # 例如去除材料字段中的多余空格和换行符 if 材料 in title_block: title_block[材料] title_block[材料].strip().replace(\n, ) # 可以添加更多规则如验证图号格式 cleaned_data[title_block] title_block # 2. 清洗BOM表 bom_table raw_data.get(bom_table, []) cleaned_bom [] for item in bom_table: cleaned_item {} # 确保数量是数字 cleaned_item[数量] int(item.get(数量, 0)) if str(item.get(数量, 0)).isdigit() else 0 # 清理零件号去除常见识别错误字符 cleaned_item[零件号] re.sub(r[Oo0], 0, item.get(零件号, )) # 处理O/0混淆 cleaned_item[零件号] cleaned_item[零件号].upper().strip() # 统一大写 cleaned_item[名称] item.get(名称, ).strip() cleaned_item[材料] item.get(材料, ).strip() cleaned_bom.append(cleaned_item) cleaned_data[bom_table] cleaned_bom # 3. 可以添加与已有数据库的比对逻辑例如检查零件号是否存在 # ... return cleaned_data cleaned_structured_data clean_and_validate_data(structured_data)3.4 第四步自动录入PDM/ERP系统最后一步是将清洗后的结构化数据通过API自动写入目标系统。这里以模拟一个PDM系统的REST API为例。def push_to_pdm(cleaned_data, pdm_api_url, auth_token): 将清洗后的数据推送到PDM系统 headers { Authorization: fToken {auth_token}, Content-Type: application/json } # 1. 创建或更新主零件标题栏信息 part_data cleaned_data[title_block] part_response requests.post(f{pdm_api_url}/parts, jsonpart_data, headersheaders) if part_response.status_code 201: part_id part_response.json().get(id) print(f主零件创建成功ID: {part_id}) else: print(f主零件创建失败: {part_response.text}) return False # 2. 创建BOM子项 bom_api_url f{pdm_api_url}/parts/{part_id}/bom-items for bom_item in cleaned_data[bom_table]: bom_response requests.post(bom_api_url, jsonbom_item, headersheaders) if bom_response.status_code ! 201: print(fBOM项 {bom_item.get(零件号)} 创建失败: {bom_response.text}) # 可以根据策略决定是跳过还是终止 print(BOM信息录入完成。) # 3. 附加技术要求为文档注释 tech_req cleaned_data.get(technical_requirements) if tech_req: note_data {note: f技术要求{tech_req}} note_response requests.post(f{pdm_api_url}/parts/{part_id}/notes, jsonnote_data, headersheaders) return True # 模拟调用 # push_to_pdm(cleaned_structured_data, https://your-pdm-api.com, your-auth-token)4. 实际应用中的经验与建议在实际部署这套方案时有几个关键点能帮你走得更顺从小范围试点开始不要一开始就处理所有历史图纸。选择几张清晰、规范的典型图纸进行测试不断优化你的提示词Prompt和数据清洗规则。提示词Prompt是灵魂模型的表现很大程度上取决于你如何“问”它。描述越具体、越符合工程图的实际语境效果越好。可以尝试让模型“扮演”一个资深工艺工程师来读图。设计“人机校验”环节在完全信任自动化之前设置一个关键数据复核节点。例如系统自动录入后高亮显示识别置信度低或与历史数据差异大的字段供人工确认。与变更流程集成最理想的状态是将这套识别程序集成到设计发布流程中。当工程师在SolidWorks中发布新版工程图时自动触发识别和录入流程实现真正的设计-生产数据同步。处理复杂和模糊情况对于手写注释、模糊扫描件或非标准图框识别率会下降。需要有备选方案比如标记出这些图纸交由人工处理同时将这些案例作为训练数据持续优化模型。5. 总结回过头来看利用GLM-OCR实现SolidWorks工程图信息的自动化录入本质上是用AI打通了从设计端到制造端的数据壁垒。它把工程师从重复、易错的手工录入中解放出来让他们能更专注于设计本身。这套方案实施起来技术门槛并没有想象中那么高。核心在于理解业务需求、设计好提示词、并构建一个包含预处理、智能识别、数据清洗和系统集成的稳健流程。初期可能会遇到一些识别不准的情况但随着对特定图纸风格的“训练”和规则优化准确率会快速提升。如果你所在的团队正受困于图纸信息录入的效率和准确性问题不妨尝试迈出第一步。从一张图纸、一个零件开始体验一下数据自动“流淌”起来的顺畅感。当设计变更能瞬间反映在采购清单和生产计划上时你会真切感受到数字化带来的价值。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻