2009-08-15 50 views

Respuesta

11

Es posible, pero no necesariamente fácil, porque el formato PDF es muy rico. Puede encontrar un documento que lo describe en detalle en here. El primer ejemplo elemental que da acerca de cómo mostrar texto de archivos PDF es:

BT 
/F13 12 Tf 
288 720 Td 
(ABC) Tj 
ET 

BT y ET son órdenes para empezar y acabar un objeto de texto; Tf es un comando para usar el recurso de fuente externo F13 (que es Helvetica) en el tamaño 12; Td es un comando para posicionar el cursor en las coordenadas dadas; Tj es un comando para escribir los glifos de la cadena anterior. El sabor es algo así como "notación polaca inversa" -oid, y de hecho bastante parecido al sabor de Postscript, una de las otras grandes contribuciones de Adobe a la composición tipográfica.

El problema es que no hay nada en las especificaciones de PDF que diga que el texto que "parece" que pertenece al mismo tiempo en la página como se muestra debe estar "realmente" unido; dado que siempre se pueden dar coordenadas precisas, si el PDF se genera mediante un sofisticado sistema de diseño de tipografía, puede colocar el texto de forma precisa, carácter por carácter, mediante coordenadas. Reconstruir el texto en forma de palabras y oraciones no es necesariamente fácil, es casi tan difícil como el reconocimiento óptico de texto, excepto que se le asignan los caracteres con precisión (bueno, casi ... algunas supuestas "imágenes" podrían mostrarse como personajes) ... ;-).

pyPdf es una biblioteca muy simple de Python puro que es un buen punto de partida para jugar con archivos PDF. Su función de "extracción de texto" es bastante elemental y no hace más que concatenar los argumentos de unos pocos comandos de dibujo de texto; verá que eso es suficiente en algunos documentos, y es bastante inutilizable en otros, pero al menos es un comienzo. Según se distribuye, pyPdf no hace casi nada con los colores, pero con algunos ataques que podrían remediarse.

reportlab potente biblioteca de Python se centra exclusivamente en la generación de nuevos archivos PDF, no en la interpretación o modificación de los existentes. En el otro extremo, la biblioteca de Python pura pdfminer se centra completamente en el análisis de archivos PDF; hace algunos clusters para tratar de reconstruir el texto en casos en los que las bibliotecas más simples se perdería.

No conozco una biblioteca existente que realice las tareas de transformación que usted desea, pero debería ser posible mezclar y combinar algunas de estas existentes para obtener la mayor parte de ellas ... ¡buena suerte!

+0

He intentado leer un pdf, pero es un poco de carácter y una secuencia, puedo reconocer PDF y EOF y hay muchos caracteres especiales. ¿hay alguna codificación específica? ¿Podría compartir un código simple para buscar BT y ET, tuve la misma pregunta que está en http://stackoverflow.com/questions/12982188/how-to-access-lines-in-a-pdf-page-programmatically -y-darles-diferente-color, gracias – Shan

0

Lo más destacado es posible en el archivo pdf utilizando anotaciones PDF, pero hacerlo de forma nativa no es tarea fácil. Si alguna de la biblioteca mencionada proporciona tal facilidad es algo que puede buscar.

Cuestiones relacionadas