利用pdfplumber处理滴滴电子发票

本文介绍如何使用Python的pdfplumber模块读取并处理滴滴电子发票,通过提取行程信息重命名文件,便于报销管理和检索。通过导入模块,获取报销单列表,读取报销单详细信息,最终实现整齐的文件命名,提升报销效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 利用Python中的pdfplumber模块,读取滴滴打车的行程单信息,对行程单和发票进行重命名。
  • 处理后的文件,非常便于检索、查找、归类和报销填报。


每次滴滴打车,回来以后发票处理都挺麻烦。特别是出长差回来,有时候几十张发票,每一张都要与行程单对在一起,打印出来交给财务。

而滴滴的电子发票从邮箱里面下载下来以后,只看文件名是不知道里面的信息的。

比如从邮箱里面下载了一堆这样的文件
文件截图
还好Python有强大的pdf处理工具,简单搜索一下,决定使用pdfplumber这个插件库。

1、 导入模块

import pdfplumber
import os
import shutil
# 要用到pdfplumber
# os主要用于获取pdf的文件名
# shutil主要用于copy原pdf文件,到新的文件名

2、获取报销单列表

# 首先获取所有文件名
file_list = os.listdir()
# 建立一个空的“报销单”文件名list
bxd_filename_list = []
# 给出报销单和发票的固定前缀(从邮箱里面下载的样子)
pre_bxd = '滴滴出行行程报销单'
pre_fp = '滴滴电子发票'

# 获得所有的报销单列表
for fname in file_list:
    if '.pdf' in fname and pre_bxd in fname:
        bxd_filename_list.append(fname)

以上就获得了所有的报销单文件名。因为报销单文件名和发票文件名除了基本名称以外,其他都是一样的。这需要邮件下载的时候稍微注意一下。

3、 读取信息,重命名文件

下面读取报销单里面的信息,包括日期 + 城市 + 出发地点


                
在使用pdfplumber处理PDF文件时,如果不需要图像内容,可以采取以下几种方式排除图片: 1. **设置提取模式**:在初始化`Reader`对象时,你可以通过设置`laparams`参数来控制如何解析页面元素。例如,设置`Laparams.all_text=True`将仅提取文本,跳过图像。 ```python from pdfplumber import PDF with PDF("example.pdf", laparams=Laparams(all_text=True)) as pdf: for page in pdf.pages: content = page.extract_text() ``` 2. **过滤元素**:遍历每个页面时,可以使用`element.is_image()`检查元素是否为图像,并忽略它。这样可以确保只有文本会被提取。 ```python for page in pdf.pages: for element in page.extract_data(): if not element.is_image(): # 提取文本或其他非图元内容 process_element(element) ``` 3. **转换成文本**:某些PDF中的图像可能会包含文字。在这种情况下,虽然原始图像被排除,但如果图像中包含文本,pdfplumber会尝试将其作为文本进行提取。注意这可能不是完美的解决方案,因为OCR识别可能存在错误。 4. **预处理**:在读取前,可以先使用外部工具如`ImageMagick`或光学字符识别(OCR)服务对PDF进行预处理,将图像转换为文本再导入pdfplumber。 尽管上述方法可以帮助你专注于文本内容,但在某些场合下,图像信息也是有用的,比如分析版面布局或保持文档完整性。因此,在应用这些技巧之前,应权衡好是否真的需要排除图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值