Saltar al contenido

Cómo extraer texto de PDF con Python 3

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *