怎么用chatgpt读取pdf文件 Camelot:从pdf中提取表格数据

默认分类1年前 (2023)发布 admin
3,030 0
ChatGPT国内版

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

工作要效率,大数据时代,获取信息也要效率,只用不断的造轮子,才能不断的提高效率,今天介绍一下一款可以直接从pdf格式的文档中提取表格中数据的工具,!!!

一、的介绍和安装1. 介绍

: 一个友好的PDF表格数据抽取工具

一个命令行工具,使任何人都能很轻松的从PDF文件中抽取表格数据。

使用从PDF文档提取数据非常简单

2. 的安装

有三种安装方式:

pip 安装

pip -py[cv]

conda安装

conda -c conda-forge -py

源码安装

git clone …cd “.[cv]”

注意:

如果后面导入库包的时候,出现错误,可能是缺少包,用pip 安装即可。

3. 其他

源码参考文档:/…使用文档:-py..io/en//

二、的使用1. 快速入门使用

从一个pdf文件中提取出表格:

>>> import camelot
>>> tables = camelot.read_pdf('foo.pdf')
>>> tables
<TableList n=1>
>>> tables.export('foo.csv', f='csv', compress=True) # json, excel, html
>>> tables[0]
<Table shape=(7, 7)>
>>> tables[0].parsing_report
{
    'accuracy': 99.02,
    'whitespace': 12.24,
    'order': 1,
    'page': 1
}
>>> tables[0].to_csv('foo.csv') # 也可以提取成其他格式 to_json, to_excel, to_html
>>> tables[0].df # 获取一个pandas DataFrame!

2. 详细说明

上面的例子的说明:1、创建一个表格对象

>>> tables = camelot.read_pdf('foo.pdf')
>>> tables
<TableList n=1>   # 只检测到一个表格

默认情况下,仅使用PDF的第一页来提取表。要指定多个页面,可以使用pages关键字参数:

>>> camelot.read_pdf('your.pdf', pages='1,2,3')

也可以使用命令行执行相同的操作

camelot --pages 1,2,3 lattice your.pdf

该pages关键字参数接受页面页码的逗号分隔的字符串。还可以指定页面范围 – 例如,pages=1,4-10,20-30或pages=1,4-10,20-end。

注意:

如果pdf文件是加密的表格,需要加入参数,值为解密密码

>>> tables = camelot.read_pdf('foo.pdf', password='userpass')
>>>tables
<TableList n=1>

命令行:

camelot --password userpass lattice foo.pdf

怎么用chatgpt读取pdf文件 Camelot:从pdf中提取表格数据

目前,仅支持使用ASCII密码和算法代码1或2加密的PDF 。如果无法读取PDF,则抛出异常。这可能是由于未提供密码,密码不正确或加密算法不受支持。

2、查看表的形状(行和列),通过表格索引查看我们可以使用其索引访问每个表。从上面的代码片段中,我们可以看到该对象只有一个表,因为n=1。让我们使用索引访问该表0并查看它shape。

>>> tables[0]
<Table shape=(7, 7)>

3、打印解析报告。

>>> print tables[0].parsing_report
{
    'accuracy': 99.02,
    'whitespace': 12.24,
    'order': 1,
    'page': 1
}

从解析的参数的评价标准可以得出,其准确性是很好的,空白较少,这意味着表格最有可能被正确提取。可以使用table对象的df属性将表作为 访问。

4、打印出提取表格中的内容数据格式是 ,因此用df访问

>>> tables[0].df

5、导出表格中的内容可以使用其()方法将表导出为CSV文件。或者可以使用(),或方法表分别导出为JSON格式,Excel,HTML文件或数据库。方法如下:

>>> tables[0].to_csv('foo.csv')

上面的1~5 步骤都可以通过命令行直接完成。

camelot --format csv --output foo.csv lattice foo.pdf

使用的pdf例子的传送门:–>here

3. 两种表格解析(提取)方法1、流解析()

可用于解析在单元格之间具有空格的表,以模拟表结构。它建立在的功能之上,即使用边距将页面上的字符分组为单词和句子。

PDF页面上的单词根据其y轴重叠分组为文本行。计算文本,然后用于猜测PDF页面上有趣的表区域。您可以阅读Anssi 的硕士论文,以了解有关此表检测技术的更多信息。[见第20,35和40页]然后猜测每个表区域内的列数。这是通过计算每个文本行中的单词数模式来完成的。基于此模式,选择每个文本行中的单词以计算列x范围的列表。然后使用位于当前列x范围内/外的单词来扩展当前列列表。最后,使用文本行的y范围和列x范围形成表格,并且页面上找到的单词基于其x和y坐标分配给表格的单元格。2、格子解析()

格子本质上更具有确定性,并且它不依赖于猜测。它可用于解析在单元格之间划分了行的表,并且它可以自动解析页面上存在的多个表。

它首先使用将PDF页面转换为图像,然后通过使用应用一组形态变换(侵蚀和膨胀)来处理它以获得水平和垂直线段。

下面介绍处理的步骤:1、检测分割线段

2、通过重叠检测到的线段并叠加”和”它们像素强度来检测线的交叉点。

3、通过再次重叠检测到的线段来计算表边界,这次是“或”它们的像素强度。

4、由于PDF页面的尺寸及其图像不同,因此检测到的表格边界,线条交叉点和线段将缩放并转换为PDF页面的坐标空间,并创建表格的表示。

5、使用线段和线交叉检测生成单元。

6、最后,页面上找到的单词将根据其x和y坐标分配给表格的单元格

三、高级使用1. 处理背景线1. 处理背景线2. 可视调试3. 指定表区域4. 指定列表分隔符5. 沿分隔符拆分文本6. 标记上标和下表7. 从文本中删除字符8. 改善猜测的表区域9. 改进猜测的表行10. 检测短线11. 在生成单元格中移动文本12. 复制跨越单元格中的文本13. 调整布局生成四、命令行的使用

用 –help 查看 参数使用:

参数说明:

怎么用chatgpt读取pdf文件 Camelot:从pdf中提取表格数据

参数完成参数参数功能

-q

–quiet TEXT

不输出日志和警告

-p

–pages TEXT

页数范围,可以用都好分割符,或者页码范围,例如: 1,3,4 or 1,4-end

-pw

— TEXT

解密密码

-o

– TEXT

输出路径

-f

— [csv

json

excel

html

]

输出格式

-z

–zip

创建

-split

跨多个单元格拆分文本。

-flag

根据字体大小标记文本。有用的检测超/下标。

-strip

— TEXT

将字符串赋值给单元格之前,表格中的字符应该被删除

-M

字符边缘、线边缘、单词边缘

© 版权声明
广告也精彩

相关文章

暂无评论

暂无评论...