Java 如何避免pdfbox附加单独的单词

Java 如何避免pdfbox附加单独的单词,java,pdfbox,Java,Pdfbox,我正在制作一个应用程序,它允许使用ApacheSolr在pdf中搜索。我在PDF中找不到某些术语 我注意到专栏中的单词被添加了 范例 Column1 | Column2 stack | overflow 这里,PdftextStripper有时会将stackoverflow作为提取的文本提供给我。这将导致solr中的错误托基纳化,从而阻止您找到术语。(是的,我知道我可以使用通配符,但这在短语查询中不起作用) 我一直在查看来源,以了解问题的原因。但是writePage方法似乎必须猜测空格

我正在制作一个应用程序,它允许使用ApacheSolr在pdf中搜索。我在PDF中找不到某些术语

我注意到专栏中的单词被添加了

范例

 Column1 | Column2
 stack   | overflow
这里,PdftextStripper有时会将stackoverflow作为提取的文本提供给我。这将导致solr中的错误托基纳化,从而阻止您找到术语。(是的,我知道我可以使用通配符,但这在短语查询中不起作用)

我一直在查看来源,以了解问题的原因。但是writePage方法似乎必须猜测空格。我真的无法改变这个,因为它看起来很复杂

有没有其他解决方案可以从包含列的pdf中提取好的文本?

  • 也许是其他程序的某种转换
  • 也许是pdfbox的补丁
  • 是的,我见过类似的 问题,但他们主要处理提取的顺序(在 我的案子没那么重要)

我在使用PDFbox提取文本时遇到了同样的问题。我通过获取每个角色的位置信息来解决这个问题。我取了每个字符的x位置和y位置。并实现了一个简单的逻辑来区分单词。在此之前,我的单词定界符只是“”(空格)。我又添加了一个逻辑,如果两个字符的X位置差超过某个值(这个值由您选择),并且在同一行中,即相同的y坐标(不同的y坐标肯定意味着一个新词),我将它们视为一个新词。有了这个逻辑,我就能够解决表格内容、新行等方面的问题


这将帮助您使用PDFbox从pdf中获取字符的位置

我会用这个做实验看看它是否有效。一个新词在两个字符之间使用了多少像素?使用来自pdfbox 1.7.1的代码,我认为单词定界器已经在pdfbox 1.7.1中进行了估算。我创建了自己的字符词、行和页面对象。这是为了我的项目目的。我已经说过了。对于你的情况,只需创建一个名为word的对象。逐个字符解析pdf文件。当遇到一个单词时(根据您的逻辑),将该字符串存储在word对象中并继续此过程