pdf2jpg pdf2image imagen python pdf image

python - pdf2image - Conversión de PDF a imágenes automáticamente



pdf2jpg python (5)

Entonces, el estado en el que estoy lanzó varios datos en formato PDF, pero para empeorar las cosas, la mayoría (todos?) De los PDF parecen ser letras escritas en Office, impresas / fax y luego escaneadas (nuestro gobierno en su mejor eh?). Al principio pensé que estaba loco, pero luego comencé a ver numerosos archivos PDF que están "inclinados", como si alguien no los hubiera colocado correctamente en el escáner. Entonces, pensé que la siguiente mejor opción para obtener el texto real de ellos sería convertir cada página en una imagen.

Obviamente, esto necesita ser automatizado, y preferiría quedarme con Python si es posible. Si Ruby o Perl tienen algún tipo de implementación que sea demasiado impresionante como para dejarla pasar, puedo seguir esa ruta. He intentado con pyPDF para la extracción de texto, que obviamente no me sirvió de mucho. He probado swftools, pero las imágenes que obtengo son casi completamente inutilizables. Simplemente parece que las fuentes se arruinan en la conversión. Tampoco me importa realmente el formato de imagen en el camino de salida, siempre y cuando sean relativamente livianos y legibles.


Aquí hay un enfoque alternativo para convertir un archivo .pdf en imágenes: use una impresora de imágenes. He utilizado con éxito la función siguiente para "imprimir" archivos PDF en imágenes JPEG con ImagePrinter Pro . Sin embargo, hay MUCHAS impresoras de imagen por ahí. Escoge el que te gusta. Parte del código puede necesitar modificarse ligeramente en función de la impresora de imágenes que elija y del formato estándar de guardado de archivos que utiliza la impresora de imágenes.

import win32api import os def pdf_to_jpg(pdfPath, pages): # print pdf using jpg printer # ''pages'' is the number of pages in the pdf filepath = pdfPath.rsplit(''/'', 1)[0] filename = pdfPath.rsplit(''/'', 1)[1] #print pdf to jpg using jpg printer tempprinter = "ImagePrinter Pro" printer = ''"%s"'' % tempprinter win32api.ShellExecute(0, "printto", filename, printer, ".", 0) # Add time delay to ensure pdf finishes printing to file first fileFound = False if pages > 1: jpgName = filename.split(''.'')[0] + ''_'' + str(pages - 1) + ''.jpg'' else: jpgName = filename.split(''.'')[0] + ''.jpg'' jpgPath = filepath + ''/'' + jpgName waitTime = 30 for i in range(waitTime): if os.path.isfile(jpgPath): fileFound = True break else: time.sleep(1) # print Error if the file was never found if not fileFound: print "ERROR: " + jpgName + " wasn''t found after " + str(waitTime)/ + " seconds" return jpgPath

La variable jpgPath resultante jpgPath dice la ubicación de la ruta de la última página jpeg del pdf impreso. Si necesita obtener otra página, puede agregar fácilmente alguna lógica para modificar la ruta para obtener páginas anteriores


Ghostscript es ideal para convertir archivos PDF a imágenes. Es confiable y tiene muchas opciones configurables. También está disponible bajo la licencia GPL o licencia comercial. Puede llamarlo desde la línea de comando o usar su API nativa. Para más información:


Puede llamar, por ejemplo, pdftoppm desde la línea de comandos (o utilizando el módulo de subprocess de Python) y luego convertir los archivos PPM resultantes al formato deseado utilizando, por ejemplo, ImageMagick (nuevamente, utilizando subprocess o algunos enlaces si existen).


Si los PDF son imágenes realmente escaneadas, entonces no debe convertir el PDF a una imagen, debe extraer la imagen del PDF. Lo más probable es que todos los datos en el PDF sean esencialmente una imagen gigante, envueltos en una verbosidad de PDF para que sea legible en Acrobat.

Debe intentar el simple recurso de simplemente encontrar la imagen en el PDF y copiar los bytes: Extraer JPG de archivos PDF . El código allí es completamente simple, y probablemente hay docenas de razones por las que no funcionará en sus archivos PDF. Pero si lo hace, tendrá una forma rápida e indolora de obtener los datos de imagen de los archivos PDF.


en pdf_to_jpg (pdfPath)

6 # ''pages'' is the number of pages in the pdf 7 filepath = pdfPath.rsplit(''/'', 1)[0] ----> 8 filename = pdfPath.rsplit(''/'', 1)[1] 9 10 #print pdf to jpg using jpg printer

IndexError: lista el índice fuera de rango