python获取pdf页数_Python读取pdf页面的一部分

本文介绍了如何使用minecart库从PDF中提取指定区域的内容。通过定义行和列的边界,可以读取页面上的特定9个单元格,并将每个单元格内的文本整理成列表。示例代码展示了如何提取PDF文件中不同位置的文本。
摘要由CSDN通过智能技术生成

假设您使用的是pdfminer和pypdf2,那么我假设所讨论的PDF文件是生成的PDF而不是扫描的(如您所给出的示例中所示)。如果您知道以英寸为单位的列和行的大小,您可以使用^{}(完全公开:我写了minecart)。示例代码:import minecart

# minecart units are 1/72 inch, measured from bottom-left of the page

ROW_BORDERS = (

72 * 1, # Bottom row starts 1 inch from the bottom of the page

72 * 3, # Second row starts 3 inches from the bottom of the page

72 * 5, # Third row starts 5 inches from the bottom of the page

72 * 7, # Third row ends 7 inches from the bottom of the page

)

COLUMN_BORDERS = (

72 * 8, # Third col ends 8 inches from the left of the page

72 * 6, # Third col starts 6 inches from the left of the page

72 * 4, # Second col starts 4 inches from the left of the page

72 * 2, # First col starts 2 inches from the left of the page

) # reversed so that BOXES is ordered properly

BOXES = [

(left, bot, right, top)

for top, bot in zip(ROW_BORDERS, ROW_BORDERS[1:])

for left, right in zip(COLUMN_BORDERS, COLUMN_BORDERS[1:])

]

def extract_output(page):

"""

Reads the text from page and splits it into the 9 cells.

Returns a list with 9 entries:

[A, B, C, D, E, F, G, H, I]

Each item in the tuple contains a string with all of the

text found in the cell.

"""

res = []

for box in BOXES:

strings = list(page.letterings.iter_in_bbox(box))

# We sort from top-to-bottom and then from left-to-right, based

# on the strings' top left corner

strings.sort(key=lambda x: (-x.bbox[3], x.bbox[0]))

res.append(" ".join(strings).replace(u"\xa0", " ").strip())

return res

content = []

doc = minecart.Document(open("path/to/pdf-doc.pdf", 'rb'))

for page in doc.iter_pages():

content.append(extract_output(page))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值