我有一个问题。目前,我正在研究从pdf发票中提取数据的项目。我面临一个关于数据提取的问题。下面的代码用于提取数据。
import PyPDF2
pdfreader= PyPDF2.PdfFileReader("G:\RPA_testing\PO_450012345.pdf")
page = pdfreader.getPage(0)
content = page.extractText()
print(content)
输出:
LZE Packaging
Ludwig strasse 23, 44560, Germany
Internet : www.lze.com Email: info@lze.com
PHONE : +8801723123456
Date
12.08.2021
DEF INDUSTRY LIMITED
fedrichschafen strasse 102, 66890, Germany
PO
L-123456
Order Responsibility : Martin
Email: martin@lze.com
SL. No
QTY
Unit
Price
01.
2560
1.95
下一步,我必须提取特定的信息。我已经为此写了一个代码。但这行不通。有人能帮忙找到解决办法吗?
i=0
for row in content.split('n'):
line=content.split('n')
if "LZE Packaging" in content:
company = "LZE Packaging"
print(company)
if row.startswith('PO'):
order_number = line[i+0]
print(order_number)
if row.startswith('Date'):
Order_Date = line[i+0]
print(Order_Date)
if row.startswith('QTY'):
quantity = line[i+3]
print(quantity)
if row.startswith('Unit'):
unit_price = line[i+3]
print(unit_price)
没有得到任何输出。我知道我做错了什么。但是我找不出来。我的编码的问题是什么?无论如何,我需要下面的结果。
订单号:l - 123456订购日期:12.08.2021数量:2560单价:1.95
问候,Ekram
您的索引逻辑是关闭的,并且您从不增加i
。另外,我们也不清楚if
的第一个条件是什么。试试这个:
rows = content.split('n')
company = rows[0]
print(company)
for i, row in enumerate(rows):
if row.startswith('PO'):
order_number = rows[i+1]
print('order number:', order_number)
if row.startswith('Date'):
Order_Date = rows[i+1]
print('order date:', Order_Date)
if row.startswith('QTY'):
quantity = rows[i+4]
print('quantity:', quantity)
if row.startswith('Price'):
unit_price = rows[i+3]
print('unit price:', unit_price)
LZE Packaging
order date: 12.08.2021
order number: L-123456
quantity: 2560
unit price: 1.95