Python 如何放弃PDF中的剪切文本

Python 如何放弃PDF中的剪切文本,python,pdf,Python,Pdf,我需要裁剪一个pdf以提取该pdf文档中的某些特定信息。有没有一种方法可以裁剪pdf,只保留裁剪区域内的文本,而丢弃裁剪区域外的所有其他文本 我已经尝试使用pyPdf来裁剪它,使用下面的代码 from pyPdf import PdfFileWriter, PdfFileReader with open("in.pdf", "rb") as in_f: input1 = PdfFileReader(in_f) output = PdfFileWriter() numP

我需要裁剪一个pdf以提取该pdf文档中的某些特定信息。有没有一种方法可以裁剪pdf,只保留裁剪区域内的文本,而丢弃裁剪区域外的所有其他文本

我已经尝试使用pyPdf来裁剪它,使用下面的代码

from pyPdf import PdfFileWriter, PdfFileReader

with open("in.pdf", "rb") as in_f:
    input1 = PdfFileReader(in_f)
    output = PdfFileWriter()

    numPages = input1.getNumPages()
    print "document has %s pages." % numPages

    for i in range(numPages):
        page = input1.getPage(i)
        print page.mediaBox.getUpperRight_x(), page.mediaBox.getUpperRight_y()
        page.trimBox.lowerLeft = (25, 25)
        page.trimBox.upperRight = (225, 225)
        page.cropBox.lowerLeft = (50, 50)
        page.cropBox.upperRight = (200, 200)
        output.addPage(page)

    with open("out.pdf", "wb") as out_f:
        output.write(out_f)

pdf本身会被裁剪,但未裁剪pdf的所有文本仍会保留。如果我复制了新PDF的所有内容,即使是裁剪的(不可见的)文本也会被复制。

在我处理完你的PDF并进行裁剪后,我发现裁剪和删除不可见的数据是不可能的

裁剪的基本作用是将
/CropBox[50 50 200]
元素添加到PDF中,但实际数据仍保留在PDF中


提示:尝试在不剪切的情况下提取数据,也可以使用库,如
pdfminer
ghostscript
或再次尝试提取文本或获取上下文框。

在我处理了你的PDF和裁剪后,我发现裁剪和删除不可见的数据是不可能的

裁剪的基本作用是将
/CropBox[50 50 200]
元素添加到PDF中,但实际数据仍保留在PDF中


提示:尝试在不剪切的情况下提取数据,也可以使用库,例如
pdfminer
ghostscript
,或者尝试另一次提取文本或获取上下文框。

您能提供测试pdf吗?:但是,如果我的理解是正确的,您不能通过裁剪pdf直接删除文本数据,数据流中的不可见内容仍然可用。您好,很抱歉回复太晚。我使用的PDF可以在这里找到。你能提供测试PDF吗但是,如果我的理解是正确的,您不能通过裁剪pdf直接删除文本数据,数据流中的不可见内容仍然可用。您好,很抱歉回复太晚。我使用的PDF可以在这里找到,它是正确的,这不是因为Python;这就是PDF裁剪。当您使用裁剪功能时,某些GUI工具会发出警告。您需要不同的方法,例如,将每个页面元素复制到新页面,对照裁剪矩形检查其坐标。您可能必须丢失一些半进半出的元素,但它应该适用于大多数文本。@alexis,如果您可以将文本外置,并使用此内容编写新文件,为什么要复制呢?:d此操作的目的是隔离PDF中的数据列。我需要解析PDF中的数据,并将其转换为软件易于索引的格式。问题是,表中的空白点没有用任何东西表示。因此,当我从PDF中提取数据时,我没有机会知道特定数据段在表中的位置。我有一个想法,就是孤立每个页面的栏目,这样我就可以发现空白空间在哪里,并用这种方式解析数据。“Fabian,这取决于你的目标是什么!如果要分发PDF文件,通常需要裁剪PDF,而不需要裁剪出的内容。如果要提取文本,裁剪是错误的方法。@cnovrup,那么您就偏离了方向!:-)修剪不是一条路要走。请发布一个新问题,并询问您在评论中所写的内容。(请提供有关“隔离数据列”的更多详细信息)。例如,我相信有一些PDF库可以为您提供结构化表;这就是PDF裁剪。当您使用裁剪功能时,某些GUI工具会发出警告。您需要不同的方法,例如,将每个页面元素复制到新页面,对照裁剪矩形检查其坐标。您可能必须丢失一些半进半出的元素,但它应该适用于大多数文本。@alexis,如果您可以将文本外置,并使用此内容编写新文件,为什么要复制呢?:d此操作的目的是隔离PDF中的数据列。我需要解析PDF中的数据,并将其转换为软件易于索引的格式。问题是,表中的空白点没有用任何东西表示。因此,当我从PDF中提取数据时,我没有机会知道特定数据段在表中的位置。我有一个想法,就是孤立每个页面的栏目,这样我就可以发现空白空间在哪里,并用这种方式解析数据。“Fabian,这取决于你的目标是什么!如果要分发PDF文件,通常需要裁剪PDF,而不需要裁剪出的内容。如果要提取文本,裁剪是错误的方法。@cnovrup,那么您就偏离了方向!:-)修剪不是一条路要走。请发布一个新问题,并询问您在评论中所写的内容。(请提供有关“隔离数据列”的更多详细信息)。例如,我相信有一些PDF库可以为您提供结构化表。