2009-11-04 30 views
5

actualmente, si hago una página objeto de una página pdf con pyPdf y extractText(), lo que ocurre es que las líneas se concatenan juntas. Por ejemplo, si la línea 1 de la página dice "hola" y la línea 2 dice "mundo", el texto resultante devuelto por extractText() es "helloworld" en lugar de "hello world". ¿Alguien sabe cómo solucionar esto o tiene sugerencias para trabajar? Realmente necesito el texto para tener espacios entre las líneas porque estoy haciendo minería de texto en este texto en pdf y no tener espacios entre líneas lo mata ...python y pyPdf - cómo extraer texto de las páginas para que haya espacios entre las líneas

+1

Es posible que desee echarle un vistazo a esta página SO: http://stackoverflow.com/questions/25665/python-module-for-converting-pdf-to-text ¡Hay algunas buenas sugerencias allí! – avelldiroll

Respuesta

2

Este es un problema común con el análisis de PDF. También puede esperar guiones finales que tendrá que corregir en algunos casos. Se me ocurrió una solución para uno de mis proyectos que describiré aquí en breve:

Utilicé pdfminer para extraer XML de PDF y también encontré palabras concatenadas en el XML. Extraje la misma PDF como HTML y el código HTML puede ser descrito por las líneas de la siguiente expresión regular:

<span style="position:absolute; writing-mode:lr-tb; left:[0-9]+px; top:([0-9]+)px; font-size:[0-9]+px;">([^<]*)</span> 

Los vanos son absolutamente posicionado y tienen un estilo de la parte superior que se puede utilizar para determinar si un salto de línea que pasó. Si se produjo un salto de línea y la última palabra en la última línea no tiene un trazo final, puede separar la última palabra en la última línea y la primera palabra en la línea actual. Puede ser complicado en los detalles, pero es posible que pueda corregir casi todos los errores de análisis de texto.

Además puede ejecutar una biblioteca de diccionarios como enchant sobre su texto, encontrar errores y si la solución sugerida por el diccionario es como la palabra de error pero con un espacio en alguna parte, es probable que la palabra de error sea un error de análisis y se puede arreglar con la sugerencia de los diccionarios.

Analizando PDF apesta y si encuentra una fuente mejor, úselo.

Cuestiones relacionadas