python 读取发票信息

发票代码:000009999999
上海增值税电子普通发票
发票号码:88888819999999
开票日期:2022 年 12 月 25 日
校 验 码:48872 23417 42822 61477
机器编号:8888888888888
名 称: 上海yyyyyy医疗设备有限公司 密 9>756>-45<0354-+8440-3/>8+2

纳税人识别号: 88888888882478T 04746374205<39>226+/+13-3+
买 码
地 址 、电 话: 28>
><*<4-78-00<54>/-544>68

开户行及账号: 区 /9+626<78<63500//79<<6<8466
货物或应税劳务、服务名称 规格型号 单位 数 量 单 价 金 额 税率 税 额
(详见销货清单) 179.18 22.22
合 计 ¥179.18 ¥22.22
价税合计(大写) 贰佰零壹圆肆角 (小写) ¥201.40
名 称: 上海xxxxxx百货商业有限公司 订单号[xxxxxxxxx9793280]
销 备
纳税人识别号: xxxyyyy315vvvv29

地 址 、电 话: 上海市yyyyy、yyyy-205 yyyy1513
方 注
开户行及账号: 渣打银行(中国)有限公司上海分行 xxxxxxxxxxxxxx745
收款人:徐xx 复核:xx 开票人:xxxx 销售方:(章)

import pdfplumber
import re


# 打开 PDF 文件
with pdfplumber.open("74034291.pdf") as pdf:
    page = pdf.pages[0]
    text = page.extract_text()
    #print(text)
    print(re.findall(r'^发票号码:(.*?)$[\s\S]*?^价税合计.*?¥(.*?)$[\s\S]*?^名 称: (.*?) .*?$[\s\S]*?^纳税人识别号: (.*?)$[\s\S]*?^地 址 、电 话: (.*?)$[\s\S]*?^开户行及账号: (.*?)$',text,re.M))
    #print(re.findall(r'发票号码:(.*?)\n[\s\S]*?价税合计.*?¥(.*?)\n[\s\S]*?名 称: (.*?) .*?\n[\s\S]*?纳税人识别号: (.*?)\n[\s\S]*?地 址 、电 话: (.*?)\n[\s\S]*?开户行及账号: (.*?)\n',text))
 
模式 描述
. 匹配任意字符,除了换行符,当re.DOTALL(re.S)标记被指定时,则可以匹配包括换行符的任意字符。
(re) 匹配括号内的表达式,也表示一个组
\s 匹配任意空白字符,等价于 [\t\n\r\f]。
\S 匹配任意非空字符
[\s\S] 匹配任意字符
re.MULTILINE 或 re.M 多行匹配,影响 ^ 和 $,使它们匹配字符串的每一行的开头和结尾。
posted @ 2024-06-01 04:27  shenshu  阅读(67)  评论(0编辑  收藏  举报