因工作需要,每月需要对大量的电子发票重命名,命名格式为发票代码_发票号码.pdf,几经尝试,发现同样是pdf格式的电子发票,使用pdfplumber读取出来的文字信息却有很大不同,一些通行费发票可以很好地识别出全部内容,非通行费的电子发票却只能读取出一部分发票信息,而且最需要的发票代码和发票号码恰恰是读取不出来的。在网上一番查找之后,最终实现通过识别电子发票左上角的二维码来读取发票代码发票号码等基本信息并对pdf文件进行重命名。

import os
import fitz
from pyzbar.pyzbar import decode
from PIL import Imagedef get_filepath(base_path):'''获取当前路径下所有的电子发票pdf文件路径'''file_paths = []file_names = os.listdir(base_path)for file_name in file_names:if file_name.endswith('.pdf'):file_paths.append(os.path.join(base_path, file_name))return file_pathsdef rename_pdf(file_paths):'''逐一对所有电子发票文件左上角的二维码识别并重命名文件'''for file_path in file_paths:result = get_qrcode(file_path)results = list(result.split(','))new_name = results[2] + "_" + results[3] + ".pdf"new_file_path = os.path.dirname(file_path) + '\\' + new_name       os.rename(file_path, new_file_path)def get_qrcode(file_path):'''提取pdf文件中左上角的二维码并识别'''pdfDoc = fitz.open(file_path)page = pdfDoc[0]    #只对第一页的二维码进行识别rotate = int(0)zoom_x = 3.0zoom_y = 3.0mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)rect = page.rectmp = rect.tl + (rect.br - rect.tl) * 1 / 5clip = fitz.Rect(rect.tl, mp)pix = page.getPixmap(matrix=mat, alpha=False, clip=clip)img = Image.frombytes("RGB", (pix.width, pix.height), pix.samples)  barcodes = decode(img)for barcode in barcodes:result = barcode.data.decode("utf-8")return resultif __name__ == '__main__':base_path = os.getcwd()all_files = get_filepath(base_path)rename_pdf(all_files)

虽然功能比较单一,但是不管黑猫白猫,能抓老鼠就是好猫

参考博文: https://www.cnblogs.com/new-june/p/11995496.html

Python识别二维码获取电子发票基本信息相关推荐

  1. python 识别二维码/条形码

    python 识别二维码/条形码 1. 安装包 pip install -y pillow -i https://mirrors.aliyun.com/pypi/simple/ pip install ...

  2. 树莓派python识别二维码_Zbar树莓派二维码(QR)识别(基于图片)

    注意:如果二维码太小的话,zbar是很难识别的,这也是我在公司解决的问题(不然随便调用下zbar就解决问题了,图像算法工程师就没有存在的必要了,下文虽然是一个通用的解决方案,但对一般识别应用场景来说是 ...

  3. Python识别二维码的两种方法(cv2)

    在学习Python处理二维码的过程中,我们看到的大多是"用python生成酷炫二维码"."用Python制作动图二维码"之类的文章.而关于使用Python批量识 ...

  4. Python识别二维码的两种方法

    人生苦短,快学Python!大家好,我是朱小五 最近在搜寻资料时,发现了一则10年前的新闻:二维码将成线上线下关键入口.从今天的移动互联网来看,支付收款码/健康码等等与我们息息相关,二维码确实成为了我 ...

  5. Python识别二维码条形码?用pyzbar一招搞掂(含代码)

    文章目录 原创声明 前言 一.pyzbar 是什么? 二.安装 pyzbar 1. Windows 2. Ubuntu 3.centos7 三.开始识别 代码走起: 结果: 可能出现的问题: 解决方法 ...

  6. python识别二维码条形码?用pyzbar一招搞掂(含代码)!

    原创声明 本文为 HinGwenWoong 原创,如果这篇文章对您有帮助,欢迎转载,转载请阅读文末的[授权须知],感谢您对 HinGwenWoong 文章的认可! 前言 二维码和条形码在我们的日常生活 ...

  7. 树莓派CSI摄像头python识别二维码

    1. 打开终端,更新树莓派,将软件源更新一遍 sudo apt-get update 更新系统,将已安装的软件更新到最新版 sudo apt-get upgrade 这是带摄像头的树莓派. 开启摄像头 ...

  8. 西北乱跑娃 -- python识别二维码

    上代码 filename = r"C:\Users\Administrator\Desktop\c548469207a406698b21b5abff923e8.jpg" impor ...

  9. Python生成+识别二维码

    二维码(QR Code),使用平面图案存储信息,根据白0黑1的算机内部逻辑,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理,记录好所有数 ...

最新文章

  1. Android属性动画源代码解析(超详细)
  2. java js highcharts_Highcharts.js -纯javasctipt图表库初体验
  3. win8 必须重新启动计算机才能关闭用户账户控制,windows8中怎么关闭用户账户控制(UAC)仅针对单个用户...
  4. 苹果企业账号炒作到多少钱_从炒作到行动:边缘计算的后续步骤
  5. mysql在jsp的导包语句_JSP+MYSQL中如何正确使用JDBC包?
  6. javascript-函数声明和函数表达式-call-apply
  7. 基于模板的通用代码生成器LKGenerator(四)-核心技术之各种数据库查询表信息sql整理...
  8. python模拟登录淘宝_Python模拟登陆淘宝示例源码
  9. 23. 线程如何退出结束
  10. Android雁翎刀之ImageView之定制头像
  11. sql python r_Mode Studio,支持Python,R和SQL的云数据分析利器
  12. kindeditor在Firefoxt 和 Chrome 下不能取到值的解决方法
  13. 【摩尔吧今日推荐】我们一定要给自己提出这样的任务:第一,学习,第二是学习,第三还是学习。
  14. 计算机毕业论文答辩教师评语,毕业论文答辩教师评语
  15. PDMReader的资料整理和个人说明
  16. HDU3446 daizhenyang‘s chess【带花树】
  17. 如何截取音频片段并制作成手机铃声
  18. mysql查询所有学生各科成绩按照总成绩降序排列
  19. linux c/c++使用sqlite3读取数据
  20. 5W2H工作法,使工作更有条理,生活更好梳理

热门文章

  1. php 微信授权 跨域,微信公众号支付 请求跳转code跨域
  2. 熊去氧胆酸的药物行业调研报告 - 市场现状分析与发展前景预测
  3. 机器学习一脸懵笔记【05】概率论
  4. h5活动是什么意思_H5活动页面可以有哪些作用
  5. minigui 编译与使用
  6. 无限火力机器人一拳流出装_LOL无限火力再出赖皮套路,机器人无限击飞,需要两件装备!...
  7. win7请不要关闭计算机 正在安装更新,WIN7旗舰版系统总是提示自动安装更新关闭方法...
  8. 英语单词词性顺口溜_初小英语语法速记口诀大全——词类
  9. 微信小程序订阅消息开发教程及代码(java后端实现)
  10. 网易2019实习生招聘编程题