Python 裁剪带有PyPDF2的pdf
我一直在做一个项目,我用神经网络从pdf中提取表格数据, 我成功地检测了表格并获得了它们的坐标(x、y、宽度、高度),我一直在尝试用pypdf2裁剪pdf以隔离表格,但由于某些原因,裁剪永远不会符合预期的结果。 运行推断后,我得到这些坐标 [5.0948269e+01、1.5970685e+02、1.1579385e+03、2.7092386e+02 9.9353129e-01]] 第五个数字是我的神经网络精度,我们可以放心地忽略它 在pyplot works中尝试它们,因此它们没有问题: 但是,在pypdf2中使用相同的坐标始终处于关闭状态Python 裁剪带有PyPDF2的pdf,python,matplotlib,pypdf2,Python,Matplotlib,Pypdf2,我一直在做一个项目,我用神经网络从pdf中提取表格数据, 我成功地检测了表格并获得了它们的坐标(x、y、宽度、高度),我一直在尝试用pypdf2裁剪pdf以隔离表格,但由于某些原因,裁剪永远不会符合预期的结果。 运行推断后,我得到这些坐标 [5.0948269e+01、1.5970685e+02、1.1579385e+03、2.7092386e+02 9.9353129e-01]] 第五个数字是我的神经网络精度,我们可以放心地忽略它 在pyplot works中尝试它们,因此它们没有问题: 但
from PyPDF2 import PdfFileWriter, PdfFileReader
with open("mypdf.pdf", "rb") as in_f:
input1 = PdfFileReader(in_f)
output = PdfFileWriter()
numPages = input1.getNumPages()
for i in range(numPages):
page = input1.getPage(i)
page.cropBox.upperLeft = (5.0948269e+01,1.5970685e+02)
page.cropBox.upperLeft = (1.1579385e+03, 2.7092386e+02)
output.addPage(page)
with open("out.pdf", "wb") as out_f:
output.write(out_f)
这是我得到的输出:
我错过什么了吗
谢谢大家! 给你:
from PyPDF2 import PdfFileWriter, PdfFileReader
with open("mypdf.pdf", "rb") as in_f:
input1 = PdfFileReader(in_f)
output = PdfFileWriter()
numPages = input1.getNumPages()
x, y, w, h = (5.0948269e+01, 1.5970685e+02, 1.1579385e+03, 2.7092386e+02)
page_x, page_y = input1.getPage(0).cropBox.getUpperLeft()
upperLeft = [page_x.as_numeric(), page_y.as_numeric()] # convert PyPDF2.FloatObjects into floats
new_upperLeft = (upperLeft[0] + x, upperLeft[1] - y)
new_lowerRight = (new_upperLeft[0] + w, new_upperLeft[1] - h)
for i in range(numPages):
page = input1.getPage(i)
page.cropBox.upperLeft = new_upperLeft
page.cropBox.lowerRight = new_lowerRight
output.addPage(page)
with open("out.pdf", "wb") as out_f:
output.write(out_f)
注:在PyPDF2中,位于页面左下角的坐标原点。Y轴的方向是从底部向上。不像在屏幕上。因此,如果您想获得裁剪区域上边缘的PDF坐标,您需要从页面高度减去裁剪区域上边缘的y坐标
谢谢您的详细回答