从pdf中提取文本时不包含上标



我已经使用pdfbox逐行从pdf中提取文本,并使用我的算法按句子处理它。

我通过使用句点(.)和首字母为大写的单词来识别句子。这里的问题是,当一个句子以带有上标的单词结尾时,提取器将其视为正常字符并将其放在句点(.)旁边

例如:表达式"2 power 22"作为句子的最后一个单词出现,即带句号,它被提取为2.22,这使得很难识别句子的结尾。

请建议一个解决方案,以摆脱上标或不同的逻辑来识别句尾。

谢谢。

我在回答我自己的问题,因为有些人可能会在这里被引导。

我已经根据@mkl的建议解决了这个问题。在观察了PDFStreamEngine.java中的getYScale()的结果后,我得出的结论是上标的大小小于8.9663。因此,在创建TextPosition之前,我在PDFStreamEngine.java中保留了一个条件,这将由PDFTextStripper.java处理。代码如下:


if(textXctm.getYScale()>=8.9663) {
    processTextPosition(
        new TextPosition(
            pageRotation,
            pageWidth,
            pageHeight,
            textMatrixStart,
            endXPosition,
            endYPosition,
            totalVerticalDisplacementDisp,
            widthText,
            spaceWidthDisp,
            c,
            codePoints,
            font,
            fontSizeText,
            (int)(fontSizeText * textMatrix.getXScale())
    ));
}

让我知道如果我的方法有任何缺陷,只消除上标。谢谢。

最新更新