在java中使用itext库进行解析时,会对单词进行词干分析
我用这段代码从pdf中提取单词,但是当我得到像 安全作为 s E 保安 包含v&e的单词被分成两个单词在java中使用itext库进行解析时,会对单词进行词干分析,java,parsing,itext,Java,Parsing,Itext,我用这段代码从pdf中提取单词,但是当我得到像 安全作为 s E 保安 包含v&e的单词被分成两个单词 如何修改代码,以便在使用itext库时获得准确的word?Aha,您将分别获得每个文本片段。您应该将每个代码段的端点与其他代码段的起点进行比较,并将该距离与空格字符的宽度进行比较。当您使用LocationTextExtractionStrategy而不是让iText向您提供页面内容流中的每个文本片段时,iText在内部就是这样做的。与此类TextRenderInfo实例关联的文本不一定是一个单
如何修改代码,以便在使用itext库时获得准确的word?Aha,您将分别获得每个文本片段。您应该将每个代码段的端点与其他代码段的起点进行比较,并将该距离与空格字符的宽度进行比较。当您使用
LocationTextExtractionStrategy
而不是让iText向您提供页面内容流中的每个文本片段时,iText在内部就是这样做的。与此类TextRenderInfo
实例关联的文本不一定是一个单词;它仅仅是在PDF中的单个文本绘制操作中绘制的文本块;它可能只是一个单词的一部分,一个完整的单词,甚至是一整行文字;此外,它还可以是一个单词的结尾和下一个单词的开始,等等。因此,RenderListener
实现必须识别出此文本中的单词@BrunoLowagie也许你应该简单地把指向LocationTextExtractionStrategy
的指针作为一个实际的答案。还有什么可以回答的?我怎样才能得到单词的宽度?我不知道我说了什么,我怎样才能“将这个距离与空格字符的宽度进行比较”?阿披实亚姆问题的核心是他(错误的)假设PDF中有一个“单词”这样的东西。在人眼看来,只有文字片段看起来像文字。我将不再看这个问题,因为试图向一个“不明白”我所说的人解释一些事情是非常令人沮丧的。
public void renderText(TextRenderInfo renderInfo) {
text = renderInfo.getText().toLowerCase();
System.out.println("@ "+text);
Vector curBaseline = renderInfo.getBaseline().getStartPoint();
Vector topRight = renderInfo.getAscentLine().getEndPoint();
Rectangle rect = new Rectangle(curBaseline.get(0), curBaseline.get(1), topRight.get(0), topRight.get(1));
float curFontSize = rect.getHeight();
int size = (int) curFontSize;
at[i][0] = "" + size;
at[i++][1] = text;
//System.out.println(text);
}