如何解决Python PDF 抓取
任务:
PDF 是银行对帐单,包含列,即(日期、描述、存款、取款、余额)解析列及其各自的字段并以 CSV 格式导出该数据。PDF。
我的代码:
import pdftotext
import re
import csv
# open PDF file
with open('test.pdf','rb') as pdf_file:
pdf = pdftotext.PDF(pdf_file)
# extract tabular text
lines = pdf[2].split('\n')[4:]
# CSV table
table = []
# loop over lines in table
for line in lines:
# replace trailing spaces with comas
row = re.sub(' ',',line)
# reducing the number of comas to one
row = [cols.strip() for cols in re.sub(',+',row).split(',')]
# handling missed separators
row = ','.join(row).replace(' ',').split(',')
# append row to table
table.append(row)
print(table)
# write CSV output
with open('test.csv','w') as csv_file:
writer = csv.writer(csv_file)
writer.writerows(table)
问题:
我没有得到所需的输出,即一半的描述显示在日期表下。我附上 csv 以供进一步参考 here。
期望输出:
例如
['04/02','克莱斯勒资本付款 0023582513','$469.88-','$51.15']
解决方法
你可以使用 pdfplumber 库,它非常有用,我在不到五分钟的时间内就得到了这个输出,它需要使用表格参数
import pandas as pd
import pdfplumber
pdf = pdfplumber.open(r'C:\Users\Erkin\Downloads\test.pdf')
df = pd.DataFrame()
table_settings={"vertical_strategy": "text","horizontal_strategy": "lines","intersection_y_tolerance": 8}
df = pd.DataFrame(pdf.pages[3].extract_table(table_settings))
df.to_csv(r'C:\Users\Erkin\Downloads\test.csv')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。