1

pdfboxを使用してpdfから1行ずつテキストを抽出し、アルゴリズムで文ごとに処理しました。

ピリオド (.) の後に最初の文字が大文字の単語を使用して文を認識しています。ここでの問題は、文が上付き文字を持つ単語で終わる場合、extractor はそれを通常の文字として扱い、ピリオド (.) の隣に配置することです。

たとえば、「2 乗 22」という表現は、文末の単語、つまりピリオドがある場合、2.22 として抽出され、文末の識別が困難になります。

上付き文字を取り除く解決策や、文末を識別する別のロジックを提案してください。

ありがとう。

4

1 に答える 1

1

ここで指示される可能性があるため、私は自分の質問に答えています。

@mklの提案に従ってこれを解決しました。PDFStreamEngine.java で getYScale() の結果を観察した結果、上付き文字のサイズが 8.9663 未満であるという結論に達しました。そのため、PDFTextStripper.java によって処理される TextPosition を作成する前に、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())
    ));
}

上付き文字のみを削除する際に、私のアプローチに欠陥があるかどうか教えてください。ありがとう。

于 2014-04-02T07:39:34.240 に答える