根据列和坐标裁剪PDF文档

时间:2019-05-20 11:16:40

标签: python python-3.x pdf

我有一个真实的PDF文件(未扫描),在这里我需要动态地将PDF转换为文本内容。

我正在尝试做,所以我可以定义列(在下面的图像中,有3个)和坐标(突出显示的区域)。

因此,请考虑下图,我要在此处完成的操作类似于以下输出:

{
"1":[
  {"row": "Pay In"}], 
"2": [
  {"row": "Invoice Online Download PDF Questions about this invoice?"}],
"3": [
  {"row": "Contact us"}]
}

enter image description here

如您所见,我有两个列分隔符(它将创建三列),而且我还定义了一个需要裁剪的区域。

我发现我可以使用pdftotext从PDF文件中提取文本。

我正在使用PyPDF2来获取PDF矩形对象,就像这样:

from PyPDF2 import PdfFileReader

# Get PDF file dimension. (Only first page)
MyPDF = PdfFileReader(open(pdf_file, 'rb'))

x = MyPDF.getPage(0).mediaBox[0]
y = MyPDF.getPage(0).mediaBox[1]
W = MyPDF.getPage(0).mediaBox[2]
H = MyPDF.getPage(0).mediaBox[3]
width = ((W * 96) / 72)
height = ((H * 96) / 72)

col = COLUMNS[str(1)]

for i, col in enumerate(COLUMNS):
    col = COLUMNS.get(str(col))

    os.system('pdftotext -x 0 -y 0 -W 0 -H 0 my.pdf my' + str(i+1) + '.txt -layout')

现在heightwidth包含以磅为单位的尺寸,例如:

print(MyPDF.getPage(0).mediaBox)

礼物:

RectangleObject([0, 0, 612, 792])

我正在尝试做,所以我可以将列分隔符的位置作为百分比,例如:

{"1":{"position":"10"}, "2":{"position": "90"}}

现在这是我被困住的地方。我不知道是否可以使用pdftotext -x -y -W -H命令获得所需的输出。

我当时想的是根据百分比计算页面上的位置。因此,例如,第一个分隔符(10%)将包含从左到“进入页面”的10个百分比的所有文本。

有人可以指导我进行正确的计算吗?

0 个答案:

没有答案