Nuestro team de trabajo ha estado mucho tiempo buscando la respuesta a tu interrogante, te dejamos la soluciones y nuestro deseo es serte de mucha apoyo.
Solución:
En este tutorial, examinaremos las bibliotecas más populares para extraer datos de PDF con Python. El PDF es excelente para leer, pero es posible que necesitemos extraer algunos detalles para su procesamiento posterior.
Probé numerosos paquetes, cada uno con sus propias fortalezas y debilidades. Existen buenos paquetes para el procesamiento de PDF y la extracción de texto de PDF que la mayoría de la gente usa: Textract, Apache Tika, pdfPlumber, pdfmupdf, PyPDF2
Nota: PyPDF2 no se mantiene, así que lo ignoro.
Deja que todas estas bibliotecas de todos modos
pdfplumber #
Plumb un PDF para obtener información detallada sobre cada carácter de texto, rectángulo y línea. Además: extracción de tablas y depuración visual.
Funciona mejor en archivos PDF generados por máquina, en lugar de escaneados. Construida sobre pdfminer.six
.
Probado actualmente en Python 3.6, 3.7 y 3.8 y funciona en MacOS, Windows, Linux
pip install pdfminer.six
Instalar pdfplumber #
pip install pdfplumber
Uso básico #
import pdfplumber
with pdfplumber.open("pdffile.pdf")as pdf:
page = pdf.pages[0]
text = page.chars[0]print(text)
Para comenzar a trabajar con un PDF, llame a pdfplumber.open (x), donde x puede ser un:
- ruta a su archivo PDF
- objeto de archivo, cargado como bytes
- objeto similar a un archivo, cargado como bytes El método open devuelve una instancia de la clase pdfplumber.PDF.
Tika #
Tika-Python es un enlace de Python a los servicios REST de Apache Tika ™ que permite llamar a Tika de forma nativa en la comunidad de Python.
Instalar tika #
La instalación de la biblioteca de Python es bastante simple, pero no funcionará a menos que tenga JAVA instalado. Así que asegúrese de tener Java instalado.
pip install tika
tika uso básico #
import tika
tika.initVM()
from tika import parser
parsed = parser.from_file('sample.pdf')
print(parsed["metadata"])
print(parsed["content"])
pdftotext #
Esta es una biblioteca de extracción de texto PDF muy simple y fácil de usar. Sin embargo, debido a que depende de poppler
por lo que la instalación depende del sistema operativo
Dependencias del SO #
Debian, Ubuntu y amigos #
sudo apt install build-essential libpoppler-cpp-dev pkg-config python3-dev
Fedora, Red Hat y amigos #
sudo yum install gcc-c++ pkgconfig poppler-cpp-devel python3-devel
Mac OS #
brew install pkg-config poppler python
Windows #
Actualmente probado solo cuando se usa conda:
- Instale las herramientas de compilación de Microsoft Visual C ++
- Instale poppler a través de conda:
conda install -c conda-forge poppler
Instalar pdftotext #
pip install pdftotext
uso básico de pdftotext #
import pdftotext
# Load PDF filewithopen("pdffile.pdf","rb")as f:
pdf = pdftotext.PDF(f)# If it's password-protectedwithopen("secure_pdffile.pdf","rb")as f:
pdf = pdftotext.PDF(f,"secret")# Iterate over all the pagesfor page in pdf:# text content in pdf pageprint(page)# Read all the text into one stringprint("nn".join(pdf))
PyMuPDF #
Con PyMuPDF puede acceder no solo a PDF, sino también a archivos con extensiones como “.xps”, “.oxps”, “.cbz”, “.fb2” o “.epub”. Además, alrededor de 10 formatos de imagen populares también se pueden abrir y manejar como documentos.
Instalar PyMuPDF #
Para las plataformas Windows, Linux y Mac OSX, hay ruedas en el descargar sección de PyPI. Esto incluye las versiones 3.6 a 3.9 de Python 64bit. Solo para Windows, las versiones de 32 bits también están disponibles.
Uso básico de PyMuPDF #
import fitz # this is pymupdfwith fitz.open("my.pdf")as doc:
text =""for page in doc:
text += page.getText()print(text)
Conclusión #
los textract
no se consideró la biblioteca para usar el mismo algoritmo que pdftotext. (textract
es un contenedor para Poppler: pdftotext) | https://pypi.org/project/textract/
Las observaciones sobre la extracción del algoritmo dependen del archivo PDF, su proceso de codificación y la diversidad de elementos no textuales presentes, como Imágenes y Tablas.
- Principales características encontradas:
-
PyMuPDF | Buena conversión incluso considerando las tablas. El algoritmo no considera espacios en blanco, lo que ayuda en el tratamiento. Tiene un tiempo de conversión muy rápido.
-
pdftotext | Gran conversión, pero extrae el texto en dos columnas, como en la maquetación original, característica que dará como resultado un error por la combinación de diferentes frases. Tiene una excelente calidad de extracción, pero para mi propósito (recuperación de información) no funcionará.
-
Tika-Python | Buena conversión con reconocimiento de URL y extracción completa. Pero el algoritmo considera espacios de línea en blanco, otra necesidad en el tratamiento. Su tiempo de procesamiento es mayor que PyMuPDF, pero nada que impida su uso. También tiene la desventaja de no ser nativo: el archivo .jar se descarga en la primera llamada de la biblioteca, se ejecuta un servidor Java para atender las solicitudes.
-
PyPDF2 | Muchos saltos de línea que no se han producido en otros convertidores. Y en 3 archivos de la prueba, la extracción fue inaceptable debido a la total ausencia de espacios entre palabras.
- Abstracto:
- En este experimento, la elección debe recaer en las bibliotecas PyMuPDF o Tika-Python. pdftotext es una gran biblioteca, pero conserva el mismo diseño que el texto original, que en ciertas situaciones es inapropiado.
Si tienes alguna desconfianza y disposición de prosperar nuestro enunciado te insinuamos escribir una nota y con placer lo observaremos.