分享一点PDF中获取表格的探索过程

版面分析:如何得到标题、如何的得到段落(正确的段落)、如何得到表格、如何得到图片,图和得到图片上的文字?

还有细节问题:双栏和多栏的问题、公式问题

扫描件:扫描件本质上是图片,如何从图片中解析得到文件。

本篇文章,探索的是,非扫描件PDF中,获取表格的思路。

挑选了可以解析PDF中表格的组件,进行了测试。主要测试了 pdfplumber 和 camelot
整体的感受是:网上看啥组件都好,实际测,啥组件都不行。效果好的不开源收费,开源的效果不好。测试下来,发现把组件融合起来,还是能不花钱解决问题的,都是麻烦折腾一些。

pdfplumber

实际测试情况:解析表格的能力比较差,它把三列的表格解析成了很多列。

安装

pip install pdfplumber

可运行代码

# 导入pdfplumber
import pdfplumber# 读取pdf文件,保存为pdf实例
pdf =  pdfplumber.open("D:\\angus\\py\\困难pdf节选西藏奇正2022.pdf") # 访问第二页
first_page = pdf.pages[2]# 自动读取表格信息,返回列表
table = first_page.extract_table()print(table)

实际PDF中的表格

解析后的结果,可以看到都是错误的。因为它解析出来九列。

camelot

camelot可以正确的识别表格的列,问题是把正文当做表格。不过camelot的定位就是表格识别。

tips1:这里camelot是可以传入表格的坐标的,可以配合其它的python组件,获取到表格位置,然后只解析表格。camelot最佳的用途就是解析表格。也只能解析表格,所以可以把要解析的表格部分单独给camelot。

tips2:这里也可以考虑,把解析后为一列的表格去掉(表格为一列好像没有什么意义。虽然粗暴,但是没有太大问题)。

安装

pip install camelot-py[cv]

可运行代码

import camelot
import pandas as pddef extract_table_data(pdf_path):
    tables = camelot.read_pdf(pdf_path, flavor='stream', pages='all')
    return tables# 用法示例
pdf_path = "D:\\angus\\py\\困难pdf节选西藏奇正2022.pdf"
table_data = extract_table_data(pdf_path)
for idx, table in enumerate(table_data):
    print(f"Table {idx+1}:")
    print(table.df)
    print(f"Number of columns: {len(table.df.columns)}")
    print()

python pdf2table-v2.py

效果,正确解析了表格的列,但是把正文也当做了表格。

原始表格如下,表格解析没有问题。

最开始的想法是,把这些解析为一列的表格,通过LLM去分析段落。这并不是一个好主意

我把数据给通义千问,它表示目前没有这项能力

prompt如下

以下是一个文件的内容,请帮我分析提取真正的标题、正文
要求1:只需要根据内容,判断是否可以是标题。不要额外生成任何内容!!
要求2:其中正文要给我划分好段落!!
内容如下 :
{0                  西藏奇正藏药股份有限公司 2022 年年度报告全文
1     管理层负责按照企业会计准则的规定编制财务报表,使其实现公允反映,并设计、执行
2        和维护必要的内部控制,以使财务报表不存在由于舞弊或错误导致的重大错报。
3     在编制财务报表时,管理层负责评估奇正藏药的持续经营能力,披露与持续经营相关的
4   事项(如适用),并运用持续经营假设,除非管理层计划清算奇正藏药、停止营运或别无其
5                                    他现实的选择。
6         奇正藏药治理层(以下简称“治理层”)负责监督奇正藏药的财务报告过程。
7                          六、注册会计师对财务报表审计的责任
8    我们的目标是对财务报表整体是否不存在由于舞弊或错误导致的重大错报获取合理保证,
9   并出具包含审计意见的审计报告。合理保证是高水平的保证,但并不能保证按照审计准则执
10  行的审计在某一重大错报存在时总能发现。错报可能由于舞弊或错误所导致,如果合理预期
11  错报单独或汇总起来可能影响财务报表使用者依据财务报表作出的经济决策,则通常认为错
12                                    报是重大的。
13    在按照审计准则执行审计的过程中,我们运用了职业判断,并保持了职业怀疑。同时,
14                                我们也执行以下工作:
15    (一)识别和评估由于舞弊或错误导致的财务报表重大错报风险,设计和实施审计程序
16  以应对这些风险,并获取充分、适当的审计证据,作为发表审计意见的基础。由于舞弊可能
17  涉及串通、伪造、故意遗漏、虚假陈述或凌驾于内部控制之上,未能发现由于舞弊导致的重
18               大错报的风险高于未能发现由于错误导致的重大错报的风险。
19               (二)了解与审计相关的内部控制,以设计恰当的审计程序。
20       (三)评价管理层选用会计政策的恰当性和作出会计估计及相关披露的合理性。
21    (四)对管理层使用持续经营假设的恰当性得出结论。同时,根据获取的审计证据,就
22  可能导致对奇正藏药持续经营能力产生重大疑虑的事项或情况是否存在重大不确定性得出结
23  论。如果我们得出结论认为存在重大不确定性,审计准则要求我们在审计报告中提请报表使
24  用者注意财务报表中的相关披露;如果披露不充分,我们应当发表非无保留意见。我们的结
25  论基于截至审计报告日可获得的信息。然而,未来的事项或情况可能导致奇正藏药不能持续
26                                       经营。
27    (五)评价财务报表的总体列报、结构和内容,并评价财务报表是否公允反映相关交易
28                                      和事项。
29    (六)就奇正藏药中实体或业务活动的财务信息获取充分、适当的审计证据,以对财务
30    报表发表意见。我们负责指导、监督和执行集团审计。我们对审计意见承担全部责任。
31    我们与治理层就计划的审计范围、时间安排和重大审计发现等事项进行沟通,包括沟通
32                    我们在审计中识别出的值得关注的内部控制缺陷。
33    我们还就已遵守与独立性相关的职业道德要求向治理层提供声明,并与治理层沟通可能}m模

通义千问回答这活儿干不了

我再问chatGPT

首先给出了我正确的标题内容,但是段落还不是很OK。但是似乎离得不远了,之所以内容没有正确的分段落。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/708814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【三维重建】【slam】【分块重建】LocalRF:逐步优化的局部辐射场的鲁棒视图合成

项目地址:https://localrf.github.io/ 题目:Progressively Optimized Local Radiance Fields for Robust View Synthesis 来源:KAIST、National Taiwan University、Meta 、University of Maryland, College Park 提示:文章用了s…

【GB28181】wvp-GB28181-pro修改分屏监控为16画面(前端)

引言 作为一个非前端开发人员,自己摸索起来比较费劲,也浪费了很多时间 由于实际开发中,可能预览的画面多于8个,而wvp目前只支持8画面 本文快速帮助开发者修改分屏监控为多画面。例如16画面,20画面等 文章目录 一、 预期效果展示16分割画面20分割画面二、 源码修改-前端修改…

小白水平理解面试经典题目leetcode 606. Construct String from Binary Tree【递归算法】

Leetcode 606. 从二叉树构造字符串 题目描述 例子 小白做题 坐在自习室正在准备刷题的小白看到这道题,想想自己那可是没少和白月光做题呢,也不知道小美刷题刷到哪里了,这题怎么还没来问我,难道是王谦谦去做题了? 这…

用友 NC 23处接口XML实体注入漏洞复现

0x01 产品简介 用友 NC 是用友网络科技股份有限公司开发的一款大型企业数字化平台。 0x02 漏洞概述 用友 NC 多处接口存在XML实体注入漏洞,未经身份验证攻击者可通过该漏洞读取系统重要文件(如数据库配置文件、系统配置文件)、数据库配置文件等等,导致网站处于极度不安全…

使用PARP抑制剂Olaparib对骨肉瘤细胞进行放射增敏【AbMole】

骨肉瘤细胞来源于对辐射不敏感的骨形成间充质细胞。因此,科学家们希望找到新的方法能够使其对放射增敏。研究人员进行了使用PARP抑制剂Olaparib来增强骨肉瘤细胞的放射敏感性的研究。 研究方法主要包含以下几项实验:通过CCK-8和克隆形成实验评估Olapari…

使用 OpenCV 通过 SIFT 算法进行对象跟踪

本文介绍如何使用 SIFT 算法跟踪对象 在当今世界,当涉及到对象检测和跟踪时,深度学习模型是最常用的,但有时传统的计算机视觉技术也可能有效。在本文中,我将尝试使用 SIFT 算法创建一个对象跟踪器。 为什么人们会选择使用传统的计…

【Go语言】Go语言中的字典

Go语言中的字典 字典就是存储键值对映射关系的集合,在Go语言中,需要在声明时指定键和值的类型,此外Go语言中的字典是个无序集合,底层不会按照元素添加顺序维护元素的存储顺序。 如下所示,Go语言中字典的简单示例&…

java spring cloud 企业工程管理系统源码+二次开发+定制化服务

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

java开发环境配置一指禅

IDEA下载与安装 IDEA 全称 IntelliJ IDEA,是java编程语言的集成开发环境。 idea下载地址 。 JDK安装配置 JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环…

以ARM Cortex-A55/A53为例分析 L1/L2/L3 cache所支持的写策略(write-back/wirte-through,写通和写回)

在文章 ARM 中缓存维护策略:Allocate policy(读分配/写分配),Write policy(写通/写回)以及replacement policy基础知识中,笔者介绍了ARM cache的Write policy(写通/写回)…

理解C转汇编后代码分析

题目 . - 力扣&#xff08;LeetCode&#xff09; 解题代码 #include <stdio.h> #include "stdbool.h"typedef struct {int score;int index;int count; } Record; Record records[26] {0};int totalScore(char *w) {int total 0;for (int i 0; i < st…

热点参数流控(Sentinel)

热点参数流控 热点流控 资源必须使用注解 SentinelResource 编写接口 以及 热点参数流控处理器 /*** 热点流控 必须使用注解 SentinelResource* param id* return*/ RequestMapping("/getById/{id}") SentinelResource(value "getById", blockHandler …

Java设计模式 | 七大原则之合成复用原则

基本介绍 合成复用原则&#xff08;Composite Reuse Principle&#xff09;尽量使用合成/聚合的方式&#xff0c;而不是使用继承 设计原则核心思想总结 找出应用中可能需要变化之处&#xff0c;把他们独立出来&#xff0c;不要和那些不需要变化的代码混在一起针对接口编程&…

八、ActiveMQ持久化

ActiveMQ持久化 一、MQ的高可用二、持久化介绍三、持久化存储方式1.AMQ Mesage Store(了解&#xff09;2.KahaDB消息存储(默认)2.1 存储原理 3.JDBC消息存储4.LevelDB消息存储(了解)5.JDBC Message Store with ActiveMQ Journal查询持久化存储方式 四、持久化存储使用1.JDBC消息…

C++:模版初阶 | STL简介

创作不易&#xff0c;感谢支持&#xff01;&#xff01; 一、泛型编程思想 如何实现一个通用的交换函数呢&#xff1f; 注&#xff1a;其实swap函数在C的标准库提供了&#xff0c;不需要自己写&#xff0c;这边只是举个例子 void Swap(int& left, int& right) { in…

【小夏送书 | 第二期】世界顶级名校计算机专业,都在用哪些书当教材?

&#x1f304;参与规则 参与方式&#xff1a;关注博主点赞收藏评论&#xff0c;&#xff08;每人最多评论三次&#xff09; 本次送书1~3本【取决于阅读量&#xff0c;阅读量越多&#xff0c;送的越多】 活动时间至&#xff1a;2024-3-6 20:00:00 | 随机抽取由博主动态公布抽…

《国色芳华》争议不断,杨紫簪花妆惊艳全场,李现造型更是抢眼。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 猴哥来啦&#xff01;新剧《国色芳华》火热开拍&#xff0c;杨…

Mysql数据库管理系统学习笔记1——sql语句,DBMS,数据库的分类

mysql是一种数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;data base manage system sql语句即为“structured query language”&#xff0c;结构化查询语言 数据库的分类&#xff1a;关系型数据库&#xff08;RDBMS&#xff09;与非关系型数据库 对于一些具有相同…

el-table通过这样封装可以实现校验-表格校验的原理

我们一般在后台系统中&#xff0c;很常见的操作时表格里面嵌套表单&#xff0c;之前我的网上找到了一些封装的用法&#xff1a; <el-form :model"formData" :rules"ruleData" ref"formDom"><el-table :data"formData.tableData&q…

WordPress分类目录ID怎么看?如何查找WordPress标签ID?

在WordPress网站中&#xff0c;我们需要判断某篇文章是否属于某个分类目录&#xff0c;或者是否拥有某个标签&#xff0c;那么就需要用到分类目录ID和标签ID&#xff0c;那么WordPress分类目录ID怎么看&#xff1f;如何查找WordPress标签ID&#xff1f;下面boke112百科就跟大家…