PDFBox在单词中添加空格

Rav*_*dev 12 lucene solr pdfbox apache-tika

当我尝试从我的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文件上尝试了这个,并试图在论坛上搜索解决方案,有类似的错误,但似乎都已解决.

任何帮助或如果其他人有相同的问题请评论.这对于正确索引内容以进行搜索造成了很大的问题.

Juk*_*ing 12

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

内部PDF文档只包含诸如"将位置字符'abc'置于位置X"和"将字符'def'置于位置Y"之类的指令,并且PDFBox试图推断所得到的提取文本是否应为"abc def"或"abcdef"在诸如X和Y之间的距离之类的事情上.这些启发式算法通常非常准确,但正如您所看到的,它们并不总能产生正确的结果.

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


Gui*_*ert 5

class 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;
}
Run Code Online (Sandbox Code Playgroud)