如何从PDF上的坐标中提取文本到Excel

问题描述

Python的新手。我使用了以下代码

from pdfminer.layout import LAParams,LTTextBox
from pdfminer.pdfpage import pdfpage
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import pdfpageInterpreter
from pdfminer.converter import pdfpageAggregator

fp = open('Card.pdf','rb')
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = pdfpageAggregator(rsrcmgr,laparams=laparams)
interpreter = pdfpageInterpreter(rsrcmgr,device)
pages = pdfpage.get_pages(fp)

for page in pages:
    print('Processing next page...')
    interpreter.process_page(page)
    layout = device.get_result()
    for lobj in layout:
        if isinstance(lobj,LTTextBox):
            x,y,text = lobj.bBox[0],lobj.bBox[3],lobj.get_text()
            print('At %r is text: %s' % ((x,y),text))

输出如下:

在(245.76,685.4898)上是文本:STATEMENT

在(99.36,538.7497999999999)是文本:类型

在(210.0,538.7497999999999)是文本:详细信息

在(310.8,538.7497999999999)是文本:参考

我想将特定文本放入CSV的列中,例如(99.36,538.7497999999999)处的任何文本都将进入第1列,等等

我将如何处理?

解决方法

您可以使用pandas来完成此任务:

import pandas as pd

df_results = pd.DataFrame()
for lobj in layout:
    x,y,text = lobj.bbox[0],lobj.bbox[3],lobj.get_text()
    collected_data = {'x': x,'y': y,'text': text}
    data = pd.Series(collected_data)
    df_results = df_results.append(data,ignore_index=True)

df_results.to_csv('coordinates_data.csv')

它将数据收集到数据框中,然后另存为csv。