Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用itext库进行解析时,会对单词进行词干分析_Java_Parsing_Itext - Fatal编程技术网

在java中使用itext库进行解析时,会对单词进行词干分析

在java中使用itext库进行解析时,会对单词进行词干分析,java,parsing,itext,Java,Parsing,Itext,我用这段代码从pdf中提取单词,但是当我得到像 安全作为 s E 保安 包含v&e的单词被分成两个单词 如何修改代码,以便在使用itext库时获得准确的word?Aha,您将分别获得每个文本片段。您应该将每个代码段的端点与其他代码段的起点进行比较,并将该距离与空格字符的宽度进行比较。当您使用LocationTextExtractionStrategy而不是让iText向您提供页面内容流中的每个文本片段时,iText在内部就是这样做的。与此类TextRenderInfo实例关联的文本不一定是一个单

我用这段代码从pdf中提取单词,但是当我得到像 安全作为 s E 保安 包含v&e的单词被分成两个单词
如何修改代码,以便在使用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);
    }