Python 从PDF中提取表格

Python 从PDF中提取表格,python,pdf,pdf-parsing,Python,Pdf,Pdf Parsing,我正在尝试从pdf中提取一个表 我尝试了pdf->html->提取表格的方法。我上面提到的pdf在转换为html时会产生垃圾,可能是因为字体,文档不是英文的 使用x和y坐标提取pdf不是一个选项,因为此解决方案需要从上面提到的url为未来的pdf工作,该url将具有表格,但不总是在相同的位置 请帮忙 提前感谢。PDF不包含明确的表格数据。它只包含我们倾向于解释为表格的线条和字符图示符。因此,您的任务涉及将我们的人工表识别功能转换为代码,这是一项相当艰巨的任务 一般来说,如果您确信将来有足够多的P

我正在尝试从pdf中提取一个表

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

使用x和y坐标提取pdf不是一个选项,因为此解决方案需要从上面提到的url为未来的pdf工作,该url将具有表格,但不总是在相同的位置

请帮忙


提前感谢。

PDF不包含明确的表格数据。它只包含我们倾向于解释为表格的线条和字符图示符。因此,您的任务涉及将我们的人工表识别功能转换为代码,这是一项相当艰巨的任务

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

但是,您的特定文档还有一个缺点:它不包含直接文本提取所需的信息您可以尝试从Adobe Reader复制和粘贴,您将从WinAnsi范围获得(至少我是这样)半随机字符

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

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

(从Adobe Reader中尝试复制和粘贴通常是测试文本提取是否可行的一个好方法;阅读器的文本提取方法已经开发了很多年,因此已经非常好了。如果您无法使用Acrobat Reader提取任何有意义的内容,文本提取将是一项非常困难的任务。)您可以使用表格:
它免费且易于使用

一个选项是使用pdf表格提取:。

pdf不包含显式表格数据。它只包含我们倾向于解释为表格的行和字符符号。因此,您的任务涉及将我们的人工表格识别功能放入代码中,这是一项相当艰巨的任务。@mkl因此,简而言之,如果不是一项任务的话或者在这种情况下,我最好不要考虑解析这个pdf?:)我曾经用过类似的方法。基本上,你可以得到一个包含所有对象及其x和y位置的流,然后将它们从上到下、从左到右(至少英语是这样),然后根据你对上下文的了解,对单元格的结束位置进行一些智能猜测。这是痛苦的,每个PDF都是不同的。如果你不需要解析它,就不要。这篇文章多久发表一次?如果我想通过OCR途径,你能告诉我一些方向吗?不幸的是,没有,我自己还没有求助于OCR。我也在努力解决这个问题。我遇到了一件有趣的事情:我解析了一个PDF文件,它显然看起来像是从html/word文档生成的PDF文件。当我将它从Acrobat Pro导出到Word文档时,输出
.docx
文件中的表格格式是100%正确的。我的问题是,如果没有格式,Acrobat如何完美地提取表格?@amergin a原始海报提供的示例文件不包含直接文本提取所需的信息,但您的文件很可能包含它。。。Acrobat有一个OCR模块,do可以在必要时应用OCR。。。acrobat如何准确地提取结构信息,还不清楚。可能您的PDF确实包含其他标记,可能acrobat知道生成您的PDF的程序如何呈现表格,可能它应用了通用人工智能来识别表格……您尝试过OP提供的吗?正如我在回答中提到的,该文档不包含直接文本提取所需的信息,即使用PDF语法编码的信息进行文本提取,而TABLA依赖PDFBox进行文本提取,而PDFBox仅使用此类信息。因此,我怀疑tabla现在能帮上忙。在您发表评论之后,我已经使用tabla将第一个表信息提取为csv。虽然文本发生了变化(我想是因为重唱),但它似乎起了作用。尽管如此,我认为我不具备给出更高级答案的技术知识。嗯,文本最有可能被更改,因为文档遗漏了用于直接文本提取的信息,而替代这些信息的假设很可能是错误的。@franaf:yesss!tabla每周都在变得越来越好…:-)