【问题标题】:How to avoid pdfbox appending separate words如何避免pdfbox附加单独的单词
【发布时间】:2012-12-07 22:37:33
【问题描述】:

我正在制作一个允许使用 apache Solr 在 pdf 中搜索的应用程序。我在 pdf 中找不到某些术语。

我注意到列中的单词被附加了。

例子

 Column1 | Column2
 stack   | overflow

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

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

还有其他解决方案可以从带有列的 pdf 中提取良好的文本吗?

  • 可能是其他程序的某种转换。
  • 可能是 pdfbox 的补丁。
  • 是的,我见过类似的 问题,但他们主要处理提取的顺序(其中 我的情况没那么重要)。

【问题讨论】:

    标签: java pdfbox


    【解决方案1】:

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

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

    【讨论】:

    • K 我将对此进行试验,看看它是否有效。一个新词在 2 个字符之间占用了多少 px?
    • 我认为在 pdfbox 1.7.1 中已经估计了单词分隔符,但不确定。
    • 我创建了自己的字词、行和页面对象。这是为了我的项目目的。我谈到了那个。
    • 对于您的情况,只需创建一个名为 word 的对象。逐个字符地解析您的 pdf 文件。当遇到一个单词时(根据您的逻辑)将该字符串存储在单词对象中并继续此过程
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2016-10-29
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多