Użycie PDFbox do określenia współrzędnych słów w dokumencie

Używam PDFbox do wyodrębniania współrzędnych słów / łańcuchów w dokumencie PDF i jak dotąd udało mi się określić położenie poszczególnych znaków. to jest kod do tej pory z dokumentu PDFbox:

package printtextlocations;

import java.io.*;
import org.apache.pdfbox.exceptions.InvalidPasswordException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDStream;
import org.apache.pdfbox.util.PDFTextStripper;
import org.apache.pdfbox.util.TextPosition;

import java.io.IOException;
import java.util.List;

public class PrintTextLocations extends PDFTextStripper {

    public PrintTextLocations() throws IOException {
        super.setSortByPosition(true);
    }

    public static void main(String[] args) throws Exception {

        PDDocument document = null;
        try {
            File input = new File("C:\\path\\to\\PDF.pdf");
            document = PDDocument.load(input);
            if (document.isEncrypted()) {
                try {
                    document.decrypt("");
                } catch (InvalidPasswordException e) {
                    System.err.println("Error: Document is encrypted with a password.");
                    System.exit(1);
                }
            }
            PrintTextLocations printer = new PrintTextLocations();
            List allPages = document.getDocumentCatalog().getAllPages();
            for (int i = 0; i < allPages.size(); i++) {
                PDPage page = (PDPage) allPages.get(i);
                System.out.println("Processing page: " + i);
                PDStream contents = page.getContents();
                if (contents != null) {
                    printer.processStream(page, page.findResources(), page.getContents().getStream());
                }
            }
        } finally {
            if (document != null) {
                document.close();
            }
        }
    }

    /**
     * @param text The text to be processed
     */
    @Override /* this is questionable, not sure if needed... */
    protected void processTextPosition(TextPosition text) {
        System.out.println("String[" + text.getXDirAdj() + ","
                + text.getYDirAdj() + " fs=" + text.getFontSize() + " xscale="
                + text.getXScale() + " height=" + text.getHeightDir() + " space="
                + text.getWidthOfSpace() + " width="
                + text.getWidthDirAdj() + "]" + text.getCharacter());
    }
}

Tworzy to serię linii zawierających pozycję każdego znaku, w tym spacje, która wygląda tak:

String[202.5604,41.880127 fs=1.0 xscale=13.98 height=9.68814 space=3.8864403 width=9.324661]P

Gdzie „P” to postać. Nie udało mi się znaleźć funkcji w PDFbox, aby znaleźć słowa, a ja nie jestem wystarczająco zaznajomiony z Javą, aby móc precyzyjnie połączyć te znaki z powrotem w słowa, aby przeszukać, nawet jeśli spacje są również zawarte. Czy ktoś inny był w podobnej sytuacji, a jeśli tak, to jak do niego podszedłeś? Naprawdę potrzebuję tylko współrzędnych pierwszego znaku w słowie, aby uprościć części, ale jeśli chodzi o to, w jaki sposób dopasuję ciąg do tego rodzaju wyjścia, to jest poza mną.

questionAnswers(3)

yourAnswerToTheQuestion