我正在尝试从pdf文档中提取文本。我已经测试了几种工具,例如PDFBox
,TET
,PDFTextStream
等,但是它们都不适合提取波斯多列pdf文档的文本。
目前,我正在尝试结合使用此工具的良好功能,并对它们使用一些技巧。现在,我想知道如何检测页面的列数以及如何拆分这些列的文本。
我特别想知道PDFBox
或PDFTextStream
的哪个类负责列检测及其工作方式。
最佳答案
我只能代表PDFTextStream
,但是为了理解它的工作原理,您想大致了解PDFTextStream
如何查看PDF文档。
每个文档由Pages
组成,而Blocks
由Blocks
组成(其中可以有很多嵌套)。 Lines
最终将包含TextUnits
,其中将包含x
。
这些单元中的每个单元都有一个y
,width
,height
和PDFTextStream
属性。所有PDF都是基于其坐标布置的这些基本单位。当您要求PDFTextStream
“读取”页面或区域时,它将查看对象以及它们在X,Y平面上的布局方式,并近似地将其转换为文本。这就是为什么会出错的原因,因为没有100%可靠的方法将这种结构转换为机器可读的结构化数据。
在getRegionText
中,您应该查看 function and example。 PDFTextStream是专有的(我移至PDFBox的原因),因此我无法为您提供有关用于获取文本的算法的详细信息,但它们基于上述过分简化。
祝好运。