camelot

利用python第三方库提取PDF文件的表格内容

怎甘沉沦 提交于 2020-04-28 21:35:52
小爬最近接到一个棘手任务:需要提取手机话费电子发票PDF文件中的数据。接到这个任务的第一时间,小爬决定搜集各个地区各个时间段的电子发票文件,看看其中的差异点。粗略统计下来,PDF文件的表格框架是统一的,但是数据部分则有较大差异: .   小爬首先想到的是借助工具提取发票的文本内容,然后用re正则表达式进行规则化的匹配数据,找到每个字都信息;这其中大部分的python-pdf解析库都能胜任. 可关键的问题是,提取出来的文本差异性非常大,比如说:各段文字出现的顺序并不是按照PDF中的文字的Z序排列.举个例子:"名称:"后面紧跟的未必是真实的用户名称字符,可能是"单价".这就给RE表达式带来了极大难度.后来小爬才意识到,我需要的是一个能够对"表格"数据的支持非常友好的PDF解析库.同时对表格外的图片&文字信息也具备很好的提取能力.   我们得搞定二维码:发票PDF文件的左上角位置是一个二维码对象,该二维码中可以解析到 "机器编号","发票代码","发票号码","开票日期" 和"校验码". 这个时候需要用到 fitz .很多人不知道fitz库是啥,其实它是 pymupdf 中的一个模块,操作PDF非常舒服,只需要pip安装即可: pip install pymupdf   该方法基本借鉴了这篇博客的方法: Python提取PDF中的图片 ,代码示例如下: def pdf2pic(pdf

python爬虫处理在线预览的pdf文档

会有一股神秘感。 提交于 2020-04-09 11:24:12
引言 最近在爬一个网站,然后爬到详情页的时候发现,目标内容是用pdf在线预览的 比如如下网站: https://camelot-py.readthedocs.io/en/master/_static/pdf/foo.pdf 根据我的分析发现,这样的在线预览pdf的采用了pdfjs加载预览,用爬虫的方法根本无法直接拿到pdf内的内容的,对的,你注意到了我说的【根本无法直接拿到】中的直接两个字,确实直接无法拿到,怎么办呢?只能把pdf先下载到本地,然后用工具转了,经过我查阅大量的相关资料发现,工具还是有很多:   1.借用第三方的pdf转换网站转出来   2.使用Python的包来转:如:pyPdf,pyPdf2,pyPdf4,pdfrw等工具 这些工具在pypi社区一搜一大把: 但是效果怎么样就不知道了,只能一个一个去试了,到后面我终于找到个库,非常符合我的需求的库 ——camelot camelot可以读取pdf文件中的数据,并且自动转换成pandas库(数据分析相关)里的DataFrame类型,然后可以通过DataFrame转为csv,json,html都行,我的目标要的就是转为html格式,好,废话不多说,开始搞 开始解析 1.安装camelot: pip install camelot-py pip install cv2 (因为camelot需要用到这个库) 2.下载pdf