【问题标题】:Extract table from a PDF从 PDF 中提取表格
【发布时间】:2013-07-11 10:50:41
【问题描述】:

我正在尝试从 pdf document 中提取表格

我尝试了pdf -> html -> 提取表的路线。我上面提到的pdf转换为html时会产生垃圾,可能是因为字体的原因,文档不是英文的。

使用 x 和 y 坐标提取 pdf 不是一个选项,因为此解决方案需要适用于来自上述 url 的未来 pdf,它将有表格但并不总是在相同的位置。

请帮忙,

提前致谢。

【问题讨论】:

  • PDF 不包含明确的表格数据。它只包含我们倾向于将其解释为表格的行和字符字形。因此,您的任务涉及将我们的人类表格识别功能放入代码中,这是一项艰巨的任务。
  • @mkl 简而言之,如果它不是一个做或死的情况,我最好不要考虑解析这个pdf? :)
  • 我曾经使用PDFMiner 做过类似的事情。您基本上可以获取所有对象的流以及它们的 x 和 y 位置,然后将它们从上到下、从左到右(至少对于英语)分组,然后根据单元格的结束位置做出一些明智的猜测你对上下文的了解。这很痛苦,每个 PDF 都不一样。如果您不必解析它,请不要。多久发布一次?

标签: python pdf pdf-parsing


【解决方案1】:

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

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

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

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

因此,在没有 OCR 的情况下从您的文档中提取可靠的文本毕竟是不可能的!

(尝试从Adobe Reader复制粘贴一般是一个很好的第一个测试文本提取是否可行的方法;Reader的文本提取方法已经开发了很多年,因此已经变得相当不错。如果你不能提取使用 Acrobat Reader 进行任何明智的操作,文本提取确实是一项非常困难的任务。)

【讨论】:

  • 如果我想通过 OCR 路线,你能给我指个方向吗?
  • 很遗憾,我还没有自己求助于 OCR。
  • 我也在努力解决这个问题。我遇到的有趣的事情:我解析了一个看起来像是从 html/word 文档生成到 pdf 的 PDF。当我将它从 Acrobat Pro 导出到 Word 文档时,表格格式在输出 .docx 文件中是 100% 正确的。我的问题是,如果格式不存在,Acrobat 如何完美提取表格?
  • @amergin a 原始发帖人提供的示例文件不包含直接提取文本所需的信息,但您的文件可能包含它... b Acrobat 有一个 OCR 模块,如有必要,可以应用 OCR... c acrobat 如何准确提取结构信息,尚不清楚。可能您的 PDF 确实包含其他标签,可能 acrobat 知道生成您的 PDF 的程序如何呈现表格,可能它应用通用人工智能来识别表格...
【解决方案2】:

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

【讨论】:

  • 你在OP提供的document上试过Tabula吗?正如我在回答中提到的,该文档不包含直接提取文本所需的信息,即使用以 PDF 语法编码的信息进行文本提取,而 Tabula 依赖 PDFBox 进行文本提取,它仅使用此类信息.因此,我怀疑 Tabula 现在会在这里提供帮助。
  • 在您发表评论后,我使用 tabula 将第一个表信息提取为 csv。尽管文本已更改,但它似乎正在工作(我认为是由于编码)。不过,我认为我没有足够的技术知识来给出更高级的答案。
  • 嗯,文本很可能已更改,因为文档缺少用于直接提取文本的信息,而代替这些信息的假设可能是错误的。
  • @franaf:是的! Tabula 每周都在变得越来越好...... :-)
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    相关资源
    最近更新 更多