如何阻止 pdfplumber 阅读每页的 header?
How to stop pdfplumber from reading the header of every pages?
我希望 pdfplumber 从用户提供的随机 pdf 中提取文本。问题是 pdfplumber 还会从每个页面中提取 header 文本或标题。我如何编程 pdfplumber 以不读取页面 headers(标题)和页码(或页脚,如果可能)?
这是代码:
import pdfplumber
all_text = ""
pdf = pdfplumber.open(file)
for pdf_page in pdf.pages:
one = pdf_page.extract_text()
all_text = all_text + '\n' + str(one)
print(all_text)
其中 file
是 PDF 文档...
我认为你做不到。
但是,您可以使用 crop
方法裁剪文档。这样,您可以只提取页面裁剪部分的文本,而忽略页眉和页脚。
当然这种方法需要你事先知道页眉和页脚的高度。
坐标解释如下:
x0 = % Distance of left side of character from left side of page.
top = % Distance of top of character from top of page.
x1 = % Distance of right side of character from left side of page.
bottom = % Distance of bottom of the character from top of page.
代码如下:
# Get text of whole document as string
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)
我希望 pdfplumber 从用户提供的随机 pdf 中提取文本。问题是 pdfplumber 还会从每个页面中提取 header 文本或标题。我如何编程 pdfplumber 以不读取页面 headers(标题)和页码(或页脚,如果可能)?
这是代码:
import pdfplumber
all_text = ""
pdf = pdfplumber.open(file)
for pdf_page in pdf.pages:
one = pdf_page.extract_text()
all_text = all_text + '\n' + str(one)
print(all_text)
其中 file
是 PDF 文档...
我认为你做不到。
但是,您可以使用 crop
方法裁剪文档。这样,您可以只提取页面裁剪部分的文本,而忽略页眉和页脚。
当然这种方法需要你事先知道页眉和页脚的高度。
坐标解释如下:
x0 = % Distance of left side of character from left side of page.
top = % Distance of top of character from top of page.
x1 = % Distance of right side of character from left side of page.
bottom = % Distance of bottom of the character from top of page.
代码如下:
# Get text of whole document as string
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)