You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python识别不同颜色矩形风管及其内部信息

风管识别与文本提取实操方案

一、图像预处理(解决Tesseract识别干扰问题)

  • 颜色分割提取风管区域:用OpenCV针对不同颜色风管的HSV色域范围做阈值分割,单独抠出目标风管,过滤背景杂色。示例代码:
    import cv2
    import numpy as np
    
    img = cv2.imread("风管平面图.png")
    hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    
    # 以蓝色风管为例,可根据实际图像调整HSV数值
    lower_blue = np.array([90, 50, 50])
    upper_blue = np.array([130, 255, 255])
    blue_mask = cv2.inRange(hsv_img, lower_blue, upper_blue)
    blue_duct_area = cv2.bitwise_and(img, img, mask=blue_mask)
    
  • 二值化与降噪:将抠出的风管区域转为灰度图后做二值化,再用中值模糊或形态学操作清除小噪点,让文本边缘更清晰:
    gray_duct = cv2.cvtColor(blue_duct_area, cv2.COLOR_BGR2GRAY)
    _, binary_duct = cv2.threshold(gray_duct, 127, 255, cv2.THRESH_BINARY_INV)
    clean_duct = cv2.medianBlur(binary_duct, 3)
    

二、优化Tesseract文本提取

  • 限定识别范围:只将预处理后的风管区域传入Tesseract,避免无关区域干扰。
  • 配置识别参数:针对中文文本添加-l chi_sim语言参数,用--psm 6指定块级文本识别模式(适配风管内的排版):
    from pytesseract import pytesseract
    
    # 若Tesseract未在系统环境变量中,需指定路径
    pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
    duct_text = pytesseract.image_to_string(clean_duct, lang='chi_sim', config='--psm 6')
    print(duct_text.strip())
    
  • 小字号文本处理:若风管内文本过小,可先对区域做放大:
    enlarged_duct = cv2.resize(clean_duct, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)
    

三、风管分类与信息对应

  • 用轮廓检测cv2.findContours()提取所有矩形风管的轮廓,结合颜色分割结果给每个风管打上颜色标签。
  • 对每个轮廓对应的区域单独裁剪、预处理后提取文本,最终关联“风管颜色-内部文本”的对应关系。

四、备选方案(Tesseract效果不佳时)

  • 尝试国内厂商的OCR API(如百度、阿里云OCR),这类工具对复杂背景下的印刷体识别率更高,适合小批量处理场景。
  • 若需长期批量处理,可基于YOLO+CRNN训练自定义文本检测模型,针对性适配风管内的文本格式。

内容的提问来源于stack exchange,提问作者Atharva Purohit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:45:06