¿Cómo extraer texto de un archivo PDF?
Estoy intentando extraer el texto incluido en este archivo PDF usando Python
.
Estoy usando el paquete PyPDF2 (versión 1.27.2) y tengo el siguiente script:
import PyPDF2
with open("sample.pdf", "rb") as pdf_file:
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.pages[0]
page_content = page.extractText()
print(page_content)
Cuando ejecuto el código, obtengo el siguiente resultado, que es diferente del incluido en el documento PDF:
! " # $ % # $ % &% $ &' ( ) * % + , - % . / 0 1 ' * 2 3% 4
5
' % 1 $ # 2 6 % 3/ % 7 / ) ) / 8 % &) / 2 6 % 8 # 3" % 3" * % 31 3/ 9 # &)
%
¿Cómo puedo extraer el texto tal cual está en el documento PDF?
Estaba buscando una solución simple para usar en Python 3.x y Windows. No parece haber soporte de texttract , lo cual es desafortunado, pero si está buscando una solución simple para Windows/python 3, consulte el paquete tika , que es realmente sencillo para leer archivos PDF.
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.
from tika import parser # pip install tika
raw = parser.from_file('sample.pdf')
print(raw['content'])
Tenga en cuenta que Tika está escrito en Java, por lo que necesitará tener instalado un tiempo de ejecución de Java.
pypdf ha mejorado mucho recientemente. Dependiendo de los datos, está a la par o mejor que pdfminer.six
.
pymupdf / tika / PDFium son mejores que pypdf, pero la diferencia se volvió bastante pequeña (principalmente cuando establecer una nueva línea). La parte principal es que son mucho más rápidos. Pero no son Python puro, lo que puede significar que no puedes ejecutarlo. Y es posible que algunos tengan licencias demasiado restrictivas para que no puedas usarlos.
Eche un vistazo al punto de referencia . Este punto de referencia considera principalmente textos en inglés, pero también en alemán. No incluye:
- Cualquier cosa especial con respecto a las tablas (solo que el texto esté ahí, no sobre el formato)
- Prueba de árabe (idiomas RTL)
- Fórmulas matemáticas.
Eso significa que si su caso de uso requiere esos puntos, es posible que perciba la calidad de manera diferente.
Dicho esto, los resultados de noviembre de 2022:
pypdf
¡Me convertí en el mantenedor de pypdf y PyPDF2 en 2022! 😁 La comunidad mejoró mucho la extracción de texto en 2022. Pruébalo :-)
from pypdf import PdfReader
reader = PdfReader("example.pdf")
text = ""
for page in reader.pages:
text += page.extract_text() + "\n"
Tenga en cuenta que esos paquetes no se mantienen:
- PyPDF2, PyPDF3, PyPDF4
pdfminer
(sin .seis)
pymupdf
import fitz # install using: pip install PyMuPDF
with fitz.open("my.pdf") as doc:
text = ""
for page in doc:
text += page.get_text()
print(text)
Otras bibliotecas de PDF
- pikepdf no admite la extracción de texto ( fuente )
Utilice extracto de texto.
- http://textract.readthedocs.io/en/latest/
- https://github.com/deanmalmgren/textract
Admite muchos tipos de archivos, incluidos PDF
import textract
text = textract.process("path/to/file.extension")