用Python自动获取PDF图纸的图纸大小,并依此分类整理

在建筑行业,设计师用CAD设计完建筑图纸后,常常需要上传到市、省二级图审平台上,故需要将每张图纸转成PDF文档,并盖电子章(出图章、建造师章和结构章),然后上传图审系统。如果设计师在CAD转PDF时没标明图幅大小(A0,A1,A3,A4?),盖章的人就不得不一张张地打开来查看并盖章,没办法用“批量盖章”的方式。由于图纸量大,往往累成狗。

电子章要批量盖章的前提条件就是:同一批图纸的图幅是相同的,这样,电子章盖在相同的地方才不会错位。

为了解决这个问题,我用Python编了一个脚本,它可以自动识别PDF文档的尺寸(size),也就是“图幅”,并将相同图幅的PDF文档归纳到同一个目录中,以方便批量盖电子章。

该代码经多次实践,方便可靠。

以下是源代码:

'''第一步:
批量获取PDF文档的第一页的页面大小,并将其添加到该PDF文档文件名的最后面
'''
#打开PDF图纸所在的文件夹,将其文件路径复制到剪贴板中
#先指定要处理的图纸目录,注意:反斜杠“\“要改为斜杠"/"

#------------------将复制在剪贴板中的文件路径中的“\”替换成"/",并重新复制到剪贴板中------------------
import pyperclip

# 获取剪贴板中的文本
file_path = pyperclip.paste()

# 将 "\\" 替换为 "/"
file_path = file_path.replace(&
抓取PDF机械图纸中的公差信息通常涉及到光学字符识别(OCR)技术,因为PDF文件本质上是二进制格式,而直接读取文本内容对于图片元素不直接有效。Python有一些库可以帮助处理这个过程: 1. **PyPDF2** 和 **PDFMiner**: 这两个库用于解析PDF文档结构和提取文本。首先,你可以使用`PyPDF2`获取PDF的基本信息,然后尝试使用`PDFMiner`对非图像区域提取文本。 ```python import PyPDF2 from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from io import StringIO # 加载PDF with open('your_pdf_file.pdf', 'rb') as file: reader = PyPDF2.PdfFileReader(file) # 创建PDF资源管理器 rsrcmgr = PDFResourceManager() laparams = LAParams(all_texts=True) # 设置OCR选项 device = TextConverter(rsrcmgr, StringIO(), codec='utf-8', laparams=laparams) for page_num in range(reader.numPages): page = reader.getPage(page_num) interpreter = PDFPageInterpreter(rsrcmgr, device) interpreter.process_page(page) text = device.output.getvalue() # 获取转换后的文本 device.close() # 在text中搜索公差相关关键词或正则表达式 tolerance_keywords = ['公差', 'Tolerance', '±'] matching_lines = [line for line in text.splitlines() if any(keyword in line for keyword in tolerance_keywords)] # 提取匹配到的行进一步分析 ``` 2. **OCR技术**(如**Tesseract**或**PIL+Ocrmypus**): 如果PDF中有图像形式的机械图纸,你需要先将图像转为文本。`PIL`(Python Imaging Library)可以加载图像,`pytesseract`是一个方便的接口,用于调用Tesseract进行OCR。 ```python from PIL import Image import pytesseract def extract_text_from_image(image_path): img = Image.open(image_path) ocr_text = pytesseract.image_to_string(img, lang='chi_sim') # 选择合适的语言 return ocr_text # 使用图像路径替换下面这行 ocr_text = extract_text_from_image('image_of_tolerances.png') ``` 请注意,这些方法可能会受到PDF质量、字体、清晰度等因素的影响,且可能无法完美地识别所有的公差符号,特别是那些图形化的或复杂的公差标注。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

将出东方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值