¿Cómo extraer la tabla como texto del PDF usando Python?

Tengo un PDF que contiene tablas, texto y algunas imágenes. Quiero extraer la tabla dondequiera que haya tablas en el PDF.

Ahora mismo estoy haciendo manualmente para encontrar la tabla de la página. Desde allí estoy capturando esa página y guardando en otro PDF.

import PyPDF2 PDFfilename = "Sammamish.pdf" #filename of your PDF/directory where your PDF is stored pfr = PyPDF2.PdfFileReader(open(PDFfilename, "rb")) #PdfFileReader object pg4 = pfr.getPage(126) #extract pg 127 writer = PyPDF2.PdfFileWriter() #create PdfFileWriter object #add pages writer.addPage(pg4) NewPDFfilename = "allTables.pdf" #filename of your PDF/directory where you want your new PDF to be with open(NewPDFfilename, "wb") as outputStream: writer.write(outputStream) #write pages to new PDF 

Mi objective es extraer la tabla de todo el documento PDF.

Por favor, eche un vistazo a la imagen de muestra de una página en PDF

En mi opinión tienes 4 posibilidades:

  • Puedes tratar el pdf directamente usando tabula

  • Puedes convertir el pdf a texto usando pdftotext, luego analizar el texto con python

  • Puede usar una herramienta externa para convertir su archivo pdf a excel o csv , luego use el módulo de Python requerido para abrir el archivo excel / csv.

  • También puede convertir pdf a un archivo de imagen , luego usar cualquier software reciente de OCR (que reconstruye automáticamente la tabla a partir de la imagen) para obtener datos

Su pregunta es casi similar con:

  • Extraer / identificar tablas de PDF python

  • Extraer tablas de un pdf

  • Extraer tabla de un PDF

  • ¿Cómo raspar tablas en miles de archivos PDF?

  • Datos PDF y raspado de tablas a Excel

  • Extraer el contenido de la tabla de una colección de archivos PDF

Saludos

Te sugiero que extraigas la tabla usando tabula. Pase su pdf como argumento a la api de tabula y le devolverá la tabla en forma de dataframe. Cada tabla en su pdf se devuelve como un dataframe. Este es mi código para extraer el pdf.

 #the table will be returned in a list of dataframe,for working with dataframe you need pandas import pandas as pd import tabula files = "filename.pdf" path = 'C:\\Users\\Himanshu Poddar\\Desktop\\datathon\\Himachal\\' + file df = tabula.read_pdf(path, pages = '1', multiple_tables = True) print(df) 

Por favor, consulte este repository mío para más detalles.

Solo como una palabra clave para su investigación adicional: También existe la opción de usar OCR zonal . Lo he usado con éxito en un proyecto. Pero este método no es adecuado para alto volumen / alta velocidad, y requiere definir la plantilla de extracción para cada campo que necesite:

introduzca la descripción de la imagen aquí

En el lado positivo, ya que funciona visualmente, funciona con cualquier tipo de tabla (texto, imagen, escaneo).

Puede intentar convertir su archivo pdf en un archivo de excel y luego puede usar la biblioteca openpyxl para extraer datos del archivo de excel, agregar ese archivo a la matriz y luego convertir la matriz a json.