Tabula 将文本分解为未命名的列

Tabula broke text into unnamed columns

提问人:Luiz Maleico 提问时间:11/14/2023 更新时间:11/14/2023 访问量:42

问:

我正在用 Python 编写一个脚本来读取 PDF 并将 dataFrame 转换为带有 tabula 的 CSV,我尝试了两种方法,convert_into 和 read_pdf,它们返回我调用的所有页面,但有些列被拆分为没有名称的新列,例如 unnamed: 0, unnamed: 1 ...并具有原始列的缺失片段。

page = t.read_pdf(path,stream=True, encoding="UTF-8", pages=paginas, multiple_tables=True, guess=True,format="pdf")
        df = pd.DataFrame([])
        for i in range(len(page)):
                page[i] = pd.DataFrame(page[i])
                df = pd.concat([df,page[i]])
        dataAtual = datetime.datetime.now()
        saida = destino+"/ErrNFE"+str(dataAtual)+".csv"
        df.to_csv(saida, encoding="UTF-8", sep=";")

LibreOffice Calc 上的输出片段

我使用 dataFrame 的 columns 属性来限制返回时的列,这可以删除未命名的列,但也删除这些列中的文本。

page = t.read_pdf(path,stream=True, encoding="UTF-8", pages=paginas, multiple_tables=True, guess=True,format="pdf")
        df = pd.DataFrame([])
        for i in range(len(page)):
                page[i] = pd.DataFrame(page[i],columns=({'Campo-Seq':[1,2], 'Modelo':[1,2], 'Regra de Validação':[1,2], 'Aplic.':[1,2], 'Msg':[1,2],'Efeito':[1,2],'Descrição Erro':[1,2]}))
                df = pd.concat([df,page[i]])
        dataAtual = datetime.datetime.now()
        saida = destino+"/ErrNFE"+str(dataAtual)+".csv"
        df.to_csv(saida, encoding="UTF-8", sep=";")

结果如下所示:标记列后 Calc 上的输出片段

Python 熊猫 tabula tabula-py

评论

0赞 furas 11/15/2023
据我所知,可能具有非常复杂的结构。它甚至可以将每个字符保留为单独的对象,并将字符保持随机顺序(并使用属性将其显示在屏幕上的正确位置) - 这给使用带来了很大的问题。如果您可以获取不同格式(CSV、Excel、纯文本)的数据,请不要使用PDFx,yPDFPDF
0赞 Luiz Maleico 11/16/2023
谢谢@furas,但不幸的是,我有一个 PDF,需要将其转换为 CSV。

答: 暂无答案