我有一个真实的PDF文件(未扫描),在这里我需要动态地将PDF转换为文本内容。
我正在尝试做,所以我可以定义列(在下面的图像中,有3个)和坐标(突出显示的区域)。
因此,请考虑下图,我要在此处完成的操作类似于以下输出:
{
"1":[
{"row": "Pay In"}],
"2": [
{"row": "Invoice Online Download PDF Questions about this invoice?"}],
"3": [
{"row": "Contact us"}]
}
如您所见,我有两个列分隔符(它将创建三列),而且我还定义了一个需要裁剪的区域。
我发现我可以使用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')
现在height
和width
包含以磅为单位的尺寸,例如:
print(MyPDF.getPage(0).mediaBox)
礼物:
RectangleObject([0, 0, 612, 792])
我正在尝试做,所以我可以将列分隔符的位置作为百分比,例如:
{"1":{"position":"10"}, "2":{"position": "90"}}
现在这是我被困住的地方。我不知道是否可以使用pdftotext -x -y -W -H
命令获得所需的输出。
我当时想的是根据百分比计算页面上的位置。因此,例如,第一个分隔符(10%
)将包含从左到“进入页面”的10个百分比的所有文本。
有人可以指导我进行正确的计算吗?