发布于 2026-01-06 0 阅读
0

使用 Python 自动将 PDF 数据录入 Excel

使用 Python 自动将 PDF 数据录入 Excel

今天我将向您展示如何自动将PDF数据导入Excel。这可以为每天进行此类操作的每个人节省大量时间。

这是我们的测试数据:
在此处输入图片描述

让我们直接来看代码吧!

首先我们需要导入依赖项

from tika import parser
import pprint
from collections import defaultdict
import re
import pandas as pd
Enter fullscreen mode Exit fullscreen mode

之后,我们需要定义 PrettyPrinter 函数,获取 PDF 文件的内容并将其转换为列表:

pp = pprint.PrettyPrinter(indent=3)
parsedPDF = parser.from_file("final-test.pdf")

content = parsedPDF['content']
contentlist = content.split('\n')
Enter fullscreen mode Exit fullscreen mode

删除拆分后生成的列表中的空字符串。

contentlist = list(filter(lambda a: a != '', contentlist))
Enter fullscreen mode Exit fullscreen mode

创建一个迭代器和其他标志,我们将在算法中使用它们。该迭代器用于遍历 PDF 的每一行内容:

iterateContent = iter(contentlist)
Enter fullscreen mode Exit fullscreen mode

抓取数据的字典占位符

data = defaultdict(dict)
Enter fullscreen mode Exit fullscreen mode

我们的计数器用来统计我们获得了多少块积木。

 cntr = 0
Enter fullscreen mode Exit fullscreen mode

指示我们当前位于特定数据块的哪一行。

 line = 1
Enter fullscreen mode Exit fullscreen mode

该算法将使用标志 cntr 和 line 来判断我们是在新区块还是现有区块中。

while True:
    try:
        string = next(iterateContent)
    except StopIteration:
        break

    if re.match('^[A-Z\s]+$', string):
        cntr += 1           

        data[cntr]['Name'] = string
        line = 2
        print('matched')

    elif line == 2:
        data[cntr]['Address'] = string
        line += 1

    elif line == 3:
        data[cntr]['Website'] = string
        line += 1
Enter fullscreen mode Exit fullscreen mode
print("Total data:", len(data.keys()))
Enter fullscreen mode Exit fullscreen mode

将数据设置到数据框中

df = pd.DataFrame(data.values())
df.index += 1
print(df)
Enter fullscreen mode Exit fullscreen mode

将数据框写入 Excel。

writer = pd.ExcelWriter("dataframe.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name='output', index=False)
writer.save()
Enter fullscreen mode Exit fullscreen mode

我们的最终结果:

在此处输入图片描述

谢谢大家。

文章来源:https://dev.to/stokry/automate-data-entry-from-pdf-to-excel-with-python-1hm