-->

从PDF中提取文本时不包括超级脚本(Excluding super script when extr

2019-10-19 17:00发布

我已经用线PDFBOX,与我的算法通过判决来处理它提取从PDF文本行。

我用句点(。),其次是它的第一个字母是大写单词识别句子。 这里的问题是,当一个句子与具有上标一个字结束,提取将其视为一个普通的字符,并将其放在旁边的句号(。)

例如:表述“2电源22”时,为最后一个字在一个句子即具有周期出现了,它已被提取为2.22,这使得难以识别句子的结尾。

请提出一个解决方案,以摆脱超级脚本或不同的逻辑,以确定句子的结尾的。

谢谢。

Answer 1:

我回答我自己的问题,因为有些人可能在这里得到指导。

我有这个根据@mkl建议解决。 观察getYScale()在PDFStreamEngine.java的结果之后,我得出了一个结论,即标尺寸小于8.9663。 所以我已经创建TextPosition,将由PDFTextStripper.java进行处理之前保持在PDFStreamEngine.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())
    ));
}

让我知道如果我的做法有只消除标任何瑕疵。 谢谢。



文章来源: Excluding super script when extracting text from pdf