PDF表格数据

pan*_*nny 2 pdf parsing text-extraction

我有一个关于从pdf文件中提取文本,精确表格数据的一般性问题.

pdf查看器如何读取和显示表格?为什么我们不能以同样的方式获得必要的列信息?

我现在正在搜索这个问题一周,主要是使用pdftoxml来使用令牌坐标和太宽的表格单元格(这样就无法准确地识别中间空表格单元格).

我通过对文本进行重新定位来解决这一问题(如果某些行间距离被忽略并"粘贴在一起",那顺便说一句,这是非常成功的),但这当然只是一个实例解决方案.

这让我头疼.pdf查看器为单元格绘制线条并知道单元格的开始和结束位置,但我们无法从pdf源中读取它.这怎么可能呢?他们知道我们无法推断出什么?

Dav*_*che 5

您的误解是列作为列存储在PDF文件中.事实并非如此.PDF查看器不理解表,列,段落,文本行或单词.

PDF是作为页面描述语言创建的,它非常适合在许多不同的设备上再现完全相同的页面.因为这是它的目标,它不关心结构,你所指的是所有结构.

PDF绘制文本的方式非常非常简单.页面上的说明将是这样的:

  • 设置此字体
  • 转到页面上的这一点
  • 渲染这些字符.
  • 转到页面上的另一个点
  • 渲染更多角色.

虽然也可以将这些结构信息与这些指令一起存储在PDF中,但通常不会这样做,并且无论如何都是以PDF格式实现的.

当您查看上面的(伪)指令时,很容易理解如何绘制表格.文件中只会有指令移动到一个单元格的某个位置并绘制文本.然后有更多指令移动到另一个单元格并绘制该文本.

如果要反转操作并从PDF页面提取结构化信息,则必须"重新发明"结构信息.这意味着要确定哪些文本位于同一基线上,因此可能属于同一条线.哪个文本在该基线上足够接近,以便它可能是单词或列......等等...

你已经想通了,这根本不是一件容易的事!