参考文档:常用Python PDF库对比

上文中:列举了几个常用的Python中PDF的模块。

我自己的应用场景是将发票金额提取,并用金额去命名pdf文件名。

经过个人测试:PyMuPDF模块效果显著。

Talk is cheap,I show you the code。

import os
import fitz
import shutil
'''支持滴滴行程单。# PyMuPDF模块:https://pymupdf.readthedocs.io/en/latest/tutorial.html#extracting-text-and-images
'''
root_dir = "./"
out_dir = "./output"
if not os.path.exists(out_dir):os.mkdir(out_dir)def fapiao_read(text):if "¥" in text:print(text.split("¥")[-1].split("\n")[0])money = text.split("¥")[-1].split("\n")[0]elif "¥" in text:print(text.split("¥")[-1].split("\n")[0])money = text.split("¥")[-1].split("\n")[0]return moneydef xingchengdan_read(text):print(text.split("合计")[1].split("元")[0].split()[0])money = text.split("合计")[1].split("元")[0].split()[0]return moneyRepeat_name_list = []
for file in os.listdir("./"):if file.endswith(".pdf"):src = os.path.join(root_dir, file)doc = fitz.open(src)  # or fitz.Document(filename)page = doc.load_page(0)text = page.get_text("text")if "¥" in text or "¥" in text:if "敏感信息脱敏" in text and "敏感信息脱敏" in text:money = fapiao_read(text)out_file_name = "电子发票" + money + "元"else:continueelse:money = xingchengdan_read(text)out_file_name = "电子发票" + money + "元行程单"Repeat_name_list.append(out_file_name)if out_file_name in Repeat_name_list:repeat_num = Repeat_name_list.count(out_file_name)if repeat_num == 1:out_file_name = out_file_nameelse:out_file_name = out_file_name + "(" + str(repeat_num-1) + ")"dst = os.path.join(out_dir, out_file_name+".pdf")shutil.copy(src, dst)

这个仅仅支持所有电子发票的pdf,同时支持滴滴发票和行程单的提取。其他pdf暂未考虑。因为我也用不到。

备注:据我观察人民币的“¥”符号,在发票中,有两种表现。代码中已经列出。

Python中比较好用的PDF模块——发票金额提取相关推荐

  1. Python中import导入上一级目录模块及循环import问题的解决

    Python中import导入上一级目录模块及循环import问题的解决 参考文章: (1)Python中import导入上一级目录模块及循环import问题的解决 (2)https://www.cn ...

  2. Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...

    Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单. 但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水. 现 ...

  3. python中使用sys模板和logging模块获取行号和函数名的方法

    From: http://www.jb51.net/article/49026.htm 这篇文章主要介绍了python中使用sys模板和logging模块获取行号和函数名的方法,需要的朋友可以参考下 ...

  4. python中 time、datetime、random模块

    1. 自定义模块 1.1 模块分类 模块的分类: 1.内置模块(标准库)--python解释器自带的.py文件(模块): 2.第三方模块-- 需要额外下载的 (pypi) 3.自定义模块(程序员写的) ...

  5. Python实训day10am【Python中的地址引用、os模块】

    Python实训-15天-博客汇总表 目录 1.Python中的地址引用 2.os模块(操作系统模块) 2.1.os案例1 2.2.os案例2 2.3.os案例3 2.4.os案例4 2.5.os案例 ...

  6. MongoDB数据库(8.Python中使用mongodb数据库以及pymongo模块用法)

    在Python中使用MongoDB数据库,首先要下载pymongo模块 直接在命令行   pip install pymongo   就可以了 Python中使用pymongo模块对MongoDB数据 ...

  7. Python中的堆实现:heapq 模块——利用堆结构实现快速访问数据流中的中位数

    堆结构 堆结构是一种优先队列,可以以任意顺序添加对象,并随时查找或删除最小(大)的元素,或者查找和删除前 K 个最小(大)元素.相比于列表方法min() / max(),这样做的效率要高得多. 堆结构 ...

  8. python用方括号提取字符中的数值_Python使用re模块正则提取字符串中括号内的内容示例...

    Python使用re模块正则提取字符串中括号内的内容示例 本文实例讲述了Python使用re模块正则提取字符串中括号内的内容操作.分享给大家供大家参考,具体如下: 直接上代码吧: # -*- codi ...

  9. python中options类_Python的OptionParser模块

    Python中强大的选项处理模块. 示例 #!/usr/bin/pythonfrom optparse import OptionParser parser = OptionParser() pars ...

最新文章

  1. Arduino 各种模块篇 步进电机 step motor( 不用库,不用shield, 纯)
  2. CentOS下安装网卡驱动
  3. PS教程第十一课:会打开 会关闭我回了
  4. 四、Dynamic-programming algorithm Dynamic--LCS
  5. 在大公司天天调参数,感觉快废了~
  6. 【C++ STL学习之七】STL算法之find和find_if
  7. python输入多个数字 找出只出现一个的数字_在python数组中找到接近给定数字的多个值...
  8. java 验证码的制作
  9. 【LeetCode】【数组】题号:*453,数组元素相等的最小操作次数
  10. EasyPay移动支付框架
  11. ubuntu18.04使用网易云音乐 ubuntu网易云音乐打不开怎么办? ubuntu安装网易云音乐
  12. pcntl php windows_PHP各版本安装pcntl扩展
  13. Found my pics from 2007
  14. 小白必备!Rust 编程语言入门教程
  15. 基于互联网+居民健康管理平台技术方案
  16. 用python处理水仙花数
  17. RandLA-Net复现S3DIS记录
  18. java麻将软件_dnf徽章加什么
  19. 寄居蟹与海葵c语言大作业,寄居蟹如何与海葵共生
  20. 【AI视野·今日NLP 自然语言处理论文速览 第二十三期】Tue, 28 Sep 2021

热门文章

  1. 太全了!!138 张图带你 MySQL 入门!!
  2. the connected emulator is a j-link clone
  3. Letax 空格、字号、括号、序号
  4. 中华人民共和国户口登记条例
  5. 5.21 制作一个简易的购物车效果 JS的这些Dom基础内容快来学习吧
  6. 给定一个非负整数num,范围中的每个数字i 计算其二进制中1的个数
  7. 落单的数(Java)
  8. 模拟电路设计的九个级别 (ZT)!!!
  9. IntArray和Array<Int>
  10. Android API 指南 - Android API Guides