如何用Python提取PDF订单信息并导出为Excel表格
多页PDF订单信息提取到Excel实现方案
针对你需要提取多页PDF订单数据并导出到Excel的需求,这里提供一套适合Python新手的实现步骤和代码:
第一步:安装必要依赖
先安装两个核心库:pdfplumber(用于精准提取PDF文本)和pandas(用于处理数据并导出Excel)
pip install pdfplumber pandas
第二步:核心代码实现
以下代码会遍历PDF每一页,先提取页面顶部的订单号和日期,再提取每一行商品数据,最后将商品数据和对应的订单信息关联,导出到Excel:
import pdfplumber import pandas as pd import re # 定义要提取的列名 columns = ["order number", "order date", "code", "items", "quantity", "price", "total"] data_list = [] # 打开PDF文件 with pdfplumber.open("你的订单文件.pdf") as pdf: current_order_no = None current_order_date = None for page in pdf.pages: # 提取当前页所有文本,按行分割 page_text = page.extract_text() lines = page_text.split("\n") # 遍历每一行文本,先找订单头信息(订单号、日期) for line in lines: # 匹配订单号(根据你的PDF格式调整正则) order_no_match = re.search(r"Order No\.: (\w+-\d+)", line) if order_no_match: current_order_no = order_no_match.group(1) # 匹配订单日期(同理调整正则) order_date_match = re.search(r"Order Date\.: (\d{2}/\d{2}/\d{4})", line) if order_date_match: current_order_date = order_date_match.group(1) # 匹配商品行(根据PDF实际格式调整正则) item_match = re.search(r"(\w+) +(.+?) +(\d+) +(\d+\.\d+) +(\d+\.\d+)", line) if item_match and current_order_no and current_order_date: code = item_match.group(1) items = item_match.group(2).strip() quantity = item_match.group(3) price = item_match.group(4) total = item_match.group(5) # 将数据添加到列表 data_list.append([ current_order_no, current_order_date, code, items, quantity, price, total ]) # 将数据转为DataFrame并导出到Excel df = pd.DataFrame(data_list, columns=columns) df.to_excel("订单提取结果.xlsx", index=False) print("数据已成功导出到订单提取结果.xlsx")
关键调整说明
- 正则表达式:上面的正则是基于样图格式编写的,实际使用时需要根据你的PDF文本格式修改
order_no_match、order_date_match、item_match的正则规则,确保能精准匹配对应内容。 - 文本结构适配:如果PDF里的订单头和商品行位置有变化,可能需要调整遍历逻辑,比如先扫描完页面所有订单头,再处理商品行。
- 测试调试:建议先拿单页PDF测试,打印
page_text查看文本结构,再逐步调整正则和提取逻辑。
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

