Java PDFBox如何检测列?

Java PDFBox如何检测列?,java,pdfbox,multiple-columns,text-extraction,identity-column,Java,Pdfbox,Multiple Columns,Text Extraction,Identity Column,我正在尝试从pdf文档中提取文本。我已经测试了几种工具,如PDFBox、TET、PDFTextStream等等,但它们都不适合提取波斯多列pdf文档的文本 目前,我正在尝试将这些工具的良好特性结合起来,并对它们使用一些技巧。现在我想知道如何检测页面的列数,以及如何分割这些列的文本 我特别想知道哪个类的PDFBox或PDFTextStream负责列检测以及它是如何工作的。我只能为PDFTextStream说话,但为了理解它是如何工作的,你需要大致了解PDFTextStream是如何查看PDF文档的

我正在尝试从pdf文档中提取文本。我已经测试了几种工具,如
PDFBox
TET
PDFTextStream
等等,但它们都不适合提取波斯多列pdf文档的文本

目前,我正在尝试将这些工具的良好特性结合起来,并对它们使用一些技巧。现在我想知道如何检测页面的列数,以及如何分割这些列的文本


我特别想知道哪个类的
PDFBox
PDFTextStream
负责列检测以及它是如何工作的。

我只能为
PDFTextStream
说话,但为了理解它是如何工作的,你需要大致了解
PDFTextStream
是如何查看PDF文档的

每个文档都由
页面
组成,这些页面由
组成(其中可以有许多块,也可以嵌套)<代码>块最终将包含
,其中将包含
文本单位

每个单元都有一个
x
y
width
height
属性。所有的PDF都是基于这些基本单位的坐标排列的。当您要求
PDFTextStream
来“读取”页面或区域时,它会查看对象以及它们在X、Y平面上的布局,并使用将如何转换为文本的近似值。这就是为什么会出现错误,因为没有100%万无一失的方法将此结构转换为机器可读的结构化数据

PDFTextStream
中,您应该查看
getRegionText
。PDFTextStream是专有的(这就是我要迁移到PDFBox的原因),因此我无法向您提供用于获取文本的算法的详细信息,但它们基于上述过于简化的情况


祝你好运。

PDFTextStream
和你描述的一样。我已经深入地追踪了它的主要对象以及这些对象的基本特征。我认为它的
API
非常简单。但是
PDFTextStream
的主要缺陷是它不支持
从右到左的
脚本(如波斯语、阿拉伯语和希伯来语)。所以我也转到了
PDFBox
!但是
PDFBox
RTL
pdf文档的文本提取中存在缺陷,但是它支持这些缺陷。我认为它有
工作流程
体系结构,因此很难调试。无论如何,谢谢你。