首页 > 解决方案 > Python PDF 解析器 - 工程绘图

问题描述

我正在尝试编写一个 Python 脚本来使用 PyPDF2 解析 PDF 文件。唯一的问题是,我的 PDF 文件不是您的传统文件,而是工程图。

无论如何,我需要代码来解析写在右下角的文本,以及上面写有文本的红戳。绘图将如下所示:在此处输入图像描述

我试图编写一些基本代码来解析它并提取数据,但它不起作用。

import PyPDF2

# creating a pdf file object 
pdfFileObj = open('example.pdf', 'rb') 
  
# creating a pdf reader object 
pdfReader = PyPDF2.PdfFileReader(pdfFileObj) 
  
# printing number of pages in pdf file 
print(pdfReader.numPages) 
  
# creating a page object 
pageObj = pdfReader.getPage(0) 
  
# extracting text from page 
print(pageObj.extractText()) 
  
# closing the pdf file object 
pdfFileObj.close()

有人有什么建议吗?

标签: pythonpypdf2

解决方案


派对迟到了……

尽管如此,我们还是开发了一款商业产品来做到这一点:Werk24。它有一个简单的python客户端pip install werk24

有了这个,你的任务变得非常简单。您可以使用简单的命令读取标题栏。想象一下你想获得称号

from werk24 import Hook, W24AskTitleBlock
from werk24.models.techread import W24TechreadMessage
from werk24.utils import w24_read_sync

from . import get_drawing_bytes # define your own


def recv_title_block(message: W24TechreadMessage) -> None:
    """ Print the Designation

    NOTE: Other fields like Drawing ID, Material etc are
    also available.
    """
    print(message.payload_dict.get('designation'))


if __name__ == "__main__":

    # submit the request to Werk24
    w24_read_sync(
        get_drawing_bytes(), 
        [Hook(
          ask=W24AskTitleBlock(), 
          function=recv_title_block
        )])

对于您提供的图纸,响应将是:

"designation": {
    "captions": [
        {
            "language": "eng",
            "text": "Descr"
        }
    ],
    "values": [
        {
            "language": "eng",
            "test": "Shaft",
        }
    ]
}

注意:您的文件非常模糊,因此我手动创建了响应 - API 需要 180 dpi 的最小分辨率(也适用于 TIF 和 DXF 文件)。


推荐阅读