如何使用 Python 从 Pdf 导入带分数?

How to import Mixed Fraction from Pdf using Python?

我是 python 的新手。我正在尝试使用 Python 从 pdf 文件中提取带分数。但是我不知道应该使用哪个工具来提取。我的示例 pdf 仅包含一页简单的文本。我想使用 Python 提取零件名称和零件长度。示例pdf页面截图如图linkPage 1 of Pdf- Screenshot. Pdf file can be downloaded from the following link (Sample Pdf)

编辑 1:- 更新

感谢您推荐 Pdfplumber。这是一个很棒的工具。我可以用它提取信息。尽管在某些情况下,当我提取长度时,我得到的是整数与分母的组合。比如说,如果我的长度是 36 1/2(如屏幕截图所示),那么我得到的值为 362 英寸。

import pdfplumber
with pdfplumber.open("Sample.pdf") as pdf:
  first_page = pdf.pages[0]
  text = first_page.extract_text()
  for row in text.split('\n'):
        if 'inches' in row:
            num = row.split()[0]
            print(num)

输出:362

此代码在大多数情况下对我有用。只是在某些情况下,我得到 362 作为我的输出,而不是 36 作为一个单独的值。我该如何解决这个问题?

我建议使用 PDF Pluber,这是一个非常强大且有据可查的工具,用于从 PDF 中提取文本、table、图像。 此外,它还有一个非常方便的功能,称为 crop,可让您仅裁剪和提取您需要的页面部分。

举个例子,代码应该是这样的(注意这适用于任意数量的页面):

filename = 'path/to/your/PDF'
crop_coords = [x0, top, x1, bottom]
text = ''
pages = []
with pdfplumber.open(filename) as pdf:
    for i, page in enumerate(pdf.pages):
        my_width = page.width
        my_height = page.height
        # Crop pages
        my_bbox = (crop_coords[0]*float(my_width), crop_coords[1]*float(my_height), crop_coords[2]*float(my_width), crop_coords[3]*float(my_height))
        page_crop = page.crop(bbox=my_bbox)
        text = text+str(page_crop.extract_text()).lower()
        pages.append(page_crop)

坐标解释如下:

x0 = % Distance from left vertical cut to left side of page.
top = % Distance from upper horizontal cut to upper side of page.
x1 = % Distance from right vertical cut to right side of page.
bottom = % Distance from lower horizontal cut to lower side of page.

pdfplumber 给出这样的输出

shape: square 
part name: square 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
36   ℎ 
2