Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析PDF文档中基于表的内容并不总是按行顺序显示_Python_Parsing_Pdf - Fatal编程技术网

Python 解析PDF文档中基于表的内容并不总是按行顺序显示

Python 解析PDF文档中基于表的内容并不总是按行顺序显示,python,parsing,pdf,Python,Parsing,Pdf,我试图解析一些PDF文档(1.7格式)来提取数字数据 我正在使用PythonPDF miner包,它工作得很好 对于大多数文档,表中的一行将转换为单个文本字符串。但有时两个相邻行的内容会交织成一个字符串。例如: The visual appearnce within the PDf is as follows LZX DEC-18 13.95 .00 0 0 0 0 0 0 0 Totals for LZX: 0 3 481 0 0 0 0 0

我试图解析一些PDF文档(1.7格式)来提取数字数据

我正在使用PythonPDF miner包,它工作得很好

对于大多数文档,表中的一行将转换为单个文本字符串。但有时两个相邻行的内容会交织成一个字符串。例如:

The visual appearnce within the PDf is as follows

LZX DEC-18         13.95 .00 0     0 0 0 0 0 0
Totals for LZX:              0 3 481 0 0 0 0 0

But the extracted text looks like this, appearing in column rather than row order

---
LZX
Totals for LZX:

DEC-18

13.95

.00

0
0

0
3,481

0
0

0
0

0
0

0
0

0
0
我看不到PDF miner脚本中有任何选项会改变这一点。所以我假设这与最初创建PDF数据的方式有关


这使得解析变得非常困难,因此知道何时可能发生这种情况非常方便。

我最初对PDF呈现的假设是,它类似于打印机执行的光栅输出。也就是说,首先在一行中从左到右创建文本,然后逐行创建文本

但要意识到这是错误的,PDF producer设置的渲染模式更像X-Y绘图仪可以生成的模式,重点是对象接近扫描方向


我的结论是,PDF扫描本质上是困难的,因为无法对页面内的文本顺序做出任何假设。在可能的情况下,解决方案是返回生成PDF的源文档。如果它的结构是表格形式,则很容易从该格式检索所有数据。

问题是什么?欢迎使用堆栈溢出。这不是一个好的提问方式。到目前为止,你有没有尝试过解决你的问题?先表现出你的努力,这样人们才能表现出他们的努力。请阅读,作为开始。我的问题在最后两段。什么决定了不同表格单元格在转换文本流中的显示顺序?大多数情况下,它是从左到右,然后沿着页面向下,按照您所期望的顺序发生的。但并不总是按照这个例子。我想知道为什么会发生这种情况。嗨,纳胡尔,我已经详细描述了这个问题。我的解决方案是扫描不按行顺序显示的文本。但这是混乱的,所以我想知道PDF文本在变体中的顺序。我正在寻求一些关于如何确定PDF顺序的信息。不确定这怎么能解释为“不试图解决问题”。好吧,没有来自主题专家的实际建议,所以我自己搜索。综上所述,相关章节是“在PDF中,文本不是连续的,而是由页面中绝对定位的许多小字符组组成。PDF的重点是保持布局完整。它不是面向内容,而是面向展示”。因此,唯一的解决方案似乎是在PDF创建阶段使用Acrobat等工具。