我已经用线PDFBOX,与我的算法通过判决来处理它提取从PDF文本行。
我用句点(。),其次是它的第一个字母是大写单词识别句子。 这里的问题是,当一个句子与具有上标一个字结束,提取将其视为一个普通的字符,并将其放在旁边的句号(。)
例如:表述“2电源22”时,为最后一个字在一个句子即具有周期出现了,它已被提取为2.22,这使得难以识别句子的结尾。
请提出一个解决方案,以摆脱超级脚本或不同的逻辑,以确定句子的结尾的。
谢谢。
我已经用线PDFBOX,与我的算法通过判决来处理它提取从PDF文本行。
我用句点(。),其次是它的第一个字母是大写单词识别句子。 这里的问题是,当一个句子与具有上标一个字结束,提取将其视为一个普通的字符,并将其放在旁边的句号(。)
例如:表述“2电源22”时,为最后一个字在一个句子即具有周期出现了,它已被提取为2.22,这使得难以识别句子的结尾。
请提出一个解决方案,以摆脱超级脚本或不同的逻辑,以确定句子的结尾的。
谢谢。
我回答我自己的问题,因为有些人可能在这里得到指导。
我有这个根据@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())
));
}
让我知道如果我的做法有只消除标任何瑕疵。 谢谢。