es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pdfplumber omite la primera columna y la última fila de todas las tablas dentro de un esquema.

Soy un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. No traduzcas el código y la salida en markdownSoy nuevo en pdfplumber, y estoy asombrado por cómo extrae el texto de las tablas.

Es fácil trabajar con tablas de todas las páginas, pero en mi caso, estoy usando algunos diagramas topológicos con algunas tablas dentro.

Falla al extraer la primera columna y la última fila de cada tabla en el documento. He intentado ajustar varios parámetros de configuración en la variable table_settings, desafortunadamente no he podido lograr ningún resultado mejor (en mi caso, el resto del texto en el esquema se considera como una tabla en caso de que use “texto” en lugar de “líneas”).

¿Alguna ayuda con esto? Estoy usando Python 3.9.8 y el PDF de prueba se puede encontrar en: diagrama.pdf

El código fuente es el siguiente:

import pdfplumber
pdf_file = "Diagrama.pdf"
tables=[]
with pdfplumber.open(pdf_file) as pdf:
    pages = pdf.pages
    tbl = pages[0].extract_tables()

    print(f'{tbl}')
Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución

    Parece que pdfplumber está teniendo problemas para reconocer la primera columna y la última fila de las tablas en su documento de esquemas topológicos. Esto puede deberse al diseño o formato de las tablas en el documento.

    Para resolver este problema, puede intentar usar la opción snap_tolerance en el parámetro table_settings para ajustar la tolerancia de espaciado que puede estar causando el problema. También puede intentar ajustar otros parámetros de configuración como vertical_strategy y horizontal_strategy para mejorar la detección de tablas.

    Aquí hay un fragmento de código actualizado con algunas opciones de configuración sugeridas para probar:

    import pdfplumber
    
    pdf_file = "Esquema.pdf"
    tables = []
    
    with pdfplumber.open(pdf_file) as pdf:
        pages = pdf.pages
        for page in pages:
            table_settings = {
                "vertical_strategy": "lines",
                "horizontal_strategy": "lines",
                "snap_tolerance": 1,
                "join_tolerance": 2,
                "intersection_x_tolerance": 3,
                "intersection_y_tolerance": 3,
            }
            tbl = page.extract_tables(table_settings=table_settings)
            tables.extend(tbl)
    
    print(f"{tables}")
    

    Puede ajustar estos parámetros y/o experimentar con otras opciones para ver si mejoran la extracción de tablas. Además, también puede intentar utilizar otras bibliotecas o herramientas de Python como Tabula o Camelot para extraer tablas del documento PDF.

Comments are closed.