Python pdf转csv
Python pdf转csv
- 背景
- 依赖的环境
- 依赖的主要python包
- pdfminer
背景
最近有需求需要解析电子行程单(滴滴、美团、高德等)的数据,由于电子行程但都是PDF的文件,为此需要解析PDF,由于PHP对解析pdf方面较弱,所以选用了Python。过程是现将pdf转为csv,然后解析csv文件的数据。
依赖的环境
Python 3.7.6
Java 1.8.0_121(tabula-py 是对 tabula-java 的封装,所以需要依赖 Java)
nignx 由于这边用到flask框架,该框架无法使用80端口,为了防止端口暴露,所以需要使用nginx做转发,该框架和转发后续文章讲解
依赖的主要python包
flask==1.1.1 用到的框架
pdfminer.six==20200124 解析PDF的包
pdfminer
由于后面会单独讲flask,在此主要说一下pdfminer
- 安装
pip install pdfminer.six - 实现
from pdfminer.high_level import extract_text
from pdfminer.pdfparser import PDFSyntaxErrordef _parse(file_path, line_count=0):"""解析滴滴出行的行程单,表头行需要特别清洗"""area = [266, 42.765625, 785.028125, 564.134375]if line_count != 0:area[2] = 3120.003125 + 31.2375 * line_countdfs = tabula.read_pdf(file_path, pages="all", area=area)num = len(dfs)save_data = []save_data.append(dfs[0])if num == 0:logging.error("no table found")elif 1 < num:for i in range(1, num):area = [175, 42.765625, 785.028125, 564.134375]area[2] = 3120.003125 + 31.2375 * line_countdfs = tabula.read_pdf(file_path, pages=i + 1, area=didi_area)save_data.append(dfs[0])# 滴滴的表头行有一些多余的换行符,导致导出的 CSV 破损for i in range(0, num):save_data[i].columns = [name.replace('\r', ' ') for name in save_data[i].columns]return save_data
上面是一个简单的读取文件内容的功能,支持多页读取,
area:控制读取内容的位置,由于第二页的数据位置和第一页不同,所以需要重新读取
然后将数据写入CSV
# data 读取的PDF数据
# output_path csv保存的路径
def _output_csv(data, output_path):"""利用 DataFrame 自身的 API,导出到 CSV 格式"""# 增加 BOM 头,否则不能双击Excel 直接打开CSVwith open(output_path, mode='wb') as output:output.write(BOM_UTF8)with open(output_path, mode='a', newline='') as output:for i in range(0, len(data)):data[i].to_csv(output, index=False)
以上就生成了CSV文件,后面就是通过取CSV文件数据就可以了。
项目地址: pdf2csv.
Python pdf转csv相关推荐
- python csv转excel_使用 Python 把 PDF 转为 CSV 和 Excel(一)
杭州国立公证处-公正摇号 会不定期公布杭州各个楼盘的购房意向登记汇总表和摇号结果,里面公开的数据是很全面的,对于想要分析一波数据搞点事情的人来说,挺有吸引力的. 但当你兴冲冲地去官网下载完数据,一看傻 ...
- python中写入csv文件的方法_Python写入CSV文件的方法
python笔记5-python2写csv文件中文乱码问题 前言 python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode.decode. 当list.tuple.dict里面 ...
- Python读取excel/csv表格并通过折线图可视化显示
Python读取excel/csv表格并通过折线图可视化显示 写作背景 参数 使用figure()函数重新申请一个figure对象 注意,每次调用figure的时候都会重新申请一个figure对象 第 ...
- python pandas 读写 csv 文件
python pandas 读写 csv 文件 具体看官方文档 https://www.pypandas.cn/docs/user_guide/io.html#csv-文本文件 import pand ...
- python PDF 转 图片
python PDF 转 图片 fitz库 代码 import fitz import time import re import os def pdf2image(pdf_path): '''# 从 ...
- python csv库,Python 中导入csv数据的三种方法
Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...
- Python写入到csv文件存在空行的解决方法
Python写入到csv文件存在空行的解决方法 参考文章: (1)Python写入到csv文件存在空行的解决方法 (2)https://www.cnblogs.com/crooswang/p/5953 ...
- python之模块csv之CSV文件的写入(按行写入)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #CSV文件的写入(按行写入)import csv #csv文件,是一种常用的文本格式,用以存储表格数据,很多 ...
- python csv读取-python如何读取csv数据
python读取csv数据的方法:首先利用csv.reader方法来读取csv文件,该方法会返回一个可迭代的对象csv_read,然后我们可以直接从csv_read对象中获取数据. python中读取 ...
最新文章
- 因特网的协议集称为TCP/IP协议集
- pycharm 报黄(黄字、黄色)警告 Local variable 'xxx' might be referenced before assignment
- 无线路由器、AP、胖AP、瘦AP的概念区别
- tableau示例超市数据在哪儿_超市运营分析 -- Tableau 实战
- Navicat Premium 64 bit 12.1.25
- 敏捷中gwt含义_在您的GWT应用程序中添加JSON功能
- C++基础::shared_ptr 编程细节(一)
- Spark SQL运行架构
- Java编程框架——Spring Cloud微服务架构实践经验总结
- 生活杂谈-空调的修理
- pr用什么显卡比较好_学ps pr ae用什么电脑比较好?有什么配置要求?
- 手写原笔迹输入_原笔迹手写软件
- 红外hs0038接收测试代码
- storm风暴英雄 tempo_19.4版本TempoStorm 风暴英雄天梯环境报告
- 如何将caj转换成word?caj转Word工具
- PaaS平台设计思想
- 我国知识共享数学生态圈的发端历程
- jQuery 流星雨特效
- ES5对象学习-多个对象的创建
- gh-ost和pt-osc性能对比