Java PDFBox如何检测列?
我正在尝试从pdf文档中提取文本。我已经测试了几种工具,如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文档的
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文档的文本提取中存在缺陷,但是它支持这些缺陷。我认为它有工作流程
体系结构,因此很难调试。无论如何,谢谢你。