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

2025-01-10 08:46:00
admin
原创
180
摘要:问题描述:我正在尝试从 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

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3416  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2228  
  敏捷每日站会作为敏捷项目管理中的关键环节,对于提升产品生命周期管理(PLM)效率有着不可忽视的作用。PLM涵盖了产品从概念产生到最终报废的全过程管理,涉及众多环节与人员,而每日站会能够通过优化沟通机制,让信息在团队中快速、准确地流动,从而推动整个PLM流程更加顺畅、高效。接下来,我们将深入探讨如何通过四步优化沟通机制,...
plm系统   0  
  在企业的发展进程中,产品生命周期管理(PLM)项目管理至关重要,而数据驱动决策则是提升PLM项目管理效能的关键手段。通过运用合适的分析模型,企业能够从海量数据中挖掘有价值的信息,为决策提供有力支撑,进而优化产品全生命周期的各个环节。以下将详细介绍助力PLM项目管理实现数据驱动决策的5大分析模型。需求分析模型需求分析是P...
plm系统功能介绍   0  
  PLM(产品生命周期管理)系统在企业的产品研发、生产与运营中扮演着至关重要的角色。它涵盖了从产品概念设计到退役的全流程管理,确保产品数据的有效整合与协同。然而,在复杂多变的商业环境中,黑天鹅事件随时可能降临,给企业带来难以预估的冲击。这些意外事件具有不可预测性、极大的影响力和事后的可解释性等特点,会对PLM系统的正常运...
plm系统的主要功能模块   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用