如何从 PDF 文档中提取表格作为结构化数据?

2025-01-10 08:46:00
admin
原创
16
摘要:问题描述:我正在尝试从 PDF 文档中提取表格(包括结构)(示例)。这不是扫描/图像,因此请关注非 OCR 解决方案。OCR表格提取在这里。简单文本提取在这里我试过pdf -> html -> 提取表格的路线,上面提到的pdf在转为html的时候产生乱码,可能是字体的原因,文档不是英文的。使用 x...

问题描述:

我正在尝试从 PDF 文档中提取表格(包括结构)(示例)。这不是扫描/图像,因此请关注非 OCR 解决方案。OCR表格提取在这里。简单文本提取在这里

我试过pdf -> html -> 提取表格的路线,上面提到的pdf在转为html的时候产生乱码,可能是字体的原因,文档不是英文的。

使用 x 和 y 坐标提取 pdf 不是一个选择,因为这个解决方案需要适用于上面提到的 url 中的将来的 pdf,它将有表格但并不总是在同一位置。


解决方案 1:

PDF 不包含明确的表格数据。它只包含我们倾向于解释为表格的行和字符字形。因此,您的任务涉及将我们人类的表格识别能力放入代码中,这是一项相当艰巨的任务。

一般来说,如果您确信未来有足够多的 PDF 将由同一软件以非常相似的方式生成,那么可能值得花时间研究该文件,以获得一些易于遵循的提示来识别各个字段的内容。

但是,您的特定文档还有一个缺点:它不包含直接提取文本所需的信息!您可以尝试从 Adob​​e Reader 复制和粘贴,然后您会得到(至少我会得到)来自 WinAnsi 范围的半随机字符。

这是因为文档中的所有字体都声称它们使用 WinAnsiEncoding,尽管以这种方式引用的字符肯定不是来自 WinAnsi 字符选择。

因此,如果没有 OCR,从文档中提取可靠的文本是不可能的!

(尝试从 Adob​​e Reader 复制和粘贴通常是一个很好的初步测试,可以确定文本提取是否可行;Reader 的文本提取方法已经开发了很多年,因此已经变得相当不错。如果您无法使用 Acrobat Reader 提取任何有意义的内容,那么文本提取将是一项非常困难的任务。)

解决方案 2:

从 PDF 文档中提取表格非常困难,因为 PDF 不包含语义层。

卡美洛

您可以尝试一下camelot,甚至可以结合其 Web 界面excalibur

>>> import camelot
>>> tables = camelot.read_pdf('foo.pdf')
>>> tables
<TableList n=1>
>>> tables.export('foo.csv', f='csv', compress=True) # json, excel, html, markdown, sqlite
>>> 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, to_markdown, to_sqlite
>>> tables[0].df # get a pandas DataFrame!

参见python-camelot

塔布拉

tabula可以通过以下方式安装

pip install tabula-py

但它需要 Java,因为tabula-py它只是 Java 项目的一个包装器。

它的使用方式如下:

import tabula

# Read pdf into list of DataFrame
dfs = tabula.read_pdf("test.pdf", pages='all')

参见:

  • 使用 tabula 读取特定表

  • 表格

AWS Textract

我最近没有尝试过,但AWS Textract声称:

Amazon Textract 可以提取文档中的表格,并提取表格内的单元格、合并单元格和列标题。

Pdf水管工

pdfplubmer表提取方法:

import pdfplumber

pdf = pdfplumber.open("example.pdf")
page = pdf.pages[0]
page.extract_table()

参见

  • Tabula 与 Camelot 的对决

解决方案 3:

您可以使用 Tabula:
http: //tabula.nerdpower.org
它是免费的,而且很容易使用

解决方案 4:

一种选择是使用 pdf-table-extract:https://github.com/ashima/pdf-table-extract

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   990  
  在项目管理领域,CDCP(Certified Data Center Professional)认证评审是一个至关重要的环节,它不仅验证了项目团队的专业能力,还直接关系到项目的成功与否。在这一评审过程中,沟通技巧的运用至关重要。有效的沟通不仅能够确保信息的准确传递,还能增强团队协作,提升评审效率。本文将深入探讨CDCP...
华为IPD流程   26  
  IPD(Integrated Product Development,集成产品开发)是一种以客户需求为核心、跨部门协同的产品开发模式,旨在通过高效的资源整合和流程优化,提升产品开发的成功率和市场竞争力。在IPD培训课程中,掌握关键成功因素是确保团队能够有效实施这一模式的核心。以下将从五个关键成功因素展开讨论,帮助企业和...
IPD项目流程图   27  
  华为IPD(Integrated Product Development,集成产品开发)流程是华为公司在其全球化进程中逐步构建和完善的一套高效产品开发管理体系。这一流程不仅帮助华为在技术创新和产品交付上实现了质的飞跃,还为其在全球市场中赢得了显著的竞争优势。IPD的核心在于通过跨部门协作、阶段性评审和市场需求驱动,确保...
华为IPD   26  
  华为作为全球领先的通信技术解决方案提供商,其成功的背后离不开一套成熟的管理体系——集成产品开发(IPD)。IPD不仅是一种产品开发流程,更是一种系统化的管理思想,它通过跨职能团队的协作、阶段评审机制和市场需求驱动的开发模式,帮助华为在全球市场中脱颖而出。从最初的国内市场到如今的全球化布局,华为的IPD体系在多个领域展现...
IPD管理流程   53  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用