【问题标题】:How to extract text from coordinates on a PDF to Excel如何从PDF上的坐标中提取文本到Excel
【发布时间】:2021-01-07 08:36:03
【问题描述】:

对 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 列等

我该怎么办?

【问题讨论】:

  • excel的女巫列中需要收集哪些数据?
  • 在第 1 列中说来自 (245.76, 685.4898) 的数据,在第 2 列中说来自 (99.36, 538.7497999999999) 等的数据
  • 您需要在单独的列中收集x,y,text
  • 没错。有什么建议吗?
  • 嗨 Zaraki,我收到以下错误:x, y, text = lobj.bbox[0], lobj.bbox[3], lobj.get_text() AttributeError: 'LTCurve' object has no属性“get_text”

标签: python excel csv parsing pdf


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 2023-03-11
    • 2011-09-05
    • 2011-11-16
    • 2011-04-26
    • 2022-10-15
    • 2020-11-20
    • 2010-10-02
    相关资源
    最近更新 更多