13

当我尝试从我的 PDF 文件中提取文本时,它似乎会在几个单词之间随机插入空格。

我在本页下载部分的以下示例文件中使用 pdfbox-app-1.6.0.jar(最新版本):http: //www.sheffield.gov.uk/roads/children/parents/6-11/pedestrian -训练

我已经尝试过其他几个 PDF 文件,它似乎在几个页面上都在做同样的事情。

我执行以下操作:

java -jar pdfbox-app-1.6.0.jar ExtractText -force -console ~/Desktop/ped training pdf.pdf

在下载的文件上,您会在控制台的结果中看到错误插入以下空格:“• 如果孩子们能够安全地步行上学,这可能会减少拥堵。”

“• 为以后的生活养成好习惯。”

“www.sheff ield.gov.uk”

“超前思考!,这是基于”

等等等等

正如你所看到的,上面的几个单词之间有空格,我无法理解。

我在 ubuntu 上运行 Sun 的 JDK 1.6。

我已经在几个不同的 PDF 文件上尝试过这个,并尝试在论坛上搜索解决方案,有类似的错误,但似乎都已解决。

任何帮助或如果其他人有同样的问题,请发表评论。这会导致正确索引内容以进行搜索的大问题。

4

2 回答 2

13

不幸的是,目前没有简单的解决方案。

内部 PDF 文档仅包含诸如“将字符 'abc' 放置在位置 X”和“将字符 'def' 放置在位置 Y”之类的指令,并且 PDFBox 会尝试推断生成的提取文本应该是基于“abc def”还是“abcdef”关于诸如 X 和 Y 之间的距离之类的事情。这些启发式方法通常非常准确,但正如您所见,它们并不总是产生正确的结果。

提高提取文本质量的一种方法是尝试对每个提取的单词或标记进行字典查找。如果查找失败,请尝试将令牌与下一个令牌组合。如果对组合标记的字典查找成功,则文本提取器很可能错误地在单词内添加了额外的空格。不幸的是,PDFBox 中尚不存在这样的功能。有关为此提交的功能请求,请参阅https://issues.apache.org/jira/browse/PDFBOX-1153 。欢迎补丁!

于 2011-10-31T16:58:19.933 回答
5

org.apache.pdfbox.util.PDFTextStripper( pdfbox-1.7.1) 允许修改决定两个字符串是否属于同一个单词的倾向。

增加spacingTolerance将减少插入空格的数量。

/**
 * Set the space width-based tolerance value that is used
 * to estimate where spaces in text should be added.  Note that the
 * default value for this has been determined from trial and error.
 * Setting this value larger will reduce the number of spaces added. 
 * 
 * @param spacingToleranceValue tolerance / scaling factor to use
 */
public void setSpacingTolerance(float spacingToleranceValue) {
    this.spacingTolerance = spacingToleranceValue;
}
于 2013-01-31T08:29:48.710 回答