如何在使用PDFBox提取后将标记放在粗体和斜体文本周围?

时间:2015-07-12 22:59:46

标签: java regex pdfbox text-extraction

我正在尝试从词典中获取数据 (这一个:http://vk.com/doc8069473_312422685?hash=78fd2d459ed8547b29&dl=86147ab2323652f43d)。我使用PDFBox从这个pdf文件中提取文本。

为了做到这一点,我创建了一个类“Article”来存储每个单词,它的类型(adj,名词等等),它的所有定义及其所有例子。

我使用正则表达式来查找每篇文章的开头和结尾。

这是我使用的模式(我添加了PHNTC来替换注音符号):

Pattern pattern = Pattern.compile("(((\\w|\\–|\\-|&|,|’|/|â|é|è|ê|à|ô| )*)(\\s)+(PHNTC( )+)?(abbr|adj|adv|article|conj|interj|modal verb|noun|plural noun|prefix|prep|pron|phrase|suffix|(?<!((forming|making part of) a ))verb|expr)(, (abbr|adj|adv|article|conj|interj|modal verb|noun|plural noun|prefix|prep|pron|phrase|suffix|(?<!((forming|making part of) a ))verb|expr)\\s)?[^a-z]|((\\w|\\–|\\-|&|,|’|/|â|é|è|ê|à|ô| )*)(\\s)+(PHNTC( )+))");

正如你所看到的,它是相当复杂的,即使它足够99%的文章(我在29,000篇文章中有大约100篇“错误的”文章),我仍然有一些问题。例如,如果“名词”写在定义的某个地方,我的程序可能会认为它是新文章的开头!你可以在上面的代码中看到我尝试用“动词”来解决一些含糊之处。

我认为解决这些问题的唯一解决方案是在粗体文本和斜体文本周围添加一些标记。我想用这样的东西:

Pattern pattern = Pattern.compile("<b>.*</b>(\\s)+(PHNTC( )+)?<i>.*</i>(, <i>.*</i>)?");

现在,这是我的问题:如何使用PDFBox放置这些标记?

我找到了一个关于提取粗体文本的主题(How to extract bold text from pdf using pdfbox?)(通过覆盖该方法  来自processTextPosition( TextPosition text )的{​​{1}}。

我尝试了但是:

1)我找不到粗体文字

2)我不想只提取粗体文字,我仍想提取所有内容!

有什么想法吗?

0 个答案:

没有答案