Análisis de PDF con Python: extracción de textos con formato y sin formato [cerrado]

82

Estoy buscando una biblioteca PDF que me permita extraer el texto de un documento PDF. He examinado PyPDF y esto puede extraer muy bien el texto de un documento PDF. El problema con esto es que si hay tablas en el documento, el texto de las tablas se extrae en línea con el resto del texto del documento. Esto puede ser problemático porque genera secciones de texto que no son útiles y parecen distorsionadas (por ejemplo, muchos números mezclados).

Me gustaría extraer el texto de un documento PDF, excluyendo tablas y formatos especiales. ¿Hay alguna biblioteca que haga esto?

Mike Cialowicz
fuente

Respuestas:

61

También puede echar un vistazo a PDFMiner (o para versiones anteriores de Python, consulte PDFMiner y PDFMiner ).

Una característica particular de interés en PDFMiner es que puede controlar cómo reagrupa las partes del texto al extraerlas. Puede hacer esto especificando el espacio entre líneas, palabras, caracteres, etc. Entonces, tal vez al ajustar esto pueda lograr lo que desea (eso depende de la variabilidad de sus documentos). PDFMiner también puede brindarle la ubicación del texto en la página, puede extraer datos por ID de objeto y otras cosas. ¡Así que profundice en PDFMiner y sea creativo!

Pero su problema no es realmente fácil de resolver porque, en un PDF, el texto no es continuo, sino que está compuesto por una gran cantidad de pequeños grupos de caracteres colocados absolutamente en la página. El objetivo de PDF es mantener intacto el diseño. No está orientado al contenido sino a la presentación.

Etienne
fuente
1
PDFMiner parece interesante. Puedo usar la salida XML de él y luego analizarlo para ignorar lo que no quiero. Esto todavía requiere un posprocesamiento sustancial, pero por ahora probablemente sea la mejor solución. Gracias.
Mike Cialowicz
@Etienne, ¿se puede usar si el PDF también tiene caracteres en otros idiomas?
Sahil Mittal
Debería funcionar con otros caracteres del idioma. Los documentos mencionan: Compatibilidad con lenguajes CJK y scripts de escritura vertical. La mejor manera de estar seguro es probarlo.
Etienne
1
El pdfminer.six Python 3 puerto de PDFMiner está funcionando bien para mí
hamish
1
A partir de la versión 20191010, PDFMiner solo admite Python 3
fantástico
0

Ese es un problema difícil de resolver, ya que los PDF visualmente similares pueden tener una estructura muy diferente dependiendo de cómo se produjeron. En el peor de los casos, la biblioteca tendría que actuar básicamente como un OCR. Por otro lado, el PDF puede contener suficiente estructura y metadatos para eliminar fácilmente tablas y figuras, que la biblioteca se puede adaptar para aprovechar.

Estoy bastante seguro de que no hay herramientas de código abierto que resuelvan su problema para una amplia variedad de archivos PDF, pero recuerdo haber oído hablar de software comercial que afirma hacer exactamente lo que pide. Estoy seguro de que te encontrarás con ellos mientras buscas en Google.

akaihola
fuente