[784]python解析PDF表格

2023-11-19

通过看别人写的博客,发现python里面有关PDF解析的通常有以下四种:

  • pdfminer,擅长仅仅是文字的解析,本小白试过了,是把表格解析成普通的文本,还经常会伴随一些莫名奇妙的不认识的符号。这个方案pass掉

  • pdf2html,看例是把pdf解析成html,但是html的标签并没有规律,解析一个还行,但是本小白是许多的pdf文档下小标题的表格,这个方案直接pass掉

  • tabula,这个是我看过的前辈写的博客中使用最多的,本人用过了。对于简单的表格,也就是单元格中没有换行的,表头表尾形式不复杂的,这个方案的值得推荐。电脑需要有Java的环境。

  • pdfplumber,这个是看了知乎上的一个大佬的发现,并且自己安装成功之后,发现最小众,但是最符合我的需求的解决方案。前提是是需要安装ImageMagick的

方案1:tabula

import tabula

# Read pdf into DataFrame
df = tabula.read_pdf("./P26.pdf",pages=str(1))
print(df)

这个直接返回的是一个数据帧,所以就直接是结构化的数据啦!

输出结果是这样的:

[    序号               疑似失联私募机构
0    1     中投国美投资基金管理(北京)有限公司
1    2           北京嘉宸投资基金有限公司
2    3     中融国晟投资基金管理(北京)有限公司
3    4     奥尼斯特(北京)投资基金管理有限公司
4    5       北京国信联盟投资基金管理有限公司]

方案2:pdfplumber

import pdfplumber
import pandas as pd

pdf = pdfplumber.open("./P26.pdf")
p0 = pdf.pages[0]#注意此处的pages是一个列表,索引是从0开始的
table = p0.extract_table()
df = pd.DataFrame(table[1:], columns=table[0])
# df = pd.DataFrame(table[2:], columns=table[1])
print(df)

输出结果是这样的:

   序号 NaN NaN               疑似失联私募机构                 NaN   NaN
0       1                             中投国美投资基金管理(北京)有限公司      
1       2               北京嘉宸投资基金有限公司                None  None
2       3         中融国晟投资基金管理(北京)有限公司                None  None
3       4         奥尼斯特(北京)投资基金管理有限公司                None  None
4       5           北京国信联盟投资基金管理有限公司                None  None

虽然为了展示对比的方便,这里都是用了同样的一个表格,但是方案2的解决真的要比1好

别问我为啥知道2比1好,你试试用1去解析一些带有文字格式的表格,带有复杂的表头的表格,你就知道啦!我在这里并没有在瞎说,而且还得装的的java的,后者只装一个的ImageMagick的就行,而且ImageMagick的很有用的

pandas.core.frame.DataFrame 切片技巧

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(6,4), columns=list('ABCD'))
print(df.iloc[3])  # 输出第4行的值 索引以0开头
print(df.iloc[3:5, 0:2])  # 输出4-5行,1到2列
print(df.iloc[[1, 2, 4], [0, 2]])  # 输出不连续行列的树
print(df.iat[1, 1]) # 提取2行2列的数,提取单个数iat效率更高

print('分割线','*'*200)

参考:https://www.sohu.com/a/249125624_495461
https://www.cnblogs.com/rener0424/p/11225744.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[784]python解析PDF表格 的相关文章

  • vue3中的readonly

    接受一个对象 不论是响应式还是普通的 或是一个 ref 返回一个原值的只读代理 只读代理是深层的 对任何嵌套属性的访问都将是只读的 它的 ref 解包行为与 reactive 相同 但解包得到的值是只读的 类型 function reado

随机推荐

  • VS2019版本下载详细介绍~

    一 下载地址 第一种方法 VS官网 Visual Studio 2022 IDE 适用于软件开发人员的编程工具 因为官网现在主推2022版本的VS 所以需要选择老旧版本下载 点击下载按钮 向下滑动 该方法需要登录微软账户 才能选择老旧版本的
  • sort的用法

    sort的用法 详细见cplusplus 1 默认的sort函数是按升序排 对应于1 sort a a n 两个参数分别为待排序数组的首地址和尾地址 2 可以自己写一个cmp函数 按特定意图进行排序 对应于2 例如 sort algorit
  • SOIL在VS2015搭建

    这是SOIL库的主页 http www lonesock net soil html 下载好解压 进project vc9 用Vs打开项目 编译记得用release 如果用的OPengl是64位的就用64位编译 不然生成的lib不能用 运行
  • 积分图像(Integral Image)和积分直方图

    积分图像文章推荐 http blog sina com cn s blog 4cb0b54301017wwo html https blog csdn net u010807846 article details 50354000 参考文献
  • vue-router的routes中name属性作用详解

    我们常用vue js和vue router来创建单页应用 vue router能很方便的管理所有的单页组件 我们在定义每个路由的时候会有一个name的属性 如下面代码 通常我们不定义这个属性发现也没有任何问题 那么这个name到底有什么用呢
  • R语言绘图:实现数据点的线性拟合,进行显著性分析(R-squared、p-value)、添加公式到图像

    最近在做关于数据点线性拟合相关的研究 感觉R语言在这方面很方便 而且生成的图片很漂亮 所以在这里和大家分享一下代码 这是别人所绘制的拟合图像 很漂亮 自己也用iris鸢尾花数据集进行一个线性拟合看看 拟合线性模型最基本的函数就是lm 格式为
  • 进阶java大师之路,泛型在hashmap上的灵活运用

    由于 公司的试用的框架上 存在大量的hashmap的创建 产生大量的I O 以及内存的消耗 所以 抽了点时间 看书 effective java 这本书 同时 也从项目的作者 framework 上学习 吸取 最终写出了 符合生产的方案 存
  • 【FreeRTOS】Arduino开发STM32

    0 开发环境 工具 Vscode platformio arduino STM32F103C8T6 USB TTL 引脚连接 STM32直接设置为烧录模式即可 烧录完成后会自动运行程序 1 点灯加串口输出调试 注意事项 每次上传程序前 需要
  • krpano 获取当前场景名称

    var scene krpano get xml scene copy scene name scene get xml scene name set scene name get scene get xml scene name copy
  • element-ui中$confirm弹出框的确定和取消按钮互换位置

    element ui中 confirm弹出框的确定和取消按钮互换位置 1 定位元素 2 找到元素class 通过flex布局 进行位置更换 3 app vue中 进行全局修改 确认窗 取消确认按钮位置更换 el message box wr
  • 如何创建一个私有的Docker仓库

    目录 一 在docker的官方网站中直接创建 二 搭建自己本地的仓库 2 1 搭建自己的本地仓库 2 2 为本地镜像添加认证 2 2 1 添加证书加密功能 2 2 2 添加用户登录认证 三 部署Harbor仓库 总所周知 Docker的强大
  • 【项目实战】代码分支管理工具

    一 分支命名规范 develop Bleeding edge development used for development feature Temporary branch off develop used for feature de
  • 如果能下载或不能上传试试chmod 755放开读写权限

    如果能下载或不能上传试试chmod 755放开读写权限
  • MQTT客户端应用编程及接口分析

    MQTT客户端应用编程及接口分析 MQTT协议简介 MQTT是一个基于客户端 服务器的消息发布 订阅传输协议 MQTT协议是轻量 简单 开放和易于实现的 这些特点使它适用范围非常广泛 客户端服务端安装 1 安装 sudo apt add r
  • 如何在mysql中创建学生信息表_数据库怎么创建学生信息表

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 数据库创建学生信息表的方法是 1 新建表 单击数据库 studentDb 前图标 然后右键 表 文件包 单击 新建表 选项 进入 新建表 窗口 2 设定表标识字段id 填写
  • springboot3.x的坑!!!

    正常构建springboot项目出错 背景 2022年底springboot出了3 0 现在默认创建的springboot版本就是3 0 如果其他配置按照以前2 x的来 此时就会产生很多莫名其妙的错误 所以要手动选择2 x
  • 先验概率及后验概率等解释

    20201010 0 引言 在学习统计学的时候 在概率估计的部分 经常会遇到最大似然估计 最大后验估计等名词 这些似然和后验 都跟贝叶斯准则中的一些名词定义有关 这里参考书籍 Think Bayes 这部书 来记录这些名词 1 由糖果例子来
  • xmind怎么在左边创建_XMind Mac版如何创建幻灯片 XMind Mac幻灯片创建方法教程

    XMind Mac版怎么样创建幻灯片 有大量Mac用户需要使用XMind的 不过有不少朋友表示不知道XMind Mac版如何创建幻灯片 那么到底是如何创建的呢 不要急 在此给各位朋友分享的是XMind Mac版创建幻灯片步骤图文教程 赶紧来
  • 【Docker 基础教程】Centos7.5安装Docker并配置阿里云镜像

    文章目录 前言 安装docker 前置条件 测试并运行一个实例 安装命令 安装结果 建立一个容器 配置阿里云镜像 第一步 第二步 第三步 第四步 第五步 以下方式二选一 直接复制黏贴 分步创建 前言 前面一篇文章介绍到了Docker的基本概
  • [784]python解析PDF表格

    通过看别人写的博客 发现python里面有关PDF解析的通常有以下四种 pdfminer 擅长仅仅是文字的解析 本小白试过了 是把表格解析成普通的文本 还经常会伴随一些莫名奇妙的不认识的符号 这个方案pass掉 pdf2html 看例是把p