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

为了做到这一点,我创建了一个类“文章”来存储每个单词,它的类型(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?)(通过覆盖 PDFTextStripper 中的方法 processTextPosition( TextPosition text ) ) .

我尝试了但是:

1)我找不到粗体文字

2)我不想只提取粗体文字,我还想提取一切!

有任何想法吗 ?