Análisis de Python y PDF: ¿hay bibliotecas de código abierto modernas, potentes y bien mantenidas?

Estoy buscando potentes bibliotecas de análisis de PDF bien mantenidas y bien documentadas para Python (principalmente para extraer y analizar datos de varios tipos de archivos PDF con estructuras diferentes/impredecibles, incluso con la ayuda de OCR fiable y potente).

Actualmente soy consciente de los siguientes proyectos principales:


PDFMiner : https://github.com/euske/pdfminer (última confirmación hace 11 días)

PDFMiner.six : https://github.com/pdfminer/pdfminer.six (última confirmación hace 3 días; parece ser el proyecto mantenido más activamente)

^-- no estoy seguro de haber entendido exactamente la diferencia entre los dos.

La API de PDFMiner me parece un poco demasiado complicada de usar; vea un buen ejemplo aquí .


PyPDF2 : https://github.com/mstamy2/PyPDF2 (última confirmación en junio de 2018)

PyPDF4 : https://github.com/claird/PyPDF4 (última confirmación en mayo de 2019)

Versión corta: PyPDF4 es una ruptura limpia diseñada para hacer lo que hizo PyPDF2, pero sobre una base empresarial más sostenible. Sí, en principio podríamos haber simplemente reconfigurado PyPDF2 (o PyPDF3, para el caso) hasta que llegara donde queremos que esté PyPDF4. Nuestro juicio fue que el costo de dejar atrás los activos y pasivos de PyPDF2 fue menor que la ganancia de un nuevo comienzo organizacional.


Analizador de tablas moderno para PDF con Camelot-py ( https://github.com/camelot-dev/camelot ) -> este es un gran proyecto, pero actualmente solo cubre el análisis de tablas en archivos PDF. Además, parece depender de PyPDF2 y PDFMiner.six para leer el PDF.


Entonces, ¿qué otra biblioteca de análisis de PDF de código abierto poderosa, confiable (= precisa y robusta) y moderna (= con excelente API) de uso general que esté bien mantenida existe para Python?

Respuestas (2)

Finalmente, opté por OCRmyPDF ( https://github.com/jbarlow83/OCRmyPDF ), que usa tesseract para la parte OCR real ( https://github.com/tesseract-ocr/tesseract ), según tengo entendido, tesseract es un OCR herramienta que ha sido de código abierto por Google.

OCRmyPDF tiene una excelente documentación, también funciona desde la línea de comandos y tiene muchos paquetes de idiomas :

ocrmypdf -l eng pdf_to_ocr.pdf new_pdf_with_ocr.pdf


Para extraer texto del PDF, la mejor herramienta que encontré es pdftotext ( https://github.com/jalan/pdftotext ), que es un contenedor de Python para Poppler ( https://poppler.freedesktop.org/ ). Estoy obteniendo resultados muy satisfactorios con esta herramienta, mucho mejores que PyPDF2.


Actualización : aquí hay algunos lectores y escritores de PDF de primera línea para Python:

Asegúrese de revisar estos. Aunque para la extracción de texto, debo decir que sigo prefiriendo pdftotextel uso básico, ya que conserva muy bien el orden del diseño usando espacios.

Buena pregunta y buena respuesta. Haga clic en la marca para aceptar su propia respuesta. Si lo hace, ayudará a otros que lean esta pregunta en el futuro. Gracias por esa recomendación :-)
Gracias por la sugerencia, me perdí el último paso para aceptar la respuesta :) de hecho, espero que esta información pueda ahorrar tiempo a otros.
Bienvenido a bordo. Espero que estés activo :-)

PyPDF2 se mantiene nuevamente desde abril de 2022. Hicimos mejoras masivas en la extracción de texto y agregamos anotaciones de tipo. Se mejoraron los documentos, la interfaz ahora es más pitónica.

Internamente, desaprobamos Python 3.5 e inferior + agregamos muchas pruebas unitarias. Esto simplifica el desarrollo/mantenimiento.

PyPDF2 es gratuito y de código abierto.

PyPDF2 es una biblioteca de Python puro sin dependencias.

Buenas noticias, ¡salud por eso!