2012-09-10 88 views
6

¿Es posible obtener las ubicaciones de las palabras usando PDFBox, similar a "processTextPosition"? Parece que processTextPosition solo se llama en caracteres únicos, y el código que los combina en palabras forma parte del método PDFTextStripper (en el método "normalizar"), que devuelve la ubicación del texto. ¿Existe algún método/utilidad que extraiga la ubicación también? (Para los que preguntan lo que la motivación es - la información es en realidad una mesa, y nos gustaría para detectar células vacías) GraciasPDFBox - obtener ubicaciones de palabras (y no solo caracteres)

+0

quizás esto ayude: http://stackoverflow.com/questions/3203790/parsing-pdf-files-especially-with -tables-with-pdfbox/12545981 # 12545981 – impeto

+0

Gracias por la sugerencia. Finalmente, nuestra solución fue cambiar la página de escritura, para mantener las palabras con su posición (como se describe en la URL que envió). Sin embargo, en nuestro caso, el número de columnas (y sus posiciones) no se conoce, y tenemos que encontrarlo en función de la organización de la información (por ejemplo, si hay muchas líneas que tienen palabras que comienzan en la posición Y) = 100, probablemente hay una columna de tabla allí). ¿Hay algún componente que pueda detectar esta estructura? Si es así, ¿puede manejar páginas ligeramente giradas también cuando la "Y" no es una constante? – user964797

+0

una forma posible es realizar un seguimiento de los caracteres al agregar una anulación al processTextPosition() de PDFTextStripper Class y verificar el separador de palabras. Mantener una marca en el inicio de palabra y mantener una marca en el extremo de palabra y guardar la palabra cuando se encuentra un delimitador – programer8

Respuesta

1

para obtener las palabras y su posiciones X e Y en un texto extraído de un archivo PDF que ha tendrá que extender la clase PdfTextStripper y utilizar la clase personalizada para extraer el texto del archivo PDF por ejemplo

public class CustomPDFTextStripper extends PDFTextStripper{ 

    public CustomPDFTextStripper() throws IOException { 

    } 

    /** 
    * Override the default functionality of PDFTextStripper. 
    */ 

    @Override 
    protected void writeString(String text, List<TextPosition> textPositions) throws IOException{ 
     TextPosition firstProsition = textPositions.get(0); 
     writeString(String.format("[%s , %s , %s]", firstProsition.getTextPos().getXPosition(), 
       firstProsition.getTextPos().getYPosition(), text)); 

    } 
} 

crear un objeto de esta clase personalizada y extraer texto de este modo

PDFTextStripper pdfStripper = new CustomPDFTextStripper(); 
String text = pdfStripper.getText(*pdf file wrapped as a PDDocument object*); 

la cadena de texto resultante está en la forma [xposition, yposition, word] separada por el separador de palabras predeterminado

+0

No funciona para PdfBox .net –

Cuestiones relacionadas