开发环境:
PyCharm 2019.3.5 (Community Edition)
Python3.7
pdfminer3k 1.3.4

发票是pdf格式,使用pdfminer3k来获取,相应代码:

from pdfminer.pdfparser import  PDFParser,PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal,LAParams
from pdfminer.pdfinterp import PDFTextExtractionNotAlloweddef parse_pdf(file_path):'''解析PDF文本,并保存到TXT文件中'''fp = open(file_path,'rb')#用文件对象创建一个PDF文档分析器parser = PDFParser(fp)#创建一个PDF文档doc = PDFDocument()#连接分析器,与文档对象parser.set_document(doc)doc.set_parser(parser)#提供初始化密码,如果没有密码,就创建一个空的字符串doc.initialize()#检测文档是否提供txt转换,不提供就忽略if not doc.is_extractable:raise PDFTextExtractionNotAllowedelse:#创建PDF,资源管理器,来共享资源rsrcmgr = PDFResourceManager()#创建一个PDF设备对象laparams = LAParams()device = PDFPageAggregator(rsrcmgr,laparams=laparams)#创建一个PDF解释其对象interpreter = PDFPageInterpreter(rsrcmgr,device)#循环遍历列表,每次处理一个page内容# doc.get_pages() 获取page列表for page in doc.get_pages():interpreter.process_page(page)#接受该页面的LTPage对象layout = device.get_result()# 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象# 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等# 想要获取文本就获得对象的text属性,for out in layout: if hasattr(out,'get_text'):     # 因为文档中不只有text文本 print(out.get_text()) file_path = r'invoice'
file_list = os.listdir(file_path)
for file in file_list:if os.path.splitext(file)[-1].lower() == '.pdf':parse_pdf(os.path.join('invoice\\', file))

获取的过程中,遇到以下错误:

错误1

WARNING:root:UniGB-UCS2-H

分析

pdfminer3k缺少相应的字库

方案

从下面链接下载相应的字库,放入Lib\site-packages\pdfminer\cmap
CMap resources

错误2

WARNING:pdfminer.converter:undefined: <PDFCIDFont: basefont='KaiTi_GB2312', cidcoding='Adobe-GB1'>, 1926

分析

安装相应字库文件后,仍然报错,这是因为pdfminer3k缺少解码插件

方案

从上面链接下载解码插件,放入相同目录,错误解决

错误3

UnicodeEncodeError: 'gbk' codec can't encode character '\xa5' in position 0: illegal multibyte sequence

分析

Obtain unicode characters from the raw bytes in the the pdf content, try to write the unicode characters to a file, endcoding the unicode as gbk. During this process, you got an error something like that.

方案

Try

open(file, 'r', encoding='utf-8')

instead of

open(file, 'r')

引用:
深入学习python解析并读取PDF文件内容的方法
使用pdfminer3K出现WARNING root UniGB UCS2 H问题
UnicodeEncodeError: ‘gbk’ codec can’t encode character: illegal multibyte sequence

发票管理小工具二:获取发票内容相关推荐

  1. 发票管理软件_财务人员都在用的这款发票管理软件,真的值得购买么?

    (1)电子凭证和纸质会计凭证具有同等效力: (2)报销管理也需要经办.审核.审批流程,且能防止重复入账: (3)以电子凭证纸质版入账留档保存的,必须同时保存电子档. 以及重复繁琐的发票查验工作,把最近 ...

  2. Python通过解压ofd文件获取发票信息

    Python通过解压ofd文件获取发票信息 实际上ofd.docx.xlsx等文件就是一个压缩文件,是可以被解压处理的.所以我们把一个ofd格式的发票文件解压后就可以看到它的目录,如下: 再用谷歌或者 ...

  3. VBA随学随用系列:进口关税电子发票管理工具 - 总纲

    前言 VBA是微软office系列软件内置的,自带输入输出的界面(想像一下Excel表), 所以用于解决日常工作中的问题就非常顺手.而且VBA语法简单,容易上手.只要有一点点基本编程知识就够了,可以边 ...

  4. Receipts for Mac(财务发票管理软件) v1.8.0免激活版

    点击打开链接今天小编为您推荐Receipts for Mac是Mac平台上一款财务发票管理软件,Receipts Mac 破解版可以检测每张发票中记录的金额并自动按提供者或类别组织条目.可以自动去识别 ...

  5. 如何通过增值税(区块链)发票上的二维码获取发票要素信息

    在我们收到的增值税电子发票.普票.专票,包括现在深圳专有的区块链发票上,在其左上侧空白位置都会有一个二维码,通过这个二维码呢,我们可以获取到发票关键的几样要素信息:发票代码.发票号码.开票日期.金额. ...

  6. php开发电子发票接口,EasyAPI发票管理加油站电子发票解决方案

    原标题:EasyAPI发票管理加油站电子发票解决方案 时代抛弃你时,连一声再见都不会说.这不,前一秒是还纸质发票,这一秒各行各业就都推行了电子发票.不得不感叹:时代改变真快!当然,电子发票会更方便.更 ...

  7. 发票管理用户端隐私权政策

    发票管理用户端尊重并保护所有使用服务用户的个人隐私权.为了给您提供更准确.更有个性化的服务,发票管理用户端会按照本隐私权政策的规定使用和披露您的个人信息.但发票管理用户端将以高度的勤勉.审慎义务对待这 ...

  8. 【增值税发票识别 OCR】如何实现自动化发票管理

    导言 在现代商业环境中,管理和处理大量的增值税发票数据是一项繁琐而重要的任务.传统的手动处理方法既费时又容易出错,而使用增值税发票识别OCR API可以实现自动化的发票管理,大大减少人工处理的工作量. ...

  9. 发票管理及打印系统的部分代码

    这里是发票管理及打印系统的部分代码,不才,献丑了,有需要的可以参考一下 代码         PrinterSettings printerSets = new PrinterSettings(); ...

最新文章

  1. 关于 AppDelegate 、UIApplication 简单的用法
  2. PHP网站安全,PHP程序安全的几个措施
  3. python中xrange函数_python中xrange和range的区别
  4. SIMD学习 -- 用SSE2指令作点乘和累加计算
  5. 【Java】利用循环嵌套实现输出一天的小时和分钟
  6. html5 xml文本编辑,简介XML文档的阅读与编辑
  7. leetcode127. Word Ladder
  8. python爬取京东手机配置信息(正则)
  9. HTML5+CSS大作业 网页制作代码_大学生网页制作作业代码——年会抽奖网页设计(1页)
  10. Unity3d常用快捷键
  11. 蝙蝠聊天软件显示无法连接服务器失败,蝙蝠聊天软件为什么没有来信息提示音?...
  12. C++ endl 的本质是什么
  13. 京东管培生(产品方向)线上hr面
  14. python疲劳检测代码_【君奉天|开发日记】疲劳驾驶检测
  15. 暗黑修仙 页游 架设教程 单机 自玩 一键端
  16. 成功解决TypeError: Value passed to parameter 'paddings' has DataType float32 not in list of allowed valu
  17. activiti并行审批流程驳回(折腾了好几天)
  18. 网红主播如何使用编码器RTMP推流到B站直播平台的方案
  19. 个人所得税税前工资计算器
  20. 用 Python 代码来模拟用核弹射击小行星会,最终能否拯救地球?

热门文章

  1. 工业控制计算机硬件基础知识,第五章 工业控制计算机及其接口技术知识 机电一体化课件.ppt...
  2. java安卓屏幕护眼效果好_手机电脑用一天太伤眼!那是因为你不知道这些“护眼”的屏幕设置...
  3. 区块链软件开发的搭建环境
  4. STM32F767 SDRAM DCMI LTDC野火开发板
  5. Web漏洞之SSRF(服务器端请求伪造)
  6. JPEG图像压缩详解和代码实现
  7. 帮过网:公务员专业科目考试考什么
  8. 字符在计算机内二进制,在计算机内,符号采用二进制编码表示。
  9. Matlab—频谱分析作图
  10. Flash开发环境简介